OpenWRT

OpenWRT

在我的 OpenWRT 实例中,我在输入过滤器表中添加了 iptables 规则,但问题是当我打开系统时,我发现规则已被删除。我该怎么做才能让规则不会自动删除。

答案1

OpenWRT

有几种方法可以在 OpenWRT 中编辑 iptables。

直接使用 iptables

OpenWRT 将在启动时运行 的内容/etc/firewall.user。这是一个 shell 脚本,因此它看起来像这样:

root@OpenWrt:/etc# cat firewall.user 
# This file is interpreted as shell script.
# Put your custom iptables rules here, they will
# be executed with each firewall (re-)start.

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 22 -j DNAT --to 10.1.1.1:2222
iptables -A FORWARD -p tcp -d 10.1.1.1 --dport 2222 -j ACCEPT

测试/etc/firewall.user

编辑/etc/firewall.user文件后,您可能想要测试它。这是因为如果您在启动时执行脚本,您可能会看到任何错误。要测试脚本:

  • 首先,删除受脚本影响的所有规则。Aiptables -F可以工作,但可能会删除您不需要测试的规则。
  • 接下来,运行bash /etc/firewall.user。您想查看脚本中是否有任何错误。如果您收到任何消息,则可能是输入错误。
  • 接下来,运行iptables -L并确保您想要添加的规则已正确添加。
  • 最后,重启设备。此时,规则应该会像上次一样添加。

iptables-saveiptables-restore

OpenWRT(以及其他发行版)有一个iptables-save命令。通过运行iptables-save > myrules,您将获得一个文件,其中包含恢复 iptables 规则所需的所有内容。

iptables-restore < myrules将读取 iptables 规则文件并应用它们。

因此,您需要创建一个myrules文件,然后iptables-restore < myrules在启动时运行。您可以通过编辑该/etc/rc.local文件在启动时执行。

更多信息iptables-saveiptables-restore查阅这里

使用 OpenWRTs 防火墙配置语法

/etc/config/firewall文件也可以编辑。防火墙“提供了一个从 iptables 系统中抽象出来的配置接口,以提供适合大多数常规用途的简化配置模型,同时允许用户在需要时自行提供所需的 iptables 规则。”

可以找到更多信息这里

其他发行版

Debian 或 Ubuntu

如果您正在运行 Debian 或 Ubuntu,您可以尝试该iptables-persistent软件包。

sudo apt-get install iptables-persistent

以上操作将安装该服务。然后它会将您的规则保存到/etc/iptables/rules.v4/etc/iptables/rules.v6

您可以获取有关 Ubuntu 12.04 的更多信息这里,Ubuntu 14.04这里

CentOS

如果您运行的是 CentOS,则可以通过运行以下命令保存规则:

/sbin/service iptables save 

这会将 iptables 的内容保存到/etc/sysconfig/iptables。 之前的 内容/etc/sysconfig/iptables将保存到/etc/sysconfig/iptables.save

您可以获取更多信息这里

答案2

您可以编写一个包含所有 iptables 命令的 shell 脚本,然后在 /etc/rc.local 中添加一行,以便在系统启动时自动运行该 shell 脚本。请参阅http://bash.cyberciti.biz/firewall/linux-iptables-firewall-shell-script-for-standalone-server/以获得关于如何执行此操作的良好教程。

相关内容