一、故障现象:

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

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

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

二、分析处理过程:

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

wKioL1nLB7STKXMZAACPEHH8h0g364.png

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

wKioL1nLCHbBtYdXAAAcc5kFETs015.png

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

wKioL1nLCRGAeZgUAABTg1qkCuY676.png

wKioL1nLCUqCXGIUAABMdecdAk8469.png

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

wKioL1nLCb2CHs5WAAAOLwDPUK0894.png

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

wKiom1nLC6WRoQeUAAA7mPBjYzQ200.png

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

检测6:检查iptables的状态

wKiom1nLDFOTVcxoAAAQ2NXOMZU962.png

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

wKiom1nLDM7xA2FfAAAgpCY7Bbo082.png

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

wKiom1nLDT_CRzHnAAAo4wK72Ac385.png

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

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

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

我:“好的”

wKiom1nLDguC51KKAAAnEq5lZVc698.png先清空相关策略,然后停止iptables服务(提示没服务找不到)

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

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

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

[root@Docker01 ~]# yum -y install iptables-services
[root@docker01 ~]# systemctl stop iptables.service

关闭iptabls,设置开机不启动

wKioL1nLD7eDt1oBAACnvVqL37Q805.png

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

三、小结:

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

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