iptables在列表中移动规则

时间:2013-05-12 19:30:40

标签: android linux firewall 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

6 个答案:

答案 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"

在这些来源找到:

Delete Rule

Insert Rule

答案 1 :(得分:2)

我们在某些规则的顺序上存在问题,而我发现更改此问题的最有效方法是使用两个工具:

  1. iptables保存
  2. iptables-restore

首先将规则转储到文件中

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链只有这两个规则,因此对于12

,它们的ID号分别为-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]