跳转到内容

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


上一章 | 下一章

华夏公益教科书