我有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
答案 0 :(得分:26)
首先检查行号:
iptables -nL --line-numbers
基于行删除:
iptables -D INPUT {line}
插入您希望的位置:
iptables -I INPUT {line} -i lo -p tcp --dport {port} -j ACCEPT -m comment --comment "This rule is here for this reason"
在这些来源找到:
答案 1 :(得分:2)
我们在某些规则的顺序上存在问题,而我发现更改此问题的最有效方法是使用两个工具:
首先将规则转储到文件中
sudo iptables-save > /root/iptrules.txt
然后使用您喜欢的文本编辑器编辑文件:
sudo vim /root/iptrules.txt
进行必要的动作,然后恢复规则:
sudo iptables-restore < /root/iptrules.txt
答案 2 :(得分:1)
没有这样的命令来交换两个iptables规则。
您可以删除并将它们插入适当的位置。
答案 3 :(得分:1)
有一个名为iptables-persistent
的程序,它将iptable的规则作为os服务持久化。此服务包括配置文件iptables-save
导出。
因此,您可以对配置文件中的行重新排序并重新启动服务。
sudo service iptables-persistent restart
这么简单!!!!!
答案 4 :(得分:0)
而不是-A使用-D删除然后再添加
iptables -D INPUT -s 5.5.5.5 -j DROP
iptables -D INPUT -s 6.5.5.5 -j ACCEPT
现在添加swaped值
iptables -A INPUT -s 5.5.5.5 -j ACCEPT
iptables -A INPUT -s 6.5.5.5 -j DROP
答案 5 :(得分:0)
让我们假设您的INPUT链只有这两个规则,因此对于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]