无法从iptables NAT后面的本地网络连接到外部IP

时间:2016-11-29 13:54:54

标签: linux networking iptables nat proxmox

我们拥有Proxmox虚拟环境,几个虚拟机。主机服务器有多个外部IP地址。我们使用iptables将某些外部IP +端口的连接转发到选定的虚拟机。我们使用NAT来从VM传出连接。

到目前为止一切正常。当VM尝试连接到主机外部IP时,会出现问题。

据我所知,我们需要的是发夹NAT(NAT反射)。但是我们无法通过我们发现的指令来实现它。

我们的iptables规则:

uncaughtException

1.2.3.4 - 主机的外部IP

10.0.60.10,10.0.60.20 - 虚拟机的内部IP

10.0.0.1 - 主机的内部IP

2 个答案:

答案 0 :(得分:1)

解决了!我是个错字。

这是发夹NAT的有效解决方案:

# === FIREWALL ===
*filter
:INPUT ACCEPT [3174:1555907]
:FORWARD ACCEPT [2521:547542]
:OUTPUT ACCEPT [2753:2039466]
:fail2ban-ssh - [0:0]

# allow returnig packets
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# drop all other
-A INPUT -p tcp -d 1.2.3.4/32 -j DROP

COMMIT

# === NAT ===

*nat
:PREROUTING ACCEPT [140854:7345476]
:POSTROUTING ACCEPT [2635:170444]
:OUTPUT ACCEPT [25596:1617170]

# INCOMING
-A PREROUTING  -d 1.2.3.4/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.0.60.10:80
-A PREROUTING  -d 1.2.3.4/32 -p tcp -m tcp --dport 443 -j DNAT --to-destination 10.0.60.10:443
-A PREROUTING  -d 1.2.3.4/32 -p tcp -m tcp --dport 8080 -j DNAT --to-destination 10.0.60.20:80

# OUTGOING
-A POSTROUTING -s 10.0.0.0/16 -d 10.0.0.0/16 -p tcp -j SNAT --to-source 10.0.0.1
-A POSTROUTING -o vmbr0 -j SNAT --to-source 1.2.3.4

COMMIT

答案 1 :(得分:0)

iptables -A POSTROUTING -t nat -s 10.0.0.0/16 -d 1.2.3.4 -j MASQUERADE