这篇文章将为大家详细讲解有关Linux下如何实现网络故障诊断,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
成都创新互联长期为超过千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为思南企业提供专业的网站设计、网站建设,思南网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。网卡故障可以分为硬件故障和软件故障,判断硬件故障最简单的方法是把该网卡插到其它计算机上使用,如果还是老毛病则网卡损坏,否则网卡正常。实际情况下,大部分网卡出现的故障都属于软件故障,软件故障一般分为两类:一类为设置故障;一类为驱动程序故障。
诊断网卡故障
[root@localhost ~]#dmesg | grep eth eth0:registered as PCnet/PCI II 79C970A eth0:link up eth0:no IPv6 routers present [root@localhost ~]#
以上命令列出了引导信息中包含eth字符串的行,如果出现类似与“eth0:link up”的提示,表示Linux已经检测到了网卡,并处于正常工作状态。还有一条lspci命令可以列出系统检测到所有PCI设备,如果使用的网卡是PCI总线的,应该能看到这块网卡的信息。最后可以用ethtool查看以太网的链路连接是否正常。
以上命令列出了引导信息中包含eth字符串的行,如果出现类似与“eth0:link up”的提示,表示Linux已经检测到了网卡,并处于正常工作状态。还有一条lspci命令可以列出系统检测到所有PCI设备,如果使用的网卡是PCI总线的,应该能看到这块网卡的信息。最后可以用ethtool查看以太网的链路连接是否正常。
[root@localhost ~]#ethtool eth0 Settings for eth0: Current message level: 0x00000007 (7) Link detected:yes [root@localhost ~]#
如果看到“Link detected:yes”一行,表明网卡也对方的网络线路连接是正常的。
网卡驱动程序
在RHEL 6中,需要先查看或者设置/etc/modeprobe.cong文件,它包含了有关模块的安装和别名信息。
[root@localhost ~]#more /etc/modeprobe.cong alias scsi_hostadapter mptbase ... alias eth0 pcnet32 [root@localhost ~]#
以上显示中,最后一行“alias eth0 pcnet32”表示为pcnet32定义了一个别名eth0,也就是说,目前使用的以太网卡接口eth0对应的模块是pcnet32,可以使用一下命令当前系统装载的模块中是否有pcnet32模块。
[root@localhost 2.6.18-8.e15]#lsmod | grep pcnet32 pcnet32 35269 0 mii 9409 1 pcnet32 [root@localhost 2.6.18-8.e15]#
可以发现,pcnet32已经安装。因此,如果网卡已经被Linux检测到,但执行“ipconfig -a”命令时却看不到eth0接口,可以按照以上方法把网卡的驱动程序模块找到,再看看这个模块是否已经安装。
诊断网络层问题
网络层问题诊断方法很简单,就是直接ping外网的某一个域名或者IP,能正常连通的,则说明网络层没有问题。
引起ping不同的原因很多,可能会是网络线路、网络设置、路由和ARP等问题。建议先ping一下网关,看是否能通,如果与网关能通,一般就表明网络线路、自己机子的网络设置和ARP都没有问题。可以通过命令“route -n”显示路由表,然后得到网关的地址。如果路由表中没有设置默认网关,则表明路由设置有问题,此时需要设置默认网关。
有时,局域网内存在ARP攻击或者其它原因,使本机ARP缓存中的网关IP的MAC地址是错误的,这样也会造成与网关ping不通。此时,可以使用“arp -d <网关 IP>”命令删除网关的ARP条目,或者通过“arp -a <网关 IP><网关 MAC>”命令设置静态ARP条目。
诊断传输层和应用层问题
诊断传输层和应用层的故障最有效的一种手段是使用抓包工具抓取数据包进行分析。在Linux中,默认提供了tcpdump工具,利用它可以抓取所有访问本机或者从本机出去的数据包,并且可以通过规则只抓取感兴趣的数据包。
与操作系统有关的一种可能的故障原因是防火墙配置不当。在Linux中,默认情况下系统启动时会启用iptables防火墙,而且只放行少数几个端口。所以当在本机上配置了某种服务时,而这种服务需要通过TCP或UDP的某个端口才能访问,则要求防火墙开启相应的端口,否则,其它主机将不能访问本机的这种服务。
关于“Linux下如何实现网络故障诊断”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。