Ubuntu 20.04——iptables 在启动时不会重新加载

Ubuntu 20.04——iptables 在启动时不会重新加载

我有一个在以下位置加载 iptables 的脚本/etc/network/if-pre-up.d/iptablesload

#!/bin/sh

iptables-restore < /etc/iptables.rules

ip6tables-restore < /etc/ip6tables.rules

exit 0

我还有一个将 iptables 保存在以下位置的脚本/etc/network/if-post-down.d/iptablessave

#!/bin/sh

# By saving the current iptables rules to the file at the specific path, 
# then they will be loaded on every startup.

echo "Saving current iptables rules..."

iptables-save -c > /etc/iptables.rules
if [ -f /etc/iptables.downrules ]; then
   iptables-restore < /etc/iptables.downrules
fi

ip6tables-save -c > /etc/ip6tables.rules
if [ -f /etc/ip6tables.downrules ]; then
   ip6tables-restore < /etc/ip6tables.downrules
fi


exit 0

/etc/iptables.rules我在路径上有一个包含所有规则的文件。

当我手动执行时iptables-restore < /etc/iptables.rules,我可以看到所有 iptables 规则。
但是打开 PC 后,所有 iptables 规则都丢失了(全部为空)。

我的结论是文件夹中的脚本/etc/network/if-post-down.d没有/etc/network/if-pre-up.d执行。为什么?

(该文件/etc/iptables.rules存在是因为我手动执行了iptables-save -c > /etc/iptables.rules。)


我使用的脚本与 Ubuntu 18 使用的完全相同 - 它们运行良好。

以上原文摘自:
https://help.ubuntu.com/community/IptablesHowTo#Solution_.232_.2Fetc.2Fnetwork.2Fif-pre-up.d_and_...2Fif-post-down.d

我也尝试完全按照他们写的方式复制上面的链接,但 iptables 仍然加载失败。

答案1

更新—networkd

Ubuntu 中的 OOTB 配置现在使用该iptables-persistent包。如前所述,这是最新版本的解决方案:

sudo apt install iptables-persistent
netfilter-persistent save
netfilter-persistent reload

这将在会话之间保留 iptables 规则。

原始答案

您要查找的文件现在名为
/etc/iptables/rules.v4

例如

sudo cat /etc/iptables/rules.v4
# position 1
*filter
# [snip] -- I checked the rules, they are there

所以你应该能够

# must be root
sudo -i 
iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6

并恢复:

# must be root
sudo -i
iptables-restore < /etc/iptables/rules.v4
ip6tables-restore < /etc/iptables/rules.v6

相关内容