如何保存iptables的规则?

我为iptables创建了规则。 但是,当我重新启动计算机时,规则不起作用! 如何在Ubuntu上保存规则?


问题解决了!

做:

在编写命令iptables之后,执行:

1. sudo su 2. iptables-save > /etc/iptables.rules 3. In /etc/network/if-pre-up.d/iptables,put: #!/bin/sh iptables-restore  /etc/iptables.rules if [ -f /etc/iptables.rules ]; then iptables-restore < /etc/iptables.rules fi exit 0 5. After, give permission to the scripts: sudo chmod +x /etc/network/if-post-down.d/iptables sudo chmod +x /etc/network/if-pre-up.d/iptables 

更多信息: https : //help.ubuntu.com/community/IptablesHowTo#Saving_iptables祝您好运!

简单的方法是使用iptables-persistent

安装iptables-persistent

 sudo apt-get install iptables-persistent 

安装完成后,您可以随时保存/重新加载iptables规则:

 sudo /etc/init.d/iptables-persistent save sudo /etc/init.d/iptables-persistent reload 

Ubuntu 16.04服务器

如上所述的安装没有问题,但上面保存和重新加载的两个命令似乎不适用于16.04服务器。 以下命令适用于该版本:

 sudo netfilter-persistent save sudo netfilter-persistent reload 

保存iptables规则的通用方法是使用命令iptables-save,它写入stdout。

 iptables-save > /etc/network/iptables.rules 

然后iptables-save创建的输出可以通过iptables-restore读取stdin。 如果在没有NetworkManager的服务器上,则通常的方法是在/ etc / network / interfaces中使用pre-up命令。

 iface eth0 inet static .... pre-up iptables-restore < /etc/network/iptables.rules 

如果您使用的是NetworkManager,则应该可以从/etc/NetworkManager/dispatcher.d/下创建的脚本中运行相同的命令。 在社区文档 - iptables howto中 ,有关详细信息,请参阅NetworkManager的启动配置 。

请注意,命令iptables,iptables-save和iptables-restore仅为IPv4。 对于IPv6流量,等效命令是ip6tables,ip6tables-save和ip6tables-restore。