使用amh v4.2面板时的防火墙问题。

主机系统为Centos 6.10,防火墙为iptables v1.4.7。

最初目的为永久的关闭防火墙,所以使用chkconfig iptables offchkconfig ip6tables off,将iptables的符号连接从各系统启动等级中移除。

▲ 禁用iptables的开机自启动

随后reboot重启主机,验证是否“永久”的将iptables禁用了。但是在开机后执行services iptables stauts发现iptables是正在运行的状态,再次查看利用chkconfig查看iptables的启动等级设置并没有“异常”,各个启动等级都为“off”。

▲ 重启后查看iptables状态,并没能“永久”禁用iptables

后面排查~/.bashrc~/.bash_profile/etc/profile/etc/profile.d/,都没有找到与启动iptables相关的命令。

于是,就干脆把iptables的规则文件/etc/sysconfig/iptables给删除了吧,这样iptables就无法启动了。

▲ 删除iptables规则文件,并测试

最后再reboot重启主机验证下…出乎意料的是,iptables还是自动启动了,而且防火墙的规则与之前似乎并没有变化。

▲ 重启后再次查看iptables状态,但还是自动启动了

于是乎,我在想规则文件/etc/sysconfig/iptables是不是没有引用,为此,我使用iptables-save > /etc/sysconfig/iptables将当前的规则导出,并在此基础上添加一个规则。

▲ 新添加一条防火墙规则

随后执行services iptables restart重启iptables,并执行iptables -L -n查看防火墙规则。

▲ 新添加的防火墙规则,生效

可见,规则文件/etc/sysconfig/iptables是有引用的,但是,为什么先前在删除iptables的规则文件后,自己手动stopstart明明是可以使得iptables因为找不到规则文件而启动失败的,而在reboot重启主机后iptables却能够照常启动。

再次reboot重启主机。

▲ 重启后查看iptables状态

在重启主机后查看iptables状态,iptables正在运行中,关键的是,刚刚在规则文件中新添加的规则并没有在使用到当前的规则中,规则文件/etc/sysconfig/iptables依然还有自己添加的规则,并没有“被改动”。

可以推断出,在系统启动时,iptables应该并不是从/etc/sysconfig/iptables中加载规则。

在排除了~/.bashrc之类文件后,我开始在/etc/init.d/下寻找怀疑对象。

/etc/init.d/目录里的内容

这个amh-start一看就很可疑啊…

/etc/init.d/amh-start文件内容

▲ 查看amh-start的启动信息

这下什么都明白了。

回到上面的问题:

为什么永久禁用iptables不生效;为什么明明没有规则文件,在重启主机后iptables却依然能够自动启动。

因为每次系统启动都会执行amh-start脚本,里面的iptables-restore/etc/amh-iptables中导入防火墙规则。

要永久禁用iptables,将这条/sbin/iptables-restore < /etc/amh-iptables注释掉即可。

注:iptables-restore也会启动iptables