Ict-innovation/LPI/109.3
考生應該能夠排除客戶端主機上的網路問題
關鍵知識領域
- 手動和自動配置網路介面和路由表,包括新增、啟動、停止、重啟、刪除或重新配置網路介面。
- 更改、檢視或配置路由表,並手動糾正錯誤設定的預設路由。
- 除錯與網路配置相關的故障。
該圖總結了網路可能出現故障的各個點,並可作為故障排除的依據。
圖 109.3-1:網路中潛在的故障點
Linux 能找到你的網絡卡嗎?
網路介面卡 (NIC) 必須得到核心的支援。主題 109.2 提供了一些建議,幫助你確定核心是否已檢測到你的網絡卡並載入了合適的驅動程式。
它是否分配了 IP 地址?
使用 ifconfig 命令來確定網絡卡的網路設定
示例
|
# ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:0C:29:76:13:68 inet addr:192.168.81.130 Bcast:192.168.81.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe76:1368/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:6240 errors:0 dropped:0 overruns:0 frame:0 TX packets:8402 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:475800 (464.6 KiB) TX bytes:1392930 (1.3 MiB) Base address:0x2000 Memory:d8920000-d8940000 |
特別是驗證 IP 地址和網路掩碼是否正確。
你能 ping 網路上的其他機器嗎?
ping 命令可用於透過傳送 ICMP 回顯請求資料包並等待回覆來測試機器的可達性。一個簡單的測試是 ping 同一網路上的另一臺機器。在下面的示例中,使用 -c 標記來限制 ping 的次數。預設情況下,ping 將以 1 秒的間隔無限期地繼續進行。
|
# ping -c 4 192.168.81.129 PING 192.168.81.129 (192.168.81.129) 56(84) bytes of data. 64 bytes from 192.168.81.129: icmp_seq=1 ttl=64 time=0.822 ms 64 bytes from 192.168.81.129: icmp_seq=2 ttl=64 time=1.15 ms 64 bytes from 192.168.81.129: icmp_seq=3 ttl=64 time=0.812 ms 64 bytes from 192.168.81.129: icmp_seq=4 ttl=64 time=0.745 ms
4 packets transmitted, 4 received, 0% packet loss, time 3000ms rtt min/avg/max/mdev = 0.745/0.884/1.157/0.160 ms |
DNS 域名解析是否有效?
如果你能透過指定 IP 地址連線到一臺機器,但不能透過指定其名稱連線到它,那麼你應該懷疑域名解析沒有正常工作。首先,驗證 /etc/resolv.conf 中是否指定了正確的 DNS 伺服器。有關 DNS 客戶端配置的更多詳細資訊,請參見主題 109.4。
驗證你是否可以透過 IP 地址 ping DNS 伺服器。
使用 dig 工具手動測試 DNS 查詢
|
# dig www.lpi.org ; <<>> DiG 9.3.4-P1 <<>> www.lpi.org ;; global options: printcmd ;; Got answer ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24846 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;www.lpi.org.INA
www.lpi.org.5INA24.215.7.162
;; SERVER: 192.168.81.2#53(192.168.81.2) ;; WHEN: Thu Sep 16 15:09:10 2010 ;; MSG SIZE rcvd: 45 |
驗證是否收到答案(A 記錄),以及答案是否來自你期望的 DNS 伺服器(在上面的示例中為 192.168.81.2)。
nslookup 命令也可以使用,但提供的資訊略少
|
Server: 192.168.81.2 Address: 192.168.81.2#53
Name:www.lpi.org Address: 24.215.7.162 |
你的伺服器是否在監聽?
如果其他機器無法連線到你的服務,請驗證服務是否正在執行;例如
|
# service sshd status sshd (pid 5851 5849 5220) is running... |
或者,你可以在 ps 的輸出中查詢它們
|
root 5220 1 0 08:41 ? 00:00:00 /usr/sbin/sshd root 11440 11415 0 15:25 pts/2 00:00:00 grep sshd |
驗證服務是否在預期埠上監聽。netstat 命令可用於檢查活動埠;例如
|
$ netstat -ant Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 0 192.168.81.1:60864 192.168.81.130:22 ESTABLISHED tcp 0 0 192.168.1.78:43011 174.129.193.12:443 ESTABLISHED tcp6 0 0 :::22 :::* LISTEN tcp6 0 0 ::1:631 :::* LISTEN |
這裡,前三行輸出代表
- 在內部網路 192.168.122.0 上監聽的本地 DNS 伺服器
- 在埠 22 上監聽的安全 shell 伺服器
- 在埠 631 上監聽的 CUPS 列印伺服器(但僅在環回地址上監聽)
netstat -i 命令將顯示網路介面。它提供與執行 ifconfig 命令(不帶引數)類似的資訊
|
$ netstat -i Kernel Interface table Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg eth0 1500 0 0 0 0 0 0 0 0 0 BMU lo 16436 0 60 0 0 0 60 0 0 0 LRU virbr0 1500 0 0 0 0 0 34 0 0 0 BMRU vmnet1 1500 0 0 0 0 0 34 0 0 0 BMRU vmnet8 1500 0 8858 0 0 0 6676 0 0 0 BMRU wlan0 1500 0 66642 0 0 0 20490 0 0 0 BMRU |
在上面的輸出中,你看到了一個有線網路介面 (eth0)、一個無線介面 (wlan0)、環回介面 (lo) 和三個支援虛擬化的介面 (virbr0、vmnet1 和 vmnet8)
netstat 命令的其他有用選項包括
-r, --route: 顯示路由表(類似於 route -n)
-t, --tcp: 顯示 TCP 端點
-u, --udp: 顯示 UDP 端點
-a, --all: 顯示監聽和連線的端點。預設情況下,僅顯示連線的端點
-n, --numeric: 顯示數字值,而不是嘗試確定主機或埠的符號名稱
你還可以使用 lsof -i 命令檢查活動 TCP 和 UDP 端點
|
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME portmap 4977 rpc 3u IPv4 9744 UDP *:sunrpc portmap 4977 rpc 4u IPv4 9745 TCP *:sunrpc (LISTEN) rpc.statd 5006 root 3u IPv4 9807 UDP *:945 rpc.statd 5006 root 6u IPv4 9794 UDP *:942 rpc.statd 5006 root 7u IPv4 9814 TCP *:948 (LISTEN) hpiod 5200 root 0u IPv4 10272 TCP m1530-rhel.example.com:2208 (LISTEN) python 5205 root 4u IPv4 10302 TCP m1530-rhel.example.com:2207 (LISTEN) sshd 5220 root 3u IPv6 10327 TCP *:ssh (LISTEN) cupsd 5231 root 3u IPv4 10362 TCP m1530-rhel.example.com:ipp (LISTEN) cupsd 5231 root 5u IPv4 10365 UDP *:ipp sendmail 5251 root 4u IPv4 10440 TCP m1530-rhel.example.com:smtp (LISTEN) avahi-dae 5370 avahi 13u IPv4 10721 UDP *:mdns avahi-dae 5370 avahi 14u IPv6 10722 UDP *:mdns avahi-dae 5370 avahi 15u IPv4 10723 UDP *:filenet-rpc avahi-dae 5370 avahi 16u IPv6 10724 UDP *:filenet-nch dhclient 11325 root 5u IPv4 17296 UDP *:bootpc |
如你所見,lsof 輸出更具資訊量——它會告訴你使用該端點的程序的名稱和 PID。
你的防火牆是否阻止了訪問?
如果其他機器無法連線到你的服務,請檢查你的防火牆是否阻止了訪問。進行此檢查的快速方法是短暫停用防火牆並重複測試。但是,不要忘記立即重新啟用它。從命令列,你可以使用以下命令清除防火牆規則
|
|
其他診斷工具
traceroute 命令可用於跟蹤資料包到達特定目的地的路徑。例如
|
traceroute to www.lpi.org (24.215.7.162), 30 hops max, 40 byte packets 1 192.168.81.2 (192.168.81.2) 0.326 ms 0.207 ms 0.212 ms 2 BThomehub.home (192.168.1.254) 81.405 ms 78.430 ms 77.940 ms 3 217.47.111.122 (217.47.111.122) 20.152 ms 21.611 ms 23.679 ms 4 217.47.111.161 (217.47.111.161) 23.903 ms 26.248 ms 27.741 ms 5 213.1.69.38 (213.1.69.38) 29.059 ms 31.459 ms 33.284 ms 6 213.120.180.197 (213.120.180.197) 33.977 ms 36.439 ms 38.711 ms 7 213.120.179.26 (213.120.179.26) 41.249 ms 25.029 ms 25.639 ms 8 213.120.179.178 (213.120.179.178) 25.474 ms 26.261 ms 25.895 ms ... lines deleted ... 21 clark.lpi.org (24.215.7.162) 149.154 ms 123.495 ms 123.828 ms |
上面的輸出中顯示的時間是探測到每個閘道器的往返時間。(每個閘道器都探測了三次。)
tracepath 工具提供類似的資訊,但格式略有不同
|
1: 192.168.81.130 (192.168.81.130) 0.161ms pmtu 1500 1: 192.168.81.2 (192.168.81.2) 0.379ms 2: BThomehub.home (192.168.1.254) asymm 1 98.572ms 3: 217.47.111.122 (217.47.111.122) asymm 1 54.991ms 4: 217.47.111.161 (217.47.111.161) asymm 1 49.023ms 5: 213.1.69.38 (213.1.69.38) asymm 1 48.824ms 6: 213.120.180.197 (213.120.180.197) asymm 1 48.795ms 7: 213.120.179.26 (213.120.179.26) asymm 1 48.786ms 8: 213.120.179.178 (213.120.179.178) asymm 1 48.361ms ... lines deleted ... 21: clark.lpi.org (24.215.7.162) asymm 1 278.213ms 達到 |
通常,只有這條路由中的前幾個跳躍點位於您自己的網路中。除此之外的任何內容都可能超出您的管理控制範圍。
以下是使用的檔案、術語和實用程式的部分列表:* ifconfig
- ifup
- ifdown
- route
- host
- hostname
- dig
- netstat
- ping
- traceroute
