跳轉到內容

Ict-innovation/LPI/109.3

來自華夏公益教科書

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


--- 192.168.81.129 ping statistics ---

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


;; QUESTION SECTION

;www.lpi.org.INA


;; ANSWER SECTION

www.lpi.org.5INA24.215.7.162


;; Query time: 32 msec

;; 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 命令也可以使用,但提供的資訊略少


# nslookup www.lpi.org

Server: 192.168.81.2

Address: 192.168.81.2#53


Non-authoritative answer

Name:www.lpi.org

Address: 24.215.7.162

你的伺服器是否在監聽?

如果其他機器無法連線到你的服務,請驗證服務是否正在執行;例如

# service sshd status

sshd (pid 5851 5849 5220) is running...

或者,你可以在 ps 的輸出中查詢它們


# ps -ef | grep sshd

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

這裡,前三行輸出代表

  1. 在內部網路 192.168.122.0 上監聽的本地 DNS 伺服器
  2. 在埠 22 上監聽的安全 shell 伺服器
  3. 在埠 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 端點


# lsof -i

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。

你的防火牆是否阻止了訪問?

如果其他機器無法連線到你的服務,請檢查你的防火牆是否阻止了訪問。進行此檢查的快速方法是短暫停用防火牆並重複測試。但是,不要忘記立即重新啟用它。從命令列,你可以使用以下命令清除防火牆規則


# iptables -F

其他診斷工具

traceroute 命令可用於跟蹤資料包到達特定目的地的路徑。例如


# traceroute www.lpi.org

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 工具提供類似的資訊,但格式略有不同


# tracepath www.lpi.org

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


上一章 | 下一章

華夏公益教科書