22

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

6 回答 6

37

首先检查行号:

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"

在以下来源找到:

删除规则

插入规则

于 2013-07-10T19:10:08.990 回答
4

我们遇到了一些规则的顺序问题,我发现改变它的最有效方法是使用两个工具:

  1. iptables-保存
  2. iptables-恢复

首先将规则转储到文件中:

sudo iptables-save > /root/iptrules.txt

然后使用您喜欢的文本编辑器编辑文件:

sudo vim /root/iptrules.txt

进行必要的动作,然后恢复规则:

sudo iptables-restore < /root/iptrules.txt
于 2020-07-06T12:00:39.707 回答
3

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

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

于 2013-07-02T12:56:36.390 回答
1

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

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

sudo service iptables-persistent restart

太简单!!!!!

于 2015-08-22T04:22:17.530 回答
0

让我们假设您的 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]

于 2017-01-21T07:35:51.020 回答
0

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

于 2015-10-27T10:08:59.723 回答