昨晚帮朋友配服务器的时候又犯了写错iptables的防火墙配置文件的严重错误,不得不再次大老远跑到机房操作终端。为了避免以后再犯傻,于是仔细看了一下gentoo的iptables管理脚本 /etc/init.d/iptables。发觉我一直习惯改完配置之后用的reload,原来是先清空每一个表,然后再执行start函数(调用iptables-restore) 。当防火墙的INPUT表的默认Policy被配成DROP, 执行reload时如果遇到某行写错了,表规则被清空,但Policy不会变,iptables-restore载入配置的事务又不能执行,所有请求都被挡在外面了。
最后的结论是操作远程机器防火墙的时候,一定要养成先stop掉iptables再start的良好习惯(stop会恢复ACCEPT的POLICY),如果配置写错了,start的时候有提示,也不会把自己拒于门外。

