首页 > Linux笔记 阅读数:6

Linux网络故障的解决方法

当 Linux 操作系统产生网络故障时,应该从系统的硬件及软件、局部和整体等多方面进行检查,下面将从几个方面对于 Linux 操作系统产生网络故障时的解决方案进行详述。

1、检查网线、网卡

到机房里检查网线两端是否都亮灯,普通服务器是绿灯常亮为正常,交换机绿灯闪烁表示正在传输数据。

可以通过命令 ethtool ethX 来查看某一网卡的链路是否物理连通。其中,speed 是当前网卡的速度,这是一个千兆网卡;Duplex 显示了当前网络支持全双工;link detected 表示当前网卡和网络的物理连接状态,yes 就是正常。

通常网速和全/半双工状态是主机和网络协议商自动协商的。

2、确定网线是通的之后,再看物理网卡

ifconfig 可以看到已成功加载的网卡,用 ethtool -i ethX 可以看到网卡驱动,lspci 可以看到所有连接到 pci 总线的设备,lsmod 显示所有已加载的模块,加载成功的模块也会在 /proc/modules 中显示。

一般情况下,成功加载网卡后,用 ifconfig 就可以看了。如果找不到网卡,那么应该查看物理网卡有没有连接到 pci 总线上,如果 lspci 检测不到的话就可能是网卡坏了。

还有一种情况是没有加载网卡模块,先去 lspci 里找到对应厂商和型号:Ethernet Controller,再用 modprobe 尝试加载正确的模块,比如 modprobe3c509。如果出现错误,说明该模块不存在。这时候应该找到正确的模块并且重新编译。

3、网卡物理层没有问题之后,再看网卡配置

用 ifconfig 就可以查看 IP、掩码等信息,永久修改网卡信息在 /etc/sysconfig/network-scripts/ifcfg-ethX(有些 Linux 发行版不一定是这个文件名,但路径差不多,它上一层中的 network 文件是修改 hostname 的)文件中,这个文件也是放 DNS 的正确地方,修改之后重启 network。

4、检查自身路由表是否正确

用 route-n 查看内核路由表,通过 route 命令查看内核路由,检验具体的网卡是否连接到目标网路的路由之后就可以尝试 PING 网关,排查与网关之间的连接。如果无法 ping 通网关,可能是网关限制了 ICMP 数据包或者交换机设置的问题。

一个很常见的问题:两块网卡分别提供内网和外网服务,如果默认网关是内网网卡,那么外网服务是访问不到的。这时需要删除再添加默认网关,用 route delete/ add default gw 命令。

5、查看DNS

在 /etc/resolve.conf 文件中可看到指定域名服务器,但是在这里是不能修改这个文件的,修改之后会自动产生 networkManager 文件,因此要去 etc/sysconfig/network-scripts/ifcfg-ethX 中修改。

6、检查路由和主机之间是否通畅

当连接不到某一台远端主机时,应该如何追踪路由。traceroute 命令是用来跟踪从发出数据包的主机到目标主机之间所经过的网关的工具。

traceroute 命令常用的参数选项如下:
记录按序列号从 1 开始,每个纪录就是一跳,每一跳表示一个网关,我们看到每行有三个时间,单位是 ms,其实就是 -q 的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间。星号“*”表示防火墙封掉了 ICMP 的返回信息。

7、检查远端主机的服务端口是否打开

用 telnet 和 nmap 来检查,没有这两个工具的话自行安装 yum。比如我们要看下百度的 80 端口是否打开,状态 STATE 是 open 表示开启,如果是 filtered 表示被防火墙过滤了。

举例其中第 1 列是套接字通信协议,第 2 列和第 3 列显示的是接收和发送队列,第 4 列是主机监听的本地地址,反映了该套接字监听的网络;第 6 列显示当前套接字的状态,最后一列显示打开端口的进程。

优秀文章