我有一些想要永久使用的 iptables 规则。因此,我安装了 iptables-persistent 并将规则保存在 /etc/iptables/rules.v4 和 /etc/iptables/rules.v6 中。
我还打开了 iptables-persistent 服务的自动启动
$ sudo update-rc.d iptables-persistent defaults
$ sudo update-rc.d iptables-persistent enable 2345
但系统启动后iptables规则仍然为空
$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
当我手动启动 iptables-persistent 时,一切顺利
$ sudo service iptables-persistent start
* Loading iptables rules...
* IPv4...
* IPv6...
$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP all -- domain.ru anywhere
DROP all -- srv246-131.domain.ru anywhere
etc ...
我错过了什么?
答案1
问题是,iptables-persistent 在网络初始化之前启动时调用 iptables-restore。因此此时您无法进行 dns 查找。
您必须使用 IP 地址而不是域名,或者稍后通过 rc.local 加载与域相关的规则。