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" 

发现在这些来源:

删除规则

插入规则

没有这样的命令交换两个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

现在添加交换值

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]