iptables DNAT 发送所有流量,包括本地到 DNAT 端口

iptables DNAT 发送所有流量,包括本地到 DNAT 端口

我目前有以下 iptables 规则:

iptables-save -c
# Generated by iptables-save v1.4.7 on Wed Oct 21 13:24:24 2020
*nat
:PREROUTING ACCEPT [5163:300376]
:POSTROUTING ACCEPT [35:11935]
:OUTPUT ACCEPT [30:11635]
[12:760] -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 10090 
[5:300] -A OUTPUT -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.16.5.67:10090 
COMMIT
# Completed on Wed Oct 21 13:24:24 2020
# Generated by iptables-save v1.4.7 on Wed Oct 21 13:24:24 2020
*filter
:INPUT ACCEPT [24586:5363323]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [41609:7761875]
[13520:2056828] -A INPUT -p tcp -m tcp --dport 10090 -j ACCEPT 
[0:0] -A INPUT -p tcp -m tcp --dport 18080 -j ACCEPT 
[0:0] -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT 
COMMIT
# Completed on Wed Oct 21 13:24:24 2020

它对所有传入流量按预期工作,但它也会将此服务器上的流量发送到 DNAT 地址:端口。我怎样才能改变这一点,以便所有传入流量都是 DNAT,如上所述,但这也将允许我对 http 站点进行curl,而不是发送到 DNAT 地址。

谢谢科布斯

答案1

没关系,我已经解决了这个问题。我需要 PREROUTING 规则,但为了使输出 http 工作,我所要做的就是删除 OUTPUT 规则。

正确的工作方式是所有外部连接都通过 DNAT 到 ip:port。它不仅对所有传入连接执行此操作,而且对所有传出连接执行此操作。传入很好,传出则不好。

相关内容