![如何在路由决策进入默认链之前使用 iptables 转移连接或数据包](https://linux22.com/image/716095/%E5%A6%82%E4%BD%95%E5%9C%A8%E8%B7%AF%E7%94%B1%E5%86%B3%E7%AD%96%E8%BF%9B%E5%85%A5%E9%BB%98%E8%AE%A4%E9%93%BE%E4%B9%8B%E5%89%8D%E4%BD%BF%E7%94%A8%20iptables%20%E8%BD%AC%E7%A7%BB%E8%BF%9E%E6%8E%A5%E6%88%96%E6%95%B0%E6%8D%AE%E5%8C%85.png)
在数据包端口(443)进入防火墙之前,我想将服务器(443)的传入数据包转移到输入链,然后进入 FORWARD 链,这样传入的数据包 100.43.xx.xx --sport 443 就会发送到 FORWARD 而不是输入链,这是我的 nf_conntrack
tcp 6 431977 ESTABLISHED src=192.168.xx.xx dst=100.43.xx.xx sport=33575 dport=443
src=100.43.xx.xx dst=192.168.xx.xx sport=443 dport=33575 [ASSURED] mark=0 use=1
如何在 OUTPUT、FORWARD、POST 和 PREROUTING CHAIN 中配置此项
我的 iptables 规则
root@kali:~#iptables-save
-A POSTROUTING -o dms0 -j MASQUERADE
-A INPUT -i dms0 -p tcp -s 100.43.xx.xx --sport 443 -j DROP
-A INPUT -i dms0 -p udp -m multiport --sport 22,443,1080 -j ACCEPT
-A INPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
root@kali:~#
答案1
ORIGINAL_DESTINATION='100.43.1.1'
NEW_DESTINATION='100.43.1.2'
iptables -t nat -A PREROUTING -d "$ORIGINAL_DESTINATION" -p tcp --dport 443 \
-j DNAT --to-destination "$NEW_DESTINATION"