浅谈Linux系统下常见的故障与处理方法(6)

三、其它故障的一般解决方案

如果是Linux的引导程序出现问题,那么也可以通过光盘引导的方式进入Linux修复模式,然后修改对应的引导程序或者重新安装引导程序。

如果Linux内核崩溃或者丢失,同样可以先进入Linux rescue下,然后加载root分区,最后重新编译内核。

如果出现了最坏的情况,文件系统破坏严重,同时内核也崩溃,那么此时重新安装系统反而比较容易,在这种情况下可以先将Linux上有用的数据和文件备份转移到其它设备,然后对整个文件系统进行全新安装。

在这里我们不可能对每个出现的问题,都给出详细的解决方案,问题都是千差万别的,每个问题的处理都不尽相同,本书要传授给大家的是当Linux系统出现问题后,解决问题的一般思路和通用策略,熟练掌握了这些技巧,处理任何Linux问题都能游刃有余。

四、 Linux下常见网络故障处理

Linux网络服务功能非常强大,在Linux上可以部署Web Server、DNS Server、Mail Server、Db server、Ftp server等等,但是也由此产生了很多网络问题,据统计,在Linux系统下产生的故障,有60%来自网络方面,40%来自系统本身,可见熟练解决Linux下故障,对于熟练掌握Linux有着巨大的帮助。

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

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

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

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

? 服务是否正常打开,可以通过telnet或者netstat命令的方式检测服务是否开启。

? 访问权限是否打开,可以从本机iptables防火墙、Linux内核强制访问控制策略seLinux两方面入手,进行检查确认。

? 局域网主机之间联机是否正常; 可以通过ping自身IP,ping局域网其它主机IP,ping网关地址来确认局域网是否连接正常。

接下来,我们就针对上面给出的解决网络问题的一般思路,详细展开讲述。

1. 检查网络硬件传输问题

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

2.检查网卡是否能正常工作

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

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

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

接下来就要检查网卡的软件设定,比如IP是否配置,配置是否正确,确保IP的配置和局域网其它计算机配置没有冲突。

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

最后就是要检查系统的路由表设置是否正确,如果一个Linux系统有两块网卡,同时两块网卡设置的IP不在一个网段,要特别注意系统路由表的设置。

例如下面这个系统的网络接口信息:

[root@webserver ~]#  ifconfig

eth0      Link encap:Ethernet  HWaddr 00:12:3F:FF:65:24

inet addr:10.10.1.239  Bcast:10.10.1.255  Mask:255.255.255.0

inet6 addr: fe80::212:3fff:feff:6524/64 Scope:Link

UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

RX packets:20632289 errors:0 dropped:0 overruns:0 frame:0

TX packets:20223702 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:793608426 (756.8 MiB)  TX bytes:2567481473 (2.3 GiB)

Interrupt:201

eth1      Link encap:Ethernet  HWaddr 00:12:3F:FF:65:25

inet addr:192.168.200.30  Bcast:192.168.200.255  Mask:255.255.255.0

inet6 addr: fe80::212:3fff:feff:6525/64 Scope:Link

UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

RX packets:15496910 errors:0 dropped:0 overruns:0 frame:0

TX packets:8028739 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:1048038084 (999.4 MiB)  TX bytes:3195989266 (2.9 GiB)

Interrupt:209

lo        Link encap:Local Loopback

inet addr:127.0.0.1  Mask:255.0.0.0

inet6 addr: ::1/128 Scope:Host

UP LOOPBACK RUNNING  MTU:16436  Metric:1

RX packets:508961 errors:0 dropped:0 overruns:0 frame:0

TX packets:508961 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:574086961 (547.4 MiB)  TX bytes:574086961 (547.4 MiB)

从上面输出可知,本系统有两块网卡,分别配置不同网段的IP地址,假定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的输出可知,Linux的缺省路由是192.168.200.1,而192.168.200段的IP仅仅供局域网主机之间共享数据使用,没有连接出去的访问权限,因而,外界无法连接到Linux系统,也是理所当然的事情了。

定位了问题,解决方法很简单,删除192段的缺省路由,然后增加10段的缺省路由即可:

[root@webserver ~]# route delete default

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

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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/24076.html