如何才能使 iptables 规则在此嵌入式 Linux 系统上重新启动后永久保留?

如何才能使 iptables 规则在此嵌入式 Linux 系统上重新启动后永久保留?

我正在对 iptables 防火墙规则进行更改,并希望它们永久生效,但每次计算机重新启动时它们都会消失。在您考虑回复之前,请仔细阅读以下内容:

  • 该系统没有互联网连接。
  • iptables-persistent我无法使用也无法安装软件包iptables-services
  • 没有systemctl
  • service
  • sysv-rc-conf

此系统正在运行 crontab 和 rc.d 我尝试了以下所有方法,但均无效。iptables 规则在启动时仍被清除。

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

编辑 /etc/rc.local,内容如下,

#!/bin/sh -e
 #
 sleep 3
 iptables-restore /etc/iptables/iptables.rules
 exit 0

当我启动后进入 shell 时,我可以执行,

$ iptables-restore /etc/iptables/iptables.rules

并且它按预期工作。但 rc.local 似乎在启动时甚至没有执行。使用 rc.local 是不必要的,欢迎任何解决原始问题的方法。我只是列举了所有我已经尝试过的不起作用的方法。

答案1

您的 /etc/rc.local 是可执行文件吗?假设是,会sudo /etc/rc.local产生什么结果吗?

当 rc.local 运行时,iptables-restore 是否在 $PATH 上?您是否需要使用 iptables-restore 的完整路径,大概是这样的/usr/sbin/iptables-restore

答案2

我只需在 /etc/network/if-up.d/ 中添加一个脚本即可执行恢复。这对我的机器有效。

相关内容