日期:2014-05-16  浏览次数:20726 次

linux网络相关问题的基本排查方法

在做linux网络应用中,可能经常会遇到download或upload等失败的时候。
那遇到这类问题时,该如何去入手查找问题点呢?
下面是结合自己学习过程中总结的一些分析问题的方法,将其记录下来,
以备将来需要时可以翻出来看一看。

1. 如果网络不通,先用ifconfig检查系统是否正确识别到网络接口(即网卡),
sh-# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:00:00:11:22:33
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interrupt:40 Base address:0x2000
可以看到,系统已经识别到了eth0。

2. 如果能够识别到网卡,那还要从ifconfig的结果里面查看是否有分配IP address,
sh-# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:00:00:11:22:33
          inet addr:192.168.102.86  Bcast:192.168.102.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:199 errors:0 dropped:6 overruns:0 frame:0
          TX packets:146 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:69472 (67.8 Kb)  TX bytes:17706 (17.2 Kb)
          Interrupt:40 Base address:0x2000
如果没有ip address,就要检查一下你的主机是否连网了;
如果有分配到ip address,接下来使用ping命令检查是否能ping通其它的主机。

3. ping www.google.com或者ping 192.168.0.1测试网络的连通性。
ping命令通过向destination host发送ICMP ECHO_REQUEST packet来测试
两台host之间的连通性。由于ping是网络层协议,所以ping通只能证明网络层及其
以下层没有问题,而不能证明其上层如传输层(TCP/UDP)或应用层(FTP/HTTP等)
是否有问题。另外一点ping通并不能代表可以连接到internet,因为一个局域网
内部的两台host之间也能相互ping通;当然ping
www.google.com能ping通的话,
可以说明你的host可以连接到internet。
sh-# ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_req=1 ttl=255 time=3.86 ms
64 bytes from 192.168.0.1: icmp_req=2 ttl=255 time=17.0 ms
64 bytes from 192.168.0.1: icmp_req=3 ttl=255 time=1.90 ms
64 bytes from 192.168.0.1: icmp_req=4 ttl=255 time=1.32 ms
^C
--- 192.168.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3027ms
rtt min/avg/max/mdev = 1.320/6.029/17.031/6.421 ms
sh-#
sh-# ping
www.google.com
PING www.google.com (74.125.239.147) 56(84) bytes of data.
64 bytes from nuq05s02-in-f19.1e100.net (74.125.239.147): icmp_req=1 ttl=53 time=258 ms
64 bytes from nuq05s02-in-f19.1e100.net (74.125.239.147): icmp_req=2 ttl=53 time=244 ms
64 bytes from nuq05s02-in-f19.1e100.net (74.125.239.147): icmp_req=3 ttl=53 time=242 ms
^C
---
www.google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2016ms
rtt min/avg/max/mdev = 242.508/248.524/258.558/7.153 ms

3. 所以如果你ping google有成功的话,那接下来可能就需要抓包工具来协助分析问题了。
工具之一tcpdump,tcpdump简单讲就是用来dum