我有一个 linux openwrt 单元,在启动时如果我执行 iptables -F,则无法进行 ssh 访问。
如果我运行 iptables -L -n -v,我会发现有几条自动插入的规则,它会阻止我使用 Web 服务(例如监听端口 8080 的设备)远程执行相同的 ssh 访问和调用方法。
但是问题是,如果我自己在过滤表中编写规则,并且每次启动时都执行 iptables -F 来访问我的相机并调用远程方法,那么所有内容都将从过滤表中删除。
答案1
iptables-restore
通常,iptables 规则是通过使用中的特定文件来加载的/etc
。因此,如果您能弄清楚该文件的名称,则可以手动调用iptables-save
并将您的好规则写入该文件。然后在下次启动时,它将使用您修改后的规则,而不是以前的规则。
我猜测位置是/etc/iptables.rules
,但要找到你的grep -R iptables-restore /etc/init.d/
。
一旦您知道该文件,您就可以修改实时规则集,然后以 root 身份使用以下命令保存一组好的规则:
iptables-save > /etc/iptables.rules
或者,以普通用户身份通过 sudo:
iptables-save | sudo tee -a /etc/iptables.rules
您甚至可能希望将当前规则保存到文件中,手动编辑该文件,然后从该文件重新加载。例如:
sudo iptables-save > edited-rules
vim edited-rules #or whatever editor, gedit?
sudo iptables-resore < edited-rules
不管你如何操作,请确保当你完成后,将新的规则集保存到文件所在的位置(再次,可能/etc/iptables.rules
)