在我的 OpenWRT 实例中,我在 Input filter table 中添加了 iptables 规则,但问题是当我打开我的系统时我发现规则被删除了。我该怎么做才能使规则不会自动删除。
小智 7
有几种方法可以在 OpenWRT 中编辑 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
Run Code Online (Sandbox Code Playgroud)
/etc/firewall.user
编辑/etc/firewall.user
文件后,您可能想要测试它。这是因为如果您在启动时执行脚本,您可能会看到任何错误。要测试脚本:
iptables -F
会起作用,但可能会删除您不需要测试的规则。bash /etc/firewall.user
。您想查看脚本中是否有任何错误。如果你收到任何消息,你可能有一个错字。iptables -L
并确保您要添加的规则已正确添加。iptables-save
和 iptables-restore
OpenWRT(以及其他发行版),有一个iptables-save
命令。通过运行iptables-save > myrules
,您将拥有一个文件,其中包含恢复 iptables 规则所需的所有内容。
iptables-restore < myrules
将读取 iptables 规则文件并应用它们。
所以你需要创建一个myrules
文件,然后iptables-restore < myrules
在启动时运行。您可以通过编辑/etc/rc.local
文件在启动时执行。
有关详细信息,iptables-save
并iptables-restore
可以发现在这里。
该/etc/config/firewall
文件也可以编辑。防火墙“提供了一个从 iptables 系统中抽象出来的配置接口,以提供适合大多数常规用途的简化配置模型,同时使用户能够在需要时自行提供所需的 iptables 规则。”
更多信息可以在这里找到
如果你运行的是 Debian 或 Ubuntu,你可以试试这个iptables-persistent
包。
sudo apt-get install iptables-persistent
Run Code Online (Sandbox Code Playgroud)
以上将安装服务。然后它将您的规则保存到/etc/iptables/rules.v4
和/etc/iptables/rules.v6
。
你可以得到更多信息的Ubuntu 12.04在这里的,Ubuntu 14.04在这里。
如果您运行的是 CentOS,您可以通过运行以下命令来保存规则:
/sbin/service iptables save
Run Code Online (Sandbox Code Playgroud)
这会将 iptables 的内容保存到/etc/sysconfig/iptables
. 之前的内容/etc/sysconfig/iptables
将被保存到/etc/sysconfig/iptables.save
.
您可以在此处获取更多信息。
归档时间: |
|
查看次数: |
8789 次 |
最近记录: |