![如何使一组特定的 iptables 规则永久生效?](https://linux22.com/image/811760/%E5%A6%82%E4%BD%95%E4%BD%BF%E4%B8%80%E7%BB%84%E7%89%B9%E5%AE%9A%E7%9A%84%20iptables%20%E8%A7%84%E5%88%99%E6%B0%B8%E4%B9%85%E7%94%9F%E6%95%88%EF%BC%9F.png)
是否有“最佳实践”或标准来使一些 iptables 规则永久生效?我的意思是:在系统重启时自动应用?
我正在使用带有 Ubuntu Server 10.04 LTS(Lucid Lynx)的 VPS。
谢谢。
重大修改:我不希望任何规则被保留(就像iptables-persistent
包一样)。我只希望重新加载我自己的特定集合...如果最终通过运行 iptables 添加了其他规则,则应丢弃这些规则...
答案1
最简单的方法是使用 iptables-保存和 iptables-恢复将当前定义的 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
对此进行快速更新,因为您现在可能正在使用 12.04,并且情况有所改善。
该iptables-persistent
软件包现在解决了这个问题。要安装,
sudo apt-get install iptables-persistent
安装软件包时定义的规则会被保存并在每次后续启动时使用。新加载的规则会在重启时被丢弃。
如果您确实需要更改它们(一旦iptables-persistent
安装), /etc/iptables/rules.v4
则 配置文件/etc/iptables/rules.v6
分别针对 ipv4 和 ipv6 iptables。
答案3
更好的方法是在保存 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/
。