我已经尝试在我的iptables中添加一些规则,但它们似乎没有保存.为了保存它们,我尝试运行iptables-save和service iptables save.每次我运行其中任何一个命令时,它都表示已成功保存.以下是我要插入的规则:
iptables -A INPUT -j REJECT -p tcp --destination-port 3306 iptables -A INPUT -j REJECT -p tcp --destination-port 25
这些规则工作并在我输入后保持原位,但是当我重新启动系统时,他们在运行iptables -L时从列表中消失并且端口再次打开(使用nmap检查).
查看我的/ etc / sysconfig / iptables文件时,规则就在那里(在底部),所有“已完成”的时间戳都来自我保存似乎正确的规则.此外,在我的/ etc / sysconfig / iptables-config文件中,所有设置都是默认设置,并且从其他位置或其他位置加载iptable规则似乎没有任何改变.
解决方法
如果在重启后使用iptables -L看不到更改,则表明:
>规则没有得到保存
>你建议他们是,但同时说’完成时间戳’ – 复数.这可能意味着您在同一文件中有多个规则副本,并且只应用第一个规则.
>将输出从iptables-save重定向到上面的文件(不要追加):
iptables-save > /etc/sysconfig/iptables
>或者,只需将现有文件移动到其他位置,然后保存.
>您的配置可能被设置为加载与您保存的文件不同的文件 – 确保加载的文件与您保存的文件相匹配.
>该文件通常是/ etc / sysconfig / iptables
>如果查看/etc/init.d/iptables,您应该找到以下行来确定要加载哪个文件:
IPTABLES=iptables IPTABLES_DATA=/etc/sysconfig/$IPTABLES
>规则有误
>这通常不是问题 – iptables通常只是忽略了错误的规则;并且你不是手工编写它们(你正在保存一个可能的工作规则集).
>启动时未启动iptables
>跑
chkconfig --list iptables
检查加载了哪些运行级别iptables.如果未在右运行级别中启用,请将其添加
chkconfig --level 2345 iptables on
您应该能够通过重新启动iptables来测试您的设置(而不是重新启动计算机):
service iptables restart
标准iptables免责声明:万一出现问题……
>备份现有规则集:
cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bak
>设置一个cron作业,几分钟后将刷新你的iptables(当然,一旦一切正常,就删除它).