一、故障现象:

    早上刚开电脑就接到朋友电话,说他的一台阿里云的服务器(CentOS7)无法登陆进去,让我帮忙看看,然后有了接下来的对话:

    我:“服务器昨天有做过什么操作没?比如iptables,阿里云的安全组策略调整”。

    他:“昨天下班前还好好的啊,我没动过什么啊。”

二、分析处理过程:

 检测1:开始ping那台服务器(发现没有包返回)

CentOS7下关于iptables导致的故障的一次对话

检测2:查看远程连接端口是否开启(端口提示连接失败)

CentOS7下关于iptables导致的故障的一次对话

检测3:登陆阿里云控制台(通过终端登陆系统)

CentOS7下关于iptables导致的故障的一次对话

CentOS7下关于iptables导致的故障的一次对话

检测4:点击“远程连接”,然后输入远程连接密码,进入终端

CentOS7下关于iptables导致的故障的一次对话

检测5:登陆到终端(检测端口情况、网络访问情况等)

CentOS7下关于iptables导致的故障的一次对话

端口是正常的(而且我确认安全组中22端口也是开放的),接着我觉得有必要检查下防火墙策略(虽然朋友一直跟我说没碰iptables)。

检测6:检查iptables的状态

CentOS7下关于iptables导致的故障的一次对话

默认的出口策略居然是DROP,怪不得没有任何回应的包

CentOS7下关于iptables导致的故障的一次对话

修改完后,重新测试下,发现立马可以登录了。

CentOS7下关于iptables导致的故障的一次对话

接着我们开始下面的对话:

我:“防火墙的默认策略被调整了吧,我已经调整回来了,现在OK了”

他:“要不帮我把iptables关了吧”

我:“好的”

CentOS7下关于iptables导致的故障的一次对话先清空相关策略,然后停止iptables服务(提示没服务找不到)

Failed to stop iptables.service: Unit iptables.service not loaded.

centos从7开始默认用的是firewalld,这个是基于iptables的,所有默认会有iptables的核心,但是iptables的服务是没安装的。

所以当你想使用iptables并且对它进行管理,需要安装iptables-service:

[[email protected] ~]# yum -y install iptables-services
[[email protected] ~]# systemctl stop iptables.service

关闭iptabls,设置开机不启动

CentOS7下关于iptables导致的故障的一次对话

到此,整个处理过程就完成了。

三、小结:

1、线上调整iptables之前,最后在计划任务里面添加一条定期关闭iptables服务的命令(避免出现被被挡在门外的情况)。

2、我一般是在测试环境中先进行调试,确认无误后,然后才在生产环境中进行操作,这样误操作的概率会小很多。