很久以前,我在 iptables 中创建了一些预路由规则。我在 ~/myuser/Downlaods 中有一个脚本,由root
#!/bin/bash
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8069
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8070
iptables-save
我已注释掉这些行并重命名该文件并将所有权更改为非 root 用户。
我认为我必须将它添加到其他脚本(rc.local、systemd 等...)中,因为在我清除 iptables、保存它们并重新启动后,规则就会恢复。
我努力了:
$ sudo iptables -t nat -D PREROUTING 2
$ sudo iptables -t nat -D PREROUTING 1
$ sudo iptables-save
这种方法暂时有效。此时 iptables 全部为空。然后我重新启动:
$ sudo reboot
重启后我得到:$ sudo iptables -L -n -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
REDIRECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 redir ports 8069
REDIRECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 redir ports 8070
其余链条均为空。
我在配置文件中将 systemd 日志级别设置为 DEBUG,虽然启动时有数千行内容,但我没有看到任何grep
引用 iptables 或 PREROUTING 的内容(主要是使用)。
我正在运行 Ubuntu 18.04.1 LTS。
我运行了$ sudo grep -rnw 'etc/init.d/' -e 'PREROUTING'
,但没有返回任何结果。
我运行了$ sudo grep -rnw 'etc/init.d/' -e '8069'
,但没有返回任何结果。
/etc/rc.local
不存在,所以它不会从那里运行。
我还能在哪里找到这个?
答案1
要修复您的情况netfilter-persistent
,请安装然后使用之前的命令再次删除这些规则。
现在要iptables
重新加载并及时了解 iptables 规则的新状态,您可以执行以下操作:
sudo iptables-save > /etc/iptables/rules.v4
sudo ip6tables-save > /etc/iptables/rules.v6 # for ipv6
或者:
sudo dpkg-reconfigure iptables-persistent