iptables在列表中移动规则

我有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 

    首先检查行号:

     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" 

    在这些来源find:

    删除规则

    插入规则

    没有这样的命令来交换两个iptables规则。

    您可以删除并将它们插入适当的位置。

    有一个名为iptables-persistent的程序,它将iptable的规则作为os服务持久化。 此服务包括配置文件作为iptables-save导出。

    因此,您可以重新排序配置文件中的行并重新启动服务。

     sudo service iptables-persistent restart 

    太简单!!!!!

    而不是-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

    让我们假设您的INPUT链只有这两个规则,因此它们的ID号分别为12用于-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]