我有 2 条 iptables 规则
iptables -A INPUT -s 5.5.5.5 -j DROP
iptables -A INPUT -s 6.5.5.5 -j ACCEPT
是否有一个函数或命令可以将规则交换成这样:
iptables -A INPUT -s 6.5.5.5 -j ACCEPT
iptables -A INPUT -s 5.5.5.5 -j DROP
我们遇到了一些规则的顺序问题,我发现改变它的最有效方法是使用两个工具:
首先将规则转储到文件中:
sudo iptables-save > /root/iptrules.txt
然后使用您喜欢的文本编辑器编辑文件:
sudo vim /root/iptrules.txt
进行必要的动作,然后恢复规则:
sudo iptables-restore < /root/iptrules.txt
没有这样的命令可以交换两个 iptables 规则。
您可以删除它们并将它们插入适当的位置。
有一个名为iptables-persistent
使 iptable 的规则作为 os 服务持久化的程序。此服务包含一个配置文件作为iptables-save
导出。
因此,您可以重新排序配置文件中的行并重新启动服务。
sudo service iptables-persistent restart
太简单!!!!!
让我们假设您的 INPUT 链只有这两个规则,因此它们的 ID 号分别为1
和2
-A INPUT -s 5.5.5.5 -j DROP
-A INPUT -s 6.5.5.5 -j ACCEPT
现在,让我们切换它们:
iptables -R INPUT 2 -s 5.5.5.5 -j DROP
iptables -R INPUT 1 -s 6.5.5.5 -j ACCEPT
iptables -R
是用另一个替换 iptables 中已经存在的规则的命令。
它的用法是:iptables -R [chain name] [line number] [new rule]
而不是 -A 使用 -D 删除然后再次添加
iptables -D 输入 -s 5.5.5.5 -j DROP
iptables -D 输入 -s 6.5.5.5 -j 接受
现在添加交换值
iptables -A 输入 -s 5.5.5.5 -j 接受
iptables -A INPUT -s 6.5.5.5 -j DROP