Linux培训
达内IT学院

400-996-5531

Linux系统中常见的网络故障处理办法


今天小编要跟大家分享的文章是关于Linux系统中常见的网络故障处理办法。Linux服务器在长期运行后,难免出现无响应现象,俗称“死机”。在系统死机后,屏幕一般会输出故障信息,键盘失去响应,这种情况的常见处理办法就是重启系统,不过在重启前,要重点关注下屏幕的输出信息,因为其提示的可能是引起死机的主要原因,对解决问题大有帮助。其实还有另一种方法,就是通过串口直连线连接客户机和服务器,将服务器的出错详细信息发送到客户机上。

Linux系统中常见的网络故障处理办法

引起服务器死机的原因有很多,但主要有两个方面:软件问题和硬件问题。下面总结了造成Linux系统死机的常见原因和解决问题的思路。我们一起来看一看吧!

1)系统硬件问题,主要是由SCSI卡、主板、RAID卡、HBA卡、网卡、硬盘等硬件设备导致的。在这种情况下需要定位硬件故障细节,通过更换硬件来解决问题。

2)外围硬件问题,主要是网络问题导致的。此时就需要从网络设备、网络参数等方面查找和解决问题。

3)软件问题,主要是系统内核bug、应用软件bug、驱动程序bug等。在这种情况下就需要从升级内核、修复程序bug、更新驱动程序等方面来解决问题。

4)系统设置问题:主要是系统参数设置不当导致的,可以通过恢复系统到默认状态,关闭防火墙等方面来解决问题。

据统计,Linux系统下产生的故障有60%来自网络方面,40%来自系统本身,可见熟练解决Linux下的网络故障,对Linux运维工作有着巨大的帮助。

解决Linux网络问题的顺序应该是首先从Linux操作系统自身的底层网络开始,然后逐步向外扩展,由点及面。下面给出解决网络问题的一般流程。

1)网络硬件问题,可以通过检查网线、网卡、集线器、路由器、交换机等是否正常来确认是否由硬件问题造成网络故障。

2)检查网卡能否正常工作,可以从网卡驱动是否正常加载、网卡IP设置是否正确、系统路由是否设置正确等三个方面进行确认。

3)检查局域网主机之间联机是否正常,可以通过ping自身IP、ping局域网其他主机IP、ping网关地址等方式来确认。

4)检查DNS是否设定正确,可以从Linux的DNS客户端配置文件/etc/resolv.conf、本地主机文件/etc/hosts进行确认。

5)服务是否正常打开,可以通过telnet或netstat命令检测服务是否开启。

6)检查访问权限是否打开,可以从本机iptables防火墙、Linux内核强制访问控制策略SELinux两方面入手。

接下来就针对上面给出的解决网络问题的一般思路展开介绍。

1、检查网络硬件问题

检查网络故障,首先要排除的是网络硬件设备是否存在问题,比如网线、网卡、集线器、路由器、交换机等是否正常,这些是网络正常运行的基本条件,如果发现某些设备出现故障,只需更换硬件即可解决问题。

2、检查网卡是否正常工作

(1)检查网卡是否正常加载

通过lsmod、ifconfig命令可以判断网卡是否正常加载,如果通过ifconfig可以显示网络接口(eth0、eth1等)的配置信息,表示系统已经找到网卡驱动程序,检测到网络设备,网卡加载正常。

(2)检查网卡IP设置是否正确

接下来就要检查网卡的软件设定,比如IP是否配置、配置是否正确、确保IP的配置和局域网其他服务器的配置没有冲突。

(3)检查系统路由表信息是否正确

检查系统路由表状态是处理网络问题的一种很重要方法,下面通过一个简单的例子来阐述这个问题。

假如某台服务器有两块网卡,eth0的IP地址为10.10.1.239,网关为10.10.1.254,eth1的IP地址为192.168.200.30,网关为192.168.200.1,eth0通过映射的方式对外提供SSH连接服务,而eth1仅供局域网主机之间共享数据使用。现在的问题是,外界无法通过SSH服务远程登录到此系统,而网卡加载没有问题,网卡IP设置也没问题,接下来看看此系统的路由设置:

[root@webserver ~]# route

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

10.10.1.0 * 255.255.255.0 U 0 0 0 eth0

192.168.200.0 * 255.255.255.0 U 0 0 0 eth1

default 192.168.200.1 0.0.0.0 UG 0 0 0 eth1

到这里,问题已经基本排查出来了。

从route的输出可知,这个服务器的默认路由是192.168.200.1,绑定在eth1网卡上,而192.168.200段的IP仅仅供局域网主机之间共享数据使用,没有对外连接的访问权限,因而,外界无法连接到Linux系统,也是理所当然的事情了。

定位了问题,解决方法很简单,删除192段的默认路由,在eth0网卡上添加10段的默认路由即可,具体操作如下:

[root@webserver ~]# route delete default

[root@webserver ~]#route add default gw 10.10.1.254

此时外界就可以通过SSH服务远程连接到Linux系统了。

3、检查DNS解析文件是否设置正确

在Linux系统中,有两个文件用来指定系统到哪里寻找相关域名解析的库:分别是文件/etc/host.conf和/etc/nsswitch.conf。/etc/host.conf文件用于指定系统如何解析主机名,Linux通过域名解析库来获得主机名对应的IP地址。下面是CentOS系统安装后默认的/etc/host.conf内容:

order hosts,bind

其中,order指定主机名查询顺序,这里表示首先查找/etc/hosts文件对应的解析,如果没有找到对应的解析,接下来就根据/etc/resolve.conf指定的域名服务器进行解析。

/etc/nsswitch.conf文件是由SUN公司开发的,用于管理系统中多个配置文件查询的顺序。由于nsswich.conf提供了更多的资源控制方式,因此它现在已经基本取代了hosts.conf。虽然Linux系统中默认这两个文档都存在,但实际上起作用的是nsswitch.conf文件。

nsswitch.conf文件每行的配置都以一个关键字开头,后跟冒号,紧接着是空白,然后是一系列方法的列表。

例如这段信息:

hosts: files dns

表示系统首先查询/etc/hosts文件,如果没有找到对应的解析,就会去DNS配置文件指定的DNS服务器上进行解析。

清楚了Linux下域名解析的原理和过程,就可以根据这两个文件的设定,确定解析的顺序,从而判断域名解析可能出现的问题。

4、检查服务是否正常打开

在一个应用出现故障时,必须要检查的就是服务本身,比如服务是否开启,配置是否正确等。检查服务是否正确打开分为两步,第一步是查看服务的端口是否打开。

例如,我们不能用root用户SSH登录10.10.80.89这台Linux服务器,首先检查sshd服务的22端口是否打开:

[root@localhost init.d]# telnet 192.168.60.133 22

SSH-2.0-OpenSSH_4.3

这个输出表示10.10.80.89的22端口对外开放,或者说sshd服务处于打开状态。如果没有任何输出,可能是服务没有启动,或者服务端口被屏蔽。

也可以在服务器上通过netstat命令检查22端口是否打开:

[root@localhost xinetd.d]# netstat -ntl

tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN

tcp 0 0 :::80 :::* LISTEN

tcp 0 0 :::22 :::* LISTEN

可以看到,22端口在服务器上是打开的,同时,在服务器上打开的还有3306、80端口。

接着进行第二步检查,既然服务已经打开,就可能是sshd服务配置的问题,检查sshd服务端配置文件/etc/ssh/sshd_config,发现有下面一行信息:

PermitRootLogin no

由此可知是SSH服务端配置文件限制了root用户不能登录系统,如果需要root用户登录系统,只需更改为如下即可:

PermitRootLogin yes

到这里为止,我们通过对端口和服务配置文件的层层检查,最终找到了问题的根源。需要说明的是,这里的重点不是讲述如何让root登录Linux系统,而是要通过这个例子让大家学会处理类似问题的思路和方法。

5、检查访问权限是否打开

(1)检查系统防火墙iptables的状态

当某些服务不能访问时,一定要检查是否被Linux本机防火墙iptables屏蔽了,可以通过“iptables -L”命令查看iptables的配置策略。例如不能访问某台Linux服务器提供的WWW服务,通过检查系统网络、域名解析都正常,并且服务也能正常启动,然后检查服务器的iptables策略配置,信息如下:

[root@localhost ~]# iptables -L -n

Chain INPUT (policy DROP)

target prot opt source destination

Chain FORWARD (policy ACCEPT)

target prot opt source destination

Chain OUTPUT (policy DROP)

target prot opt source destination

从上面的输出可知,这台Linux服务器仅仅设置了预设策略,而致命的是将INPUT链和OUTPUT链都设置为DROP,也就是所有外部数据不能进入服务器,服务器数据也不能出去,这样的设置相当于没有网络。

为了能访问这台服务器提供的WWW服务,增加两条策略即可:

[root@localhost ~]# iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT

[root@localhost ~]# iptables -A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

这样一来,网络上的其他人就能够访问这台Linux服务器的WWW服务了。

(2)检查SELinux是否打开

SELinux是个系统级的安全防护工具,它可以最大限度地保证Linux系统的安全,但是SELinux有时也会给Linux下软件的运行带来一些问题,这些问题大部分是由于对SELinux不了解造成的。为了迅速定位问题,最简单的方法是先关闭SELinux,然后测试软件运行是否正常,这不是个好方法,但是对于判断问题往往是很有用的。SELinux是个很好的安全访问控制软件,可是对于还不能熟练运用SELinux访问控制策略的朋友,还是建议将它暂时关闭,等到对Linux有了更深入的认识后,再开启SELinux不失为一个明智的策略。

6、检查局域网主机之间联机是否正常

通过上面5步的检查,Linux系统自身的问题已经基本排除,接下来需要扩展到Linux主机之外的网络环境,要检查网络之间的连通是否存在故障,可以先通过ping命令测试局域网主机之间的连通性,然后ping网关,检测主机到网关的通信是否正常。

例如下面这台服务器,在这台主机上ping网关,输出信息如下:

[root@localhost ~]# ping 10.10.80.1

PING 10.10.80.1 (10.10.80.1) 56(84) bytes of data.

64 bytes from 10.10.80.1: icmp_seq=1 ttl=64 time=2231ms

64 bytes from 10.10.80.1: icmp_seq=2 ttl=64 time=2292ms

64 bytes from 10.10.80.1: icmp_seq=3 ttl=64 time=2140ms

64 bytes from 10.10.80.1: icmp_seq=4 ttl=64 time=1910ms

很明显,这台主机到网关的延时很长,然后继续测试局域网中的其他主机到这台服务器的ping状态,延时也非常长,此时基本可以判断出这台服务器的网络连接存在问题,最后更换网线后,ping延时恢复到正常状态了,只有0.02ms左右。

至此,我们对排查网络故障的常见方法和思路进行了简单介绍,其实任何网络故障的出现都是有原因的,只要根据上面给出的解决问题思路逐一排查,99%的问题都能得到很好解决。

以上就是小编今天为大家分享的关于Linux系统中常见的网络故障处理办法的文章,希望本篇文章能够对正在从事Linux相关工作的小伙伴们有所帮助,想要了解更多Linux相关知识记得关注达内Linux培训官网。最后祝愿小伙伴们工作顺利!

【免责声明:本文图片及文字信息均由小编转载自网络,旨在分享提供阅读,版权归原作者所有,如有侵权请联系我们进行删除。】

预约申请免费试听课

填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:Linux运维人员应该知道的Linux 性能调优的思路
下一篇:Linux运维入门基础之如何抓包

运维培训班出来好找活吗?

新能源运维工程师是干什么的

云计算就业岗位有哪些?

学物联网工程好就业吗?

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省