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