如何使一组特定的iptables规则永久化?


42

是否存在使一些iptables规则永久化的“最佳实践”或标准?我的意思是:系统重启后自动应用?

我正在将VPS与Ubuntu Server 10.04 LTS(Lucid Lynx)配合使用。

谢谢。

大编辑:我不想保留任何规则(像iptables-persistent包一样)。我只希望重新加载自己的特定集...如果最终通过运行iptables添加其他规则,则应将其丢弃...

Answers:


51

最简单的方法是使用 iptables-saveiptables-restore将当前定义的iptables规则保存到文件中并(重新)加载它们(例如,重新启动时)。

因此,例如,您将运行

sudo iptables-save | sudo tee /etc/iptables.conf

将您当前的iptables规则保存到/etc/iptables.conf,然后将这些行插入到/etc/rc.local

# Load iptables rules from this file
iptables-restore < /etc/iptables.conf

2
+1您的答案非常适合我的原始问题。这也使我意识到我真正想要的是什么,因此我不得不将问题从“如何使iptables规则永久化”更改为?“如何使一组特定的iptables规则永久化?”
J. Bruni

如果可以的话,请对您的答案进行一些编辑以反映问题的变化...我很乐意接受!我需要使用iptables-save一次,并总是重新加载(在/etc/rc.local的iptables-restore听起来不错)。
J. Bruni

1
如果您打算permission denied尝试使用它,>那么此堆栈溢出答案将非常有用。
David Tuite 2014年

2
使用sudo sh -c "iptables-save > /etc/iptables.conf"代替sudo iptables-save > /etc/iptables.conf
Rajat Gupta

31

快速更新,您现在可能正在使用12.04,情况会更好。

iptables-persistent软件包现在可以解决此问题。安装,

sudo apt-get install iptables-persistent

保存安装软件包时定义的规则,并在以后的每次引导中使用。重新加载时将丢弃加载的新规则。

该配置文件,如果你确实需要改变它们(一旦iptables-persistent安装)是 /etc/iptables/rules.v4/etc/iptables/rules.v6分别为IPv4和IPv6的iptables。


如果您对进行编辑/etc/iptables/rules.v4,您如何将其正式应用?目前我正在执行sudo iptables-restore < /etc/iptables/rules.v4
Bruno Bronosky

24

比保存iptable的规则后/etc/rc.local添加一行更好/etc/network/interfaces,就像这样

post-up iptables-restore < /etc/iptables.up.rules

或将文件放入/etc/network/if-down.d//etc/network/if-post-down.d//etc/network/if-pre-up.d/或相同/etc/network/if-up.d/


1
@Kreker:请澄清一下,您的方法比从中执行还原脚本更好rc.local吗?其他方法在某些情况下不起作用吗?
Rajat Gupta 2014年

2
将其添加到网络配置后,将在运行“服务网络重新启动”命令后重新加载它。不限于系统启动。
K. Darien Freeheart 2014年

4
当一个接口出现故障时,为什么要重新发布一个iptables?
alphadogg
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.