动态更改 iptables NAT 规则

动态更改 iptables NAT 规则

我正在尝试不断更改 iptables nat 规则,更准确地说,更改运行时的目标端口。但是,我看到只有流中的第一个数据包到达 nat 表。之后,即使规则已经更改,其余数据包将自动执行与第一个数据包相同的操作。

例如

sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -i eth0 -j REDIRECT --to-port 9999

或者

sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -i eth0 -j DNAT --to-port 9999

仅当规则在流程开始之前存在时,这才会生效。

……

此外,作为补救措施,我尝试按如下方式停止连接跟踪:

sudo iptables -t raw -A PREROUTING -p tcp -m tcp --dport 80 -i eth0 -j NOTRACK 
sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -i eth0 -m conntrack --ctstate UNTRACKED -j REDIRECT --to-port 9999

或者

sudo iptables -t raw -A PREROUTING -p tcp -m tcp --dport 80 -i eth0 -j NOTRACK
sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -i eth0 -m state --state UNTRACKED -j DNAT --to-port 9999

但它不起作用,请帮助我解决这个问题。提前致谢 ...

相关内容