![在启动时运行 iptables 命令(在锁定的 IoT 设备上)](https://linux22.com/image/130133/%E5%9C%A8%E5%90%AF%E5%8A%A8%E6%97%B6%E8%BF%90%E8%A1%8C%20iptables%20%E5%91%BD%E4%BB%A4%EF%BC%88%E5%9C%A8%E9%94%81%E5%AE%9A%E7%9A%84%20IoT%20%E8%AE%BE%E5%A4%87%E4%B8%8A%EF%BC%89.png)
我正在使用运行 Linux 内核 3.12.70 的供应商自定义发行版的蜂窝调制解调器/路由器。
我想添加自定义iptables
规则,但它们在重新启动时不断被删除。
我试过了https://help.ubuntu.com/community/IptablesHowTo#Saving_iptables解决方案2,但这不起作用。
顺便说一句,当我在 上运行 cat 时iptables-restore
,ipstables-save
我得到了乱码,所以它们可能是二进制文件或加密保护的。
但是,如果我iptables
通过 SSH 运行单个命令,它们会一直保持并工作直到重新启动。
我正在尝试找出一种iptables
在重新启动时通过 CLI 自动运行单个规则的方法。
我添加了 a#!/bin/sh -e
以及我想要添加的行,将其放入init.d
目录中,使其可执行,运行update-rc.d
,然后rc5.d
通过 将其复制到目录中ln -s
。
答案1
- sudo -s(这是以root身份登录)
- mount -o remount,rw /(这将以读写模式挂载整个文件系统)
- 在 /etc/init.d/ 中创建一个脚本(在我的例子中,我创建了脚本 install_firewall.sh )
- “更新-rc.d开始99 5。” (使用 update-rc.d 命令将脚本添加到所需的运行级别,在我的例子中,“update-rc.d install_firewall.sh start 99 5 。”命令将 install_firewall.sh 置于运行级别 5,优先级为99 意味着它将是重新启动后运行的最后一个脚本)。
- 在我的脚本中,我添加了 35 秒的延迟,以确保应用代码中的所有防火墙规则,然后我们开始通过脚本对其进行操作。
'#!/bin/bash'
sleep 35
iptables [...]//Add custom iptables rules here
exit 0