一次误操作引起的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)[root@~]# 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文件,并且断网。与生产系统故障的情况一致。如图:

wKiom1b2XxPhlwvLAAPcUax-Xlg768.jpg

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

wKiom1b2X3izl93YAAMYcWqOFTw241.jpg

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


本文出自 “[reed@卢伟开~]#rm -rf /” 博客,转载请与作者联系!

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
基于Web方式的数据包捕获实践 抓包是运维的必备技能,很多网络故障需要靠抓包来解决,如常见的ARP欺骗和广播风暴。另外还有一些网线或光纤接触不好的故障,不抓包也很难分析出来,例如两个公司之间互联,网线测试都没问题,但始终不通。经过抓包分析表明,发现其他单位的ping请求都伴随着ARP查询,而不走路由,这时怀疑有可能掩码设置错误的问题,经仔细排查,确实是路由器上的掩码出现失误。抓包工具有不少但选择一款适合你的工具非常重要。 本文主要为大家介绍OSSIM环境中,故障排除利器—基于Web的数据包分析工具,它是W
实现目的: 因为mesos中实际的工作节点是slave,框架marathon启动的任务(容器)都是在随机的slave上执行,所以在每台slave上启动Registrator,用来发现本机上的容器,它会把当前宿主机上的容器自动注册到consul.但是consul找一台salve启动就行,它会把自己选为leader,其他slave上启动Registrator的时候指定此leader就行 环境: 192.168.0.149 Mesos-master、Zookeeper 192.168.0.161 Mesos-m

centos6.5上面HTOP实战!!! - 2016-04-04 15:04:58

项目背景: 我们公司需要一个交互式的进程查看软件,比top命令更好用的软件,使我们的服务器进程监控更灵活方便!!!! 实验环境: vmware workstation 11 centos6.5的系统下 服务器:ip:192.168.0.27 SecureCRT (ssh远程连接软件) 软件介绍: Htop:进程实时监控,交互式的进程浏览器。 htop命令优点: 1) 快速查看关键性能统计数据,如CPU(多核布局)、内存/交换使用; 2) 可以横向或纵向滚动浏览进程列表,以查看所有的进程和完整的命令行; 3
这次我给大家来介绍一下,企业网络中的广域网出口,说起企业(单位)的组网建设,设备调试之类的工作,我想只要是有工作经验的网工,或者系统管理员都不会陌生,核心交换机,划分 VLAN , 起三层路由功能,防火墙(路由器)起 NAT 之类的。都是驾轻就熟了。那么在这篇文章当中暂时先不提设备是如何配置的,先谈一下这个企业网络当中的出口 我把企业网络中的广域网出口分成 2 种。 第一种:光纤互联网业务 . 即从电信或铁通这样的 ISP 运营商申请光纤接入,开通的是互联网,也就是俗称的“外网”业务。这种的广域网出口,只
一、功能说明 Marionette Collective(MCollective)是一个与Puppet关系密切的服务运行框架。 MC依赖Ruby1.9.3或1.8.7,通过Stomp协议通信,因此依赖rubygem 1.2.2+ 在puppet客户端上安装Mcollective服务端 在puppet服务端上安装Mcollective客户端 在puppet服务端或单独安装MQ中间件 参考官方文档: https://docs.puppetlabs.com/mcollective/deploy/standard
MySQL存储日志并使用Loganalyzer作为前端展示 为什么要使用日志 在生产环境中我们可能需要一个较为完整的日志系统来查看运行中主机服务的状态和所作出的操作,我们可以在较大型的网络架构中使用ELK来实现对日志的收集、检索、前端显示,但是中小型架构中使用 rsyslog 足以对所有服务器的日志进行收集和检索来达到实时分析数据流量的目的。 本文目标 使用 rsyslog 将两台主机的日志信息存储到 MySQL 数据库中,并且编译安装 Loganalyzer 对 MySQL 中的日志信息使用 httpd
作者:安华金和 思成 数据库攻击的目的最终是为要获取数据库中有价值的数据,而获取数据最有效的方法就是直接获取DBA权限。本文通过Oracle数据库中的一个经典漏洞,演示从普通用户提权到DBA权限的过程,DBSec Labs数据库安全实验室给出针对性的防护建议。 Oracle漏洞分析 CTXSYS.driload.validate_stmt是一个Oracle的经典漏洞。出现在Oracle9i中,从10g开始被修复。这个漏洞是直接注入形漏洞的代表。漏洞发生在CTXSYS创建的driload包中的存储过程val
网友问答之:AD、DNS转发器、WINS不能自动启动 1、企业网络中,将DNS与Active Directory集成在一起即可,一般建议配置2台Active Directory服务器。 络腮胡2014/11/222:10:53 王老师你好,请问对于一主一备的域控制器可以两台都虚拟化吗?还是一台虚拟一台物理?或者域控制器就不应该虚拟化?如果可以虚拟化,那么对于域控制器的备份可以使用VDPA吗?会不会造成USN回滚? 王春海2014/11/36:32:26 1、域控制器可以放虚拟机中,现在一般都是这样做 2、
回忆 像一直开着的机器 趁我不注意 慢慢地清晰反覆播映 -- 《三万英尺》迪克牛仔 当航班在三万英尺的高空爬升下坠,穿越乱流,沉入海底,无人知道它在云中究竟经历了什么波折苦难,甚至无人知道它最终沉睡于何处,随着时间的变迁,也许被人渐渐遗忘。要理清一切,重拾记忆,唯一的希望便是找到那台发着微弱电波,记忆着一切的黑匣子。 服务器网站的日志记录便是如此,它就是网站服务器的黑匣子,日常运维中我们遭遇故障往往非常依赖分析统计的日志来找到问题。像是悬疑电影中的主角,每几分钟就会忘记自己的身份自己的姓名,需要在本子上不

OSSIM中分布式消息队列应用 - 2016-03-21 14:03:48

OSSIM中分布式消息队列应用 1. 消息队列处理 企业日志数量正在以指数级形式高速增长,日志数据的具有海量、多样、异构等特点,基于传统的单一节点混合式安装的OSSIM平台(指OSSIM 4.4及以下系统),无法满足海量日志分析要求。在OSSIM 4.4以后的系统中增加了中间件RabbitMQ,可通过RabbitMQ将系统中各组件解除耦合,避免了系统中运行模块的影响(例如MySQL的写操作等),这样设计可实现分布式日志分析平台的要求。 在网络出现故障前或故障过程中,各种设备和服务器会发送大量日志到日志服务