背景

最近一个客户那里的服务器远程连接不上了,系统是Centos6.7_X64,我的一位同事到现场说是iptables防火墙开启了,关闭之后重启防火墙还是会自动打开。这位同事不太懂linux,可能并没有真正关闭;最后他用yum remove iptables卸载了防火墙,结果是进不了系统。警告:此命令勿用,尤其是在Centos6上面,iptables依赖太多包。后来我跑到客户那里把问题搞定了,本文主要说明解决思路和过程。

经过此事,我深刻理解了蝴蝶效应。

 

思路

命令执行之后,单用户模式进不了,最后只能选择恢复模式。

1. 数据先备份,然后再恢复系统。

2. 最坏的打算就是重装系统。

3. 重新安装卸载的包,看能否进入系统? 如何找出卸载的包?

4. 用什么方式安装包。yum 或者 rpm包

 

准备工作

Centos6.7_x64镜像、刻录系统光盘、启动U盘、移动硬盘、移动光驱。

在虚拟机中安装系统,并执行上面的卸载命令,找出依赖的包(大约40个)。

然后虚拟机中进入恢复模式,重装安装卸载的包,重启进入系统。

 

具体过程

1、把安装光盘放入光驱,然后重新启动计算机,按服务器启动菜单快捷键,屏幕会有提示;

或者在bios中把系统设置为光驱为第一启动。

 

2、 选择光盘菜单中的Rescue installed system。

clip_image002

 

3、选择语言English(默认即可)

clip_image004

 

4、选择键盘类型

clip_image006

 

5、安装网络(如果可以通外网,建议安装,可以直接用yum命令; 如果没有外网,就选择NO。)我选择了Yes。

clip_image008

 

6、 设置网卡(我的eth0是外网口,所以选择eth0)

clip_image010

 

7、配置IP信息(根据自己的信息填写,如果有DHCP服务,可以选择自动获取IP)

clip_image012

 

8、选择Continue,以读写模式挂载系统,可以对系统进行修改。

clip_image014

 

9、回车进入Rescue模式。

clip_image016

 

10、启动Shell

clip_image017

此时进入的bash#,注意:当前的根是恢复模式的根。要想进入操作系统的根请执行

chroot /mnt/sysimage

clip_image018

此时会进入sh# ,要重启系统还是要执行exit退回bash。

 

11、备份数据,挂载移动硬盘或者U盘。

fat32是可以直接挂载的。

NTFS 需要安装一个ntfs-3g包,下面是其官网,请自行下载

https://www.tuxera.com/community/open-source-ntfs-3g/

以NTFS举例:

tar –zxvf ntfs-3g_ntfsprogs-2017.3.23.tgz

cd ntfs-3g_ntfsprogs-2017.3.23 && ./configure && make && make install

mkdir –p /mnt/backup

mount -t ntfs-3g /dev/sdb1 /mnt/backup

根据自己需要备份数据。

 

12. 安装依赖包

yum install libtool device-mapper-multipath-* \

lvm2-* \

system-config-firewall-base-* \

lvm2-libs-* \

device-mapper-event-* \

mdadm-* \

openssh-server-* \

cronie-anacron-* \

crontabs-* \

cronie-* \

b43-openfwwf-* \

dracut-kernel-004-* \

dracut-004-* \

plymouth-* \

2:postfix-* \

cyrus-sasl-* \

libdrm-* \

kbd-* \

rsyslog-* \

device-mapper-event-libs-* \

iptables-ipv6-* \

device-mapper-multipath-libs-* \

kpartx-* \

cryptsetup-luks-* \

cryptsetup-luks-libs-* \

device-mapper-* \

device-mapper-libs-* \

fuse-* \

openssh-clients-* \

openssh-* \

iscsi-initiator-utils-* \

12:dhclient-* \

iproute-* \

iptables-* \

policycoreutils-* \

util-linux-ng-* \

iputils-20071127-* \

udev-147-* \

initscripts-*

 

最后执行exit

重启系统reboot

 

进入系统关闭防火墙

chkconfig iptables off

chkconfig ip6tables off

搞定上图

clip_image001

 

附录

小妙招:Centos在出现启动界面时,按下“ESC”,会显示出详细的启动信息,有时候会卡在某个服务进不了系统,此方法可以看出具体是那个服务,然后再排查该服务有什么问题。