为什么 Iptables 持久服务不保存我的更改?

ber*_*436 26 iptables iptables-persistent

我按照教程在 ubuntu 12.04 上设置 IP 规则。设置时一切正常——但现在我对防火墙进行了更改,这些更改在重新启动时不会持续存在。我不明白为什么会这样。这是我如何使用 iptables-persistent 的演示。我究竟做错了什么?

$ sudo service iptables-persistent start
 * Loading iptables rules...                                                                                             *  IPv4...                                                                                                              *  IPv6...   

$ sudo iptables -L   //shows a certain rule
$ iptables -D INPUT ... //command successfully drops the rule
$ sudo iptables -L   //shows rule has been deleted

 $ sudo service iptables-persistent restart
 * Loading iptables rules...                                                                                             *  IPv4...                                                                                                              *  IPv6...                                                                                                      [ OK ] 
 $ sudo iptables -L  //rule is back
Run Code Online (Sandbox Code Playgroud)

Ste*_*day 50

iptables-persistent不能那样工作。重启iptables-persistent“服务”不会捕获iptables的当前状态并保存;它所做的只是恢复上次配置包时保存的 iptables 规则。

要配置iptables-persistent,您需要告诉它您当前的 iptables 规则集。

实现这一点的一种方法如下:

iptables-save >/etc/iptables/rules.v4
ip6tables-save >/etc/iptables/rules.v6
Run Code Online (Sandbox Code Playgroud)

或者,等效地,该iptables-persistent软件包还提供以下内容:

dpkg-reconfigure iptables-persistent
Run Code Online (Sandbox Code Playgroud)

(您需要对有关是否保存规则的问题回答“是”。)

之后,下次iptables-persistent启动/重新启动时,将加载您期望的 iptables 规则集。


Ope*_*TeX 13

保存当前 iptables 规则的非常简单的方法是使用以下命令:

sudo service netfilter-persistent save

使用上面的方法,在安装netfilter-persistent(and iptables-persistent) 包后至少在 Ubuntu 中工作,不需要手动运行 iptables 命令或重新配置包(正如上面接受的答案所建议的那样)。


小智 6

安装 iptables-persistent:

sudo apt install iptables-persistent
Run Code Online (Sandbox Code Playgroud)

进行所需更改后保存规则:

sudo netfilter-persistent save
Run Code Online (Sandbox Code Playgroud)