在我的OpenWRT实例中,我在“输入”过滤器表中添加了iptables规则,但是问题是当我打开系统电源时,发现规则已删除。我应该怎么做才能使规则不会自动删除。
ifconfig
输出?这个问题不是必须的。
在我的OpenWRT实例中,我在“输入”过滤器表中添加了iptables规则,但是问题是当我打开系统电源时,发现规则已删除。我应该怎么做才能使规则不会自动删除。
ifconfig
输出?这个问题不是必须的。
Answers:
有几种方法可以在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
/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
以上将安装服务。然后它将您的规则保存到/etc/iptables/rules.v4
和/etc/iptables/rules.v6
。
你可以得到更多信息的Ubuntu 12.04 在这里的,Ubuntu 14.04 在这里。
如果您正在运行CentOS,则可以通过运行以下命令保存规则:
/sbin/service iptables save
它将iptables的内容保存到/etc/sysconfig/iptables
。的先前内容/etc/sysconfig/iptables
将保存到/etc/sysconfig/iptables.save
。
您可以在此处获取更多信息。
os.system
,为什么不使用它两次。还运行一个os.system("echo iptables -D INPUT -m mac-source --mac" + mac + "j DROP") >> /etc/firewall.user
。另外,请注意使用中公然的命令注入风险,请os.system
确保将好字符列入白名单。
您可以编写包含所有iptables命令的Shell脚本,然后在/etc/rc.local中添加一行以在系统启动时自动运行Shell脚本。有关如何执行此操作的良好教程,请参见http://bash.cyberciti.biz/firewall/linux-iptables-firewall-shell-script-for-standalone-server/。