重启时我的 iptables 配置出现问题

重启时我的 iptables 配置出现问题

我尝试多次保存 iptables 配置,以便它在我重新启动 Raspberry Pi(Ubuntu 22.04.1 LTS)时自动启动,但是当我使用此命令查看时:

$ sudo iptables -L

重启后我的链式规则就消失了。

我遵循了以下文档:

https://help.ubuntu.com/community/IptablesHowTo

以下是我按特定顺序使用的命令的规则:

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport ssh -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -j DROP
sudo iptables -I INPUT 1 -i lo -j ACCEPT

然后,根据同一文档,他们推荐解决方案 1 或解决方案 2 来保存 iptables 并在重启时恢复。我尝试了这两种方法,但都没有成功。

以下是我针对解决方案 2 所做的事情:

我将防火墙规则保存到文件 iptables.rules 中,如下所示:

sudo sh -c "iptables-save > /etc/iptables.rules"

我为 /etc/network/if-pre-up.d/iptablesload 脚本创建了这个新文件。下面是我用 Vim 编辑的脚本内容:

#!/bin/sh
iptables-restore < /etc/iptables.rules
exit 0

我使用 :wq 在 Vim 上保存了该文件

然后我在 /etc/network/if-post-down.d/iptablessave 中为脚本创建了这个新文件。它包含:

#!/bin/sh
iptables-save -c > /etc/iptables.rules
if [ -f /etc/iptables.downrules ]; then
   iptables-restore < /etc/iptables.downrules
fi
exit 0

我使用 :wq 在 Vim 上保存了该文件

最后我赋予这两个脚本执行权限如下:

sudo chmod +x /etc/network/if-post-down.d/iptablessave
sudo chmod +x /etc/network/if-pre-up.d/iptablesload

完成所有这些操作后,当我重新启动 Raspberry Pi 并输入命令

sudo iptables -L 

我的所有链式规则都消失了。

我是 Ubuntu 新手,感谢您的帮助。

答案1

Ubuntu 提供了以下在启动时加载 iptables 规则的方法:

所需软件:

必须安装 iptables-persistent

启动时规则:

启动时要加载的规则存储在/etc/iptables/rules.v4(IPv4) 和/etc/iptables/rules.v6(IPv6) 中。可以/etc/iptables/rules.v4使用命令保存现有的 v4 规则集

iptables-save -c > /etc/iptables/rules.v4

或者

ip6tables-save -c > /etc/iptables/rules.v6

还有其他方法,比如在启动时启动自己的脚本,但这个问题没有详细描述。错误的 iptable 规则集可能会阻止您访问服务器,请小心,始终询问如果……会发生什么?

相关内容