我为 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
Run Code Online (Sandbox Code Playgroud)
更多信息:https : //help.ubuntu.com/community/IptablesHowTo#Saving_iptables 祝你好运!
小智 173
简单的方法是使用iptables-persistent.
安装iptables-persistent:
sudo apt-get install iptables-persistent
Run Code Online (Sandbox Code Playgroud)
安装后,您可以随时保存/重新加载 iptables 规则:
sudo /etc/init.d/iptables-persistent save
sudo /etc/init.d/iptables-persistent reload
Run Code Online (Sandbox Code Playgroud)
如上所述的安装工作没有问题,但是上面用于保存和重新加载的两个命令似乎不适用于 16.04 服务器。以下命令适用于该版本:
sudo netfilter-persistent save
sudo netfilter-persistent reload
Run Code Online (Sandbox Code Playgroud)
and*_*dol 51
保存 iptables 规则的通用方法是使用命令 iptables-save,它会写入 stdout。
iptables-save > /etc/network/iptables.rules
Run Code Online (Sandbox Code Playgroud)
iptables-save 创建的输出然后可以通过 iptables-restore 在 stdin 上读取。如果在没有 NetworkManager 的服务器上,常见的方法是在 /etc/network/interfaces 中使用 pre-up 命令。
iface eth0 inet static
....
pre-up iptables-restore < /etc/network/iptables.rules
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 NetworkManager,应该可以从 /etc/NetworkManager/dispatcher.d/ 下创建的脚本运行相同的命令。在社区文档 - iptables howto 中,请参阅NetworkManager 启动时配置以获取更多信息。
请注意,iptables、iptables-save 和 iptables-restore 命令仅适用于 IPv4。对于 IPv6 流量,等效命令是 ip6tables、ip6tables-save 和 ip6tables-restore。