一次误操作引起的linux系统网络故障

1、故障描述

接到用户报障,生产某系统无法访问。同事接到报障后立即排查,经测试,系统确实无法访问,并且无法ping通服务器。

2、故障处理

由于客户端无法ping通服务器,需要进入机房查看。经查看,服务器硬件无报警,系统无重启。登录系统使用ifconfig命令查看,IP丢失(eth0不存在),紧接打开网卡配置目录/etc/sysconfig/network-scripts,发现网卡文件ifcfg-eth0丢失,只存在之前备份的ifcfg-eth0.bak文件和ifcfg-peth0文件。根据先抢通业务后处理故障原则,通过备份的文件复制一份进行修复,重启network服务,故障解决。

3、故障分析

3.1经了解,故障发生时,有一同事正在登录系统查询安全基线配置,但同事坚称并未进行rm或者mv网卡文件操作。通过history命令得知,该同事确实未执行rm或者mv操作,只执行了chkconfig --list命令,但却不小心把原本需要复制的内容误操作的当作命令去执行了,历史记录如下:

 883  chkconfig --list
  884  NetworkManager  0:off   1:off   2:off   3:off   4:off   5:off   6:off
  885  PowerIscsi      0:off   1:off   2:off   3:on    4:off   5:on    6:off
  886  PowerMig        0:off   1:off   2:off   3:on    4:off   5:on    6:off
  887  PowerMigRecoverAll      0:off   1:off   2:off   3:on    4:off   5:on    6:off
  888  acpid           0:off   1:off   2:on    3:on    4:on    5:on    6:off
  889  anacron         0:off   1:off   2:on    3:on    4:on    5:on    6:off
  890  atd             0:off   1:off   2:off   3:on    4:on    5:on    6:off
  891  auditd          0:off   1:off   2:on    3:on    4:on    5:on    6:off
  892  autofs          0:off   1:off   2:off   3:on    4:on    5:on    6:off
  893  avahi-daemon    0:off   1:off   2:off   3:on    4:on    5:on    6:off
  894  avahi-dnsconfd  0:off   1:off   2:off   3:off   4:off   5:off   6:off
  895  bluetooth       0:off   1:off   2:on    3:on    4:on    5:on    6:off
  896  capi            0:off   1:off   2:off   3:off   4:off   5:off   6:off
  897  conman          0:off   1:off   2:off   3:off   4:off   5:off   6:off
  898  coremail        0:off   1:off   2:on    3:on    4:on    5:on    6:off
  899  cpuspeed        0:off   1:on    2:on    3:on    4:on    5:on    6:off
  900  crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off
  901  cups            0:off   1:off   2:on    3:on    4:on    5:on    6:off
  902  dnsmasq         0:off   1:off   2:off   3:off   4:off   5:off   6:off
  903  dund            0:off   1:off   2:off   3:off   4:off   5:off   6:off
  904  ebtables        0:off   1:off   2:off   3:off   4:off   5:off   6:off
  905  firstboot       0:off   1:off   2:off   3:on    4:off   5:on    6:off
  906  gpm             0:off   1:off   2:on    3:on    4:on    5:on    6:off
  907  haldaemon       0:off   1:off   2:off   3:on    4:on    5:on    6:off
  908  hidd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
  909  hplip           0:off   1:off   2:on    3:on    4:on    5:on    6:off
  910  httpd           0:off   1:off   2:off   3:off   4:off   5:off   6:off
  911  ip6tables       0:off   1:off   2:on    3:on    4:on    5:on    6:off
  912  ipmi            0:off   1:off   2:off   3:off   4:off   5:off   6:off
  913  iptables        0:off   1:off   2:off   3:off   4:off   5:off   6:off
  914  irda            0:off   1:off   2:off   3:off   4:off   5:off   6:off
  915  irqbalance      0:off   1:off   2:on    3:on    4:on    5:on    6:off
  916  iscsi           0:off   1:off   2:off   3:on    4:on    5:on    6:off
  917  iscsid          0:off   1:off   2:off   3:on    4:on    5:on    6:off
  918  isdn            0:off   1:off   2:on    3:on    4:on    5:on    6:off
  919  kdump           0:off   1:off   2:off   3:off   4:off   5:off   6:off
  920  kudzu           0:off   1:off   2:off   3:on    4:on    5:on    6:off
  921  libvirt-guests  0:off   1:off   2:off   3:on    4:on    5:on    6:off
  922  libvirtd        0:off   1:off   2:off   3:on    4:on    5:on    6:off
  923  lvm2-monitor    0:off   1:on    2:on    3:on    4:on    5:on    6:off
  924  mcstrans        0:off   1:off   2:on    3:on    4:on    5:on    6:off
  925  mdmonitor       0:off   1:off   2:on    3:on    4:on    5:on    6:off
  926  mdmpd           0:off   1:off   2:off   3:off   4:off   5:off   6:off
  927  messagebus      0:off   1:off   2:off   3:on    4:on    5:on    6:off
  928  microcode_ctl   0:off   1:off   2:on    3:on    4:on    5:on    6:off
  929  multipathd      0:off   1:off   2:off   3:off   4:off   5:off   6:off
  930  named           0:off   1:off   2:off   3:off   4:off   5:off   6:off
  931  netbackup       0:off   1:off   2:on    3:on    4:off   5:on    6:off
  932  netconsole      0:off   1:off   2:off   3:off   4:off   5:off   6:off
  933  netfs           0:off   1:off   2:off   3:on    4:on    5:on    6:off
  934  netplugd        0:off   1:off   2:off   3:off   4:off   5:off   6:off
  935  network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
  936  nfs             0:off   1:off   2:off   3:off   4:off   5:off   6:off
  937  nfslock         0:off   1:off   2:off   3:on    4:on    5:on    6:off
  938  nscd            0:off   1:off   2:off   3:off   4:off   5:off   6:off
  939  ntpd            0:off   1:off   2:off   3:off   4:off   5:off   6:off
  940  pand            0:off   1:off   2:off   3:off   4:off   5:off   6:off
  941  pcscd           0:off   1:off   2:on    3:on    4:on    5:on    6:off
  942  portmap         0:off   1:off   2:off   3:on    4:on    5:on    6:off
  943  psacct          0:off   1:off   2:off   3:off   4:off   5:off   6:off
  944  rawdevices      0:off   1:off   2:off   3:on    4:on    5:on    6:off
  945  rdisc           0:off   1:off   2:off   3:off   4:off   5:off   6:off
  946  readahead_early 0:off   1:off   2:on    3:on    4:on    5:on    6:off
  947  readahead_later 0:off   1:off   2:off   3:off   4:off   5:on    6:off
  948  restorecond     0:off   1:off   2:on    3:on    4:on    5:on    6:off
  949  rhnsd           0:off   1:off   2:off   3:on    4:on    5:on    6:off
  950  rpcgssd         0:off   1:off   2:off   3:on    4:on    5:on    6:off
  951  rpcidmapd       0:off   1:off   2:off   3:on    4:on    5:on    6:off
  952  rpcsvcgssd      0:off   1:off   2:off   3:off   4:off   5:off   6:off
  953  saslauthd       0:off   1:off   2:off   3:off   4:off   5:off   6:off
  954  sendmail        0:off   1:off   2:off   3:off   4:off   5:off   6:off

以上操作记录表面看起来,并无异常。

3.2通过查看系统日志messages,发现有“removed ifcfg-eth0”关键字,发生的时间与同事误操作的时间吻合,如下:

Mar 21 09:46:50 localhost nm-system-settings:    ifcfg-rh: removed /etc/sysconfig/network-scripts/ifcfg-eth0.
Mar 21 09:46:50 localhost nm-system-settings:    ifcfg-rh: parsing /etc/sysconfig/network-scripts/ifcfg-peth0 ... 
Mar 21 09:46:50 localhost nm-system-settings:    ifcfg-rh:     read connection ‘System peth0‘
Mar 21 09:46:50 localhost nm-system-settings:    ifcfg-rh: updating /etc/sysconfig/network-scripts/ifcfg-peth0

同事既然没有误操作,那为什么会有remove网卡文件的日志呢?难道被黑了?还是有其它原因?

3.3查看日志secure和命令last,并未发现异常登录IP,先排除被黑可能性,着重排查同事误操作的命令中,哪一条才是引起网卡文件丢失的。

3.4再一次确认3.1的history操作记录,表面看上去确实没有什么异常,而且都是chkconfig --list的输出内容,百思不得其解。

3.5查问题,看日志。只能通过仔细的分析message日志查找一点蛛丝马迹。从3.2的日志来看,当看到

Mar 21 09:46:50 localhost nm-system-settings:    ifcfg-rh: parsing /etc/sysconfig/network-scripts/ifcfg-peth0 ...

时,发现“ifcfg-peth0”这个网卡文件很可疑,该文件应该跟XEN虚拟化有关,但这个系统并未使用到XEN虚拟化。

3.6登录系统确认,系统虽未使用虚拟化,但前期安装时安装了XEN虚拟化,并且加载了kernel-xen内核和启动了xend服务:

1)[[email protected]~]# uname -r
2.6.18-238.el5xen
2)# /etc/init.d/xend status
xend is running

3.7查看Ifcfg-peth0文件的创建修改时间,与同事误操作的时间吻合,再一次怀疑这个文件跟这次故障有一定的关系:

# find . -type f -mtime 2|xargs ls -l 
-rw-r--r-- 1 root root   303 Mar 21 09:46 ./etc/modprobe.conf
-rw-r--r-- 1 root root 23116 Mar 21 09:46 ./etc/sysconfig/hwconf
-rw-r--r-- 1 root root   122 Mar 21 09:46 ./etc/sysconfig/network-scripts/ifcfg-peth0

3.8为方便排查和重现故障,根据系统的环境,在测试环境搭建:安装了XEN虚拟化RHEL5.6。

3.8.1跟生产系统一样,同样的备份一份Ifcfg-eth0.bak文件;

3.8.2根据同事误操作的历史记录,逐条进行执行测试,当测试到“kudzu           0:off   1:off   2:off   3:on    4:on    5:on    6:off”,问题重现:ifcfg-eth0文件丢失,同时生成了ifcfg-peth0文件,并且断网。与生产系统故障的情况一致。如图:

3.9搭建另一个测试环境:并未安装XEN虚拟化的RHEL5.6。同样的执行3.8.2章节的命令,但问题未重现。如图:

4、故障原因

通过问题重现,得出结论:安装了XEN虚拟化环境的系统,同事误操作的时候执行了其中一条“kudzu           0:off   1:off   2:off   3:on    4:on    5:on    6:off”命令,两者条件满足情况下,从而导致删除了ifcfg-eth0文件,继而发生断网。

5、相关知识

根据网上信息了解,kudzu命令为什么会导致删除网卡配置文件,目前所了解的,应该是在特定情况下(安装了XEN虚拟化)触发的BUG或者本身的机制导致。

附:

1、kudzu介绍:http://blog.csdn.net/huyangg/article/details/7189743

2、kudzu相关BUG:https://bugzilla.redhat.com/show_bug.cgi?id=206910、https://bugzilla.redhat.com/show_bug.cgi?id=229579、http://linux.bigresource.com/Red-Hat-Prevent-kudzu-from-changing-ifcfg-ethX-file--wi29JYmpf.html

时间: 2024-07-30 20:25:10

一次误操作引起的linux系统网络故障的相关文章

[Linux][VMWare] 学习笔记之安装Linux系统-网络配置

最近开始折腾Linux,在本机装了个VMWare和Centos,装完之后虚拟机里面的OS可以上网,但是使用SecureCRT连接不上虚拟机,开始折腾这个网络. vmware安装好以后,会自动添加两张网卡(vmnet1和vmnet8),中间网卡),整个机器的结构就可以抽象成:虚拟机系统(虚拟机网卡vmnet0)--(vmnet1 vmnet8),中间网卡)--实际系统网卡 vmware的网卡设置的几种方式: 1. Bridged(桥接)方式     用这种方式,虚拟系统的IP可设置成与本机系统在同

linux系统-网络设置

linux系统-网络设置 一 vmvare网络 1 桥接模式:适合路由器可以发送多个ip,使虚拟机直接连接现实的网络 2 主机模式:虚拟机直接和主机连接,主机没有连接外部的网络 3 NAT网络地址转换模式:网络中只有一个ip,使用NAT 二 linux虚拟机 1 ifconfig:查看网卡的工作情况 2 eth0:系统的第一块网卡 3 eth1:系统的第二块网卡 4 lo:虚拟的回环网卡 5 virbro:虚拟的网桥 6 开启etho的配置文件路径:vi /etc/sysconfig/netwo

linux系统网络服务命令(一)

一.linux系统联网设置 我们在装完linux系统后,首先就是要先配置网络服务,毕竟如果计算机不联网那其就是个计算器.配置网络功能时,刚开始比较简单快捷的是用dhclient命令(使用动态主机配置协议动态的配置网络接口的网络参数),下面介绍使用配置文件来定义静态网络地址并链接互联网. 1.配置网卡文件: [[email protected] ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0  DEVICE=eth0 //此配置关联至的设备.设备

linux系统网络命令(五)

一.pidof命令 1.简介 pidof命令用于找出正在运行的程序的进程PID(find the process ID of a running program.),程序可以是一个二进制执行程序,也可以是一个shell脚本. 2.常用选项 -s:仅返回一个进程号: -c:仅显示具有相同"root"目录的进程: -x:显示由脚本开启的进程: -o:指定不显示的进程ID. 3.使用举例 3.1.找出nginx程序的进程PID,如果有多个就会全部列出,nginx不能是shell脚本名称. [

linux---21-22 linux系统网络知识讲解

从linux系统的角度看网络 1,网线有两个标准:568A.568B(用的较多) 线序:橙白橙.绿白蓝.蓝白绿.棕白棕 网卡和交换机之间的接法  or  交换机和交换机之间的接法 2,网卡 3,交换机DLINK\H3C\CISCO. 路由器CISCO(防火墙juniper)

Linux系统——网络的基础配置和排错

在linux系统中,网络的配置有三种,一种是直接在终端上用命令行实现,另一种方式是修改配置文件实现,还有一种方式是setup文本模式界面设置. 不同之处在于,修改配置文件之后如果不更改它就永久生效(必须重启服务,这个方式同setup文本模式设置),但用命令是及时生效但是重启后就失效的. 一.修改配置文件 在Linux系统中,无论是接入互联网还是局域网首先必须得要对网卡进行配置,网卡的配置文件默认路径在/etc/sysconfig/network-scripts这个目录下,默认有两块网卡,一块物理

linux系统网络命令(七)

一.sar命令 1.简介 sar命令是Linux下系统运行状态统计工具,它将指定的操作系统状态计数器显示到标准输出设备.sar工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态.它的特点是可以连续对系统取样,获得大量的取样数据.取样数据和分析的结果都可以存入文件,使用它时消耗的系统资源很小. 2.常用选项 -A  显示所有历史数据,通过读取/var/log/sar 目录下的所有文件,并把它们分门别类的显示出来: -b  通过设备的I/O中断读取设置的吞吐率: -B 报

linux系统网络命令(六)

一.vmstat命令 1.简介 vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存.进程.CPU活动进行监控.他是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析.vmstat 工具提供了一种低开销的系统性能观察方式.因为 vmstat 本身就是低开销工具,在非常高负荷的服务器上,你需要查看并监控系统的健康情况,在控制窗口还是能够使用vmstat 输出结果. 2.命令格式 vmstat [-a] [-n] [-S uni

linux系统网络命令(二)

一.linux 下iptoute2网络配置工具 前面我们已经学习使用了ifconfig.route两个关于网络配置的命令,这两个命令和netstat.arp等命令是属于net-tools的rpm的安装包,现在已经有了一个新的工具包用来取代上面的命令,安装包为iproute,包内包含了新的命令ip.ss,这俩命令很强大通过下图就可以看出. 二.linux 下ip命令的使用 1.ip命令简介 ip是iproute软件包里面的一个强大的网络配置工具,它能够替代一些传统的网络管理工具,例如ifconfi