当前位置: 首页>>技术问答>>正文


如何保存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
 exit 0

 4. After, in /etc/network/if-post-down.d/iptables,put:
 #!/bin/sh
 iptables-save -c > /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规则的通用方法是使用写入stdout的命令iptables-save。

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

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

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

如果您使用的是NetworkManager,则应该可以从/etc/NetworkManager/dispatcher.d/下创建的脚本运行相同的命令。在Community Documentation – iptables howto中,请参阅Configuration on Startup for NetworkManager以获取更多信息。

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/890.html,未经允许,请勿转载。