我需要一些帮助,或者建议。
我有一台最新的服务器,我正在尝试投入生产,但无法让它在重新启动时加载其规则。
“Debian GNU/Linux 10 (buster)”它的软件包是最新的
我已经安装了 iptables-persistent,我已经安装了ran dpkg-reconfigure iptables-persistent
,并且它确实将规则保存在/etc/iptables
我的文件夹中有以下内容
rules.v4 rules.v6
重新启动时,它不会加载我的规则。如果我在下面这样做,效果就很好!它不会在重新启动时为我执行此操作。
iptables-restore < /etc/iptables/rules.v4
我尝试过在网上跟踪许多线索,从这些线索开始。
为什么重启 Debian 系统后 iptables 规则会消失?
我不知道我做错了什么。我确实安装了fail2ban并且可以工作。我看不出这有冲突,但在启动时它们都将使用 iptables...
有没有办法查看 iptables 日志?它记录到journalctl吗?我找不到任何可以让我了解为什么它不起作用的消息。
这些规则必须在启动时加载。有人确实提到要在 中加载这个文件/etc/rc.local
,我不熟悉这个文件,Debian 上不存在该文件,有些人解释说要坚持使用 iptables-persistent,我倾向于同意这一点。
为什么重启 Debian 系统后 iptables 规则会消失?
感谢任何帮助,或者记录到 iptables(如果有)。
这是我尝试重新启动时的启动日志journalctl -f -unetfilter-persistent
Jan 02 15:09:06 domain.ca netfilter-persistent[720]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables start
Jan 02 15:09:06 domain.ca systemd[1]: Started netfilter persistent configuration.
Jan 02 15:09:50 domain.ca systemd[1]: Stopping netfilter persistent configuration...
Jan 02 15:09:50 domain.ca netfilter-persistent[1434]: Automatic flush disabled; use '/usr/sbin/netfilter-persistent flush'
Jan 02 15:09:50 domain.ca systemd[1]: netfilter-persistent.service: Succeeded.
Jan 02 15:09:50 domain.ca systemd[1]: Stopped netfilter persistent configuration.
Jan 02 15:09:50 domain.ca systemd[1]: Starting netfilter persistent configuration...
Jan 02 15:09:50 domain.ca netfilter-persistent[1436]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables start
Jan 02 15:09:50 domain.ca netfilter-persistent[1436]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables start
Jan 02 15:09:50 domain.ca systemd[1]: Started netfilter persistent configuration.
答案1
iptables在后台与Linux netfilter交互:
安装 iptables 持久包
$ sudo iptables-persistent -y
启动并启用 iptables 持久服务
$ sudo systemctl enable --now netfilter-persistent.service
保存 netfilter/iptables 规则:
$ sudo netfilter-persistent save
答案2
所以。毕竟这么多时间都花在这上面了。我唯一让它工作的是在 rc.local 中使用sleep 1
.这台机器上有一些东西需要时间来加载,例如网络或其他东西。
我尝试过以持久方式编辑守护进程,以便稍后在我读取的线程中的其他组件之后加载。什么都没起作用。
最后,在 Debian 上,您可以启用 rc.local systemctl enable rc.local
,一旦该服务启动,我进入其文件vim /etc/rc.local
并添加以下内容
#!/bin/bash
# This script is executed at the end of each multiuser runlevel
sleep 1
/sbin/iptables-restore < /etc/iptables/rules.v4
# bash /root/restore.sh
exit 0
重新启动后,我的所有规则都已生效。我认为更好的解决方案是正如其他人提到的那样转移到另一个防火墙,因为 iptables 将被弃用。但我有复杂的规则而且没有时间。