Не удается подключиться к внешнему IP из локальной сети за NAT iptables

У нас есть витальная среда Proxmox с несколькими виртуальными машинами. Хост-сервер имеет несколько внешних IP-адресов. Мы используем iptables для переадресации соединений на определенный внешний порт IP+ на выбранную виртуальную машину. И мы используем NAT для исходящих соединений от виртуальных машин.

Пока все работает. Проблема возникает, когда виртуальные машины пытаются подключиться к внешнему IP-адресу хоста, это не работает.

Насколько я понимаю, что нам нужно, это шпилька NAT (NAT отражение). Но мы не можем заставить его работать по инструкциям, которые мы нашли.

Наши правила iptables:

# === 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 -d 10.0.60.10 -s 10.0.0.0/16 -p tcp --dport 80 -j SNAT --to 10.0.0.1
-A POSTROUTING -o vmbr0 -j SNAT --to-source 1.2.3.4

COMMIT

1.2.3.4 - внешний IP хоста

10.0.60.10, 10.0.60.20 - внутренние IP-адреса виртуальных машин

10.0.0.1 - внутренний IP хоста

2 ответа

Решил это! Я был опечатка на моей стороне.

Это рабочее решение для шпильки 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
iptables -A POSTROUTING -t nat -s 10.0.0.0/16 -d 1.2.3.4 -j MASQUERADE
Другие вопросы по тегам