为什么重启我的Debian系统时iptables规则消失了?


48

我添加以下规则:

sudo iptables -t nat -A OUTPUT -d a.b.c.d -p tcp \
       --dport 1723 -j DNAT --to-destination a.b.c.d:10000
  1. 重新启动时,将删除计算机规则。为什么?
  2. 我可以做些什么来使规则持久化?

Answers:


45

iptables中没有选项可以使您的规则永久化。但是您可以使用iptables-saveiptables-restore完成您的任务。

首先使用您提供的命令添加iptable规则。

然后/etc/iptables.conf使用以下命令将iptables规则保存到某个文件中:

$  iptables-save > /etc/iptables.conf

在以下命令中添加以下命令/etc/rc.local以在每次重新引导时重新加载规则。

$  iptables-restore < /etc/iptables.conf

15
在Debian上有iptables-persistent可以做到这一点的软件包。
bahamat 2012年

7
放置它不是一个好主意,rc.local因为服务启动和应用防火墙策略之间会存在一个开放的窗口。我不喜欢用pre-up 钩环回接口/etc/network/interfaces克服这一点。
poige 2012年

@poige:我同意100%,rc.local可能会达到预期的效果,但是在这种情况下这是一个错误。
JM Becker 2012年

3
@bahamat:安装该软件包是最好的解决方案,它应该自己解决。
JM Becker 2012年

1
@TechZilla:完成。
巴哈马特2012年

53

(因为有人建议将其作为自己的答案...)

在debian上安装iptables-persistent

该软件包将/etc/iptables/rules在引导过程中自动为您加载。

每当您修改规则时,请运行/sbin/iptables-save > /etc/iptables/rules以保存它们。您也可以根据需要将其添加到关机顺序中。


12
有两个不同的规则文件:/etc/iptables/rules.v4/etc/iptables/rules.v6分别用于IPv4和IPv6。如果要将表应用于两种连接,则必须将其保存到两个规则文件中。
PetaspeedBeaver 2014年

11
不要将其添加到关机顺序中!如果您在更改/设置过程中破坏了规则,则至少可以进行一次良好的旧重启,将一切恢复为先前的工作状态。
VertigoRay

1

完成iptables-persistent上述安装后,您还可以在Ubuntu 16.04+上使用以下较短的命令保存规则: sudo netfilter-persistent save

您还可以将它们恢复到上次保存它们的方式: sudo netfilter-persistent reload

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.