Назад | Перейти на главную страницу

Мостовая сеть на хосте виртуальной машины и фиксированный NAT

У меня на одном хосте работает Proxmox VE.

Я установил 3 виртуальных моста vmbr[0-2] для удовлетворения моих сетевых потребностей: vmbr0 работает непосредственно на главном интерфейсе для виртуальных машин с общедоступными IP-адресами, vmbr1 позволяет использовать виртуальные машины с NAT, и vmbr2 сеть только для хоста. Скажем, мой основной общедоступный IP-адрес - 12.34.56.78.

Чтобы NAT работал, я настроил следующие iptables набор правил:

-A PREROUTING -d 12.34.56.78 -i vmbr0 -p tcp -m multiport --dports 80,443 -j DNAT --to-destination 192.168.1.101
# and other rules like this one for different ports to different local IPs

-A POSTROUTING -s 192.168.10.0/24 -o vmbr0 -j SNAT --to-source 12.34.56.78

Теперь предположим, что у меня есть виртуальная машина. vmbr1 с IP 192.168.1.102.

Эта машина не может получить доступ к веб-серверу по адресу 192.168.1.101, используя общедоступный IP-адрес 12.34.56.78.

Я изначально думал, что POSTROUTING указанной выше директивы было достаточно для работы фиксированного NAT.

Прочитав канонический Обратная связь с перенаправляемым общедоступным IP-адресом из локальной сети - NAT и несколько других ответов на тот же вариант, я пробовал:

но все равно это не работает.

Идеи?

Спасибо.

Чтобы использовать метод NAT со шпилькой, вам нужно будет ввести следующие команды.

iptables -t nat -A PREROUTING -d 12.34.56.78 -i vmbr1 -p tcp -m multiport --dports 80,443 -j DNAT \
    --to-destination 192.168.1.101   
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o vmbr1 -d 192.168.1.254 -p tcp \
    --dport 80 -j SNAT --to-source 192.168.1.101