Сейчас я пытаюсь настроить Proxmox для работы с несколькими публичными IP через NAT. У меня несколько ВМ, и базовая настройка NAT работает. То есть я могу использовать все ВМ через IP "proxmox", который назначен на vmbr0. Вот моя текущая конфигурация:
Код:
VM100 имеет внутренний IP 10.0.2.100 и подключен через мост vmbr3.
VM101 имеет внутренний IP 10.0.2.101 и тоже подключен через vmbr3.
и так далее...
Моя NAT-конфигурация сейчас пробрасывает только 212.xx.xx.88:80 на одну ВМ и пробрасывает порты 40022, 40122, 40222 на ssh-порты ВМ. Конфиг сети /etc/network/interfaces на хосте Proxmox:
Код:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
auto vmbr0
iface vmbr0 inet static
address 212.xx.xx.88
netmask 255.255.255.0
gateway 212.x.xx.1
bridge_ports eth0
bridge_stp off
bridge_fd 0
auto vmbr3
iface vmbr3 inet static
address 10.0.2.254
netmask 255.255.255.0
bridge_ports none
bridge_stp off
bridge_fd 0
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -s '10.0.2.0/24' -o vmbr0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '10.0.2.0/24' -o vmbr0 -j MASQUERADE
post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 40022 -j DNAT --to 10.0.2.100:22
post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 40022 -j DNAT --to 10.0.2.100:22
post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 40122 -j DNAT --to 10.0.2.101:22
post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 40122 -j DNAT --to 10.0.2.101:22
post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 40222 -j DNAT --to 10.0.2.102:22
post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 40222 -j DNAT --to 10.0.2.102:22
post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 80 -j DNAT --to 10.0.2.101:80
post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 80 -j DNAT --to 10.0.2.101:80
Эта конфигурация сейчас работает как надо. Теперь я пытаюсь добавить вторичный публичный IP и использовать его для некоторых ВМ, но не для всех. Я пытался просто сделать так, чтобы "пробросить" VM100 через вторичный IP:
Код:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
auto vmbr0
iface vmbr0 inet static
address 212.xx.xx.88
netmask 255.255.255.0
gateway 212.x.xx.1
bridge_ports eth0
bridge_stp off
bridge_fd 0
auto vmbr1
iface vmbr1 inet static
address 212.xx.xx.98
netmask 255.255.255.0
bridge_ports eth0
bridge_stp off
bridge_fd 0
auto vmbr3
iface vmbr3 inet static
address 10.0.2.254
netmask 255.255.255.0
bridge_ports none
bridge_stp off
bridge_fd 0
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
# VM100
post-up iptables -t nat -A POSTROUTING -s '10.0.2.100' -o vmbr1 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '10.0.2.100' -o vmbr1 -j MASQUERADE
post-up iptables -t nat -A PREROUTING -i vmbr1 -p tcp --dport 40022 -j DNAT --to 10.0.2.100:22
post-down iptables -t nat -D PREROUTING -i vmbr1 -p tcp --dport 40022 -j DNAT --to 10.0.2.100:22
# остальные
post-up iptables -t nat -A POSTROUTING -s '10.0.2.0/24' -o vmbr0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '10.0.2.0/24' -o vmbr0 -j MASQUERADE
post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 40122 -j DNAT --to 10.0.2.101:22
post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 40122 -j DNAT --to 10.0.2.101:22
post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 40222 -j DNAT --to 10.0.2.102:22
post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 40222 -j DNAT --to 10.0.2.102:22
post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 80 -j DNAT --to 10.0.2.101:80
post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 80 -j DNAT --to 10.0.2.101:80
Но это вообще не работает. VM100 больше не доступна — остальные ВМ работают. Как сделать так, чтобы всё работало, как надо? Спасибо, Себастьян.
Код:
VM100 имеет внутренний IP 10.0.2.100 и подключен через мост vmbr3.
VM101 имеет внутренний IP 10.0.2.101 и тоже подключен через vmbr3.
и так далее...
Моя NAT-конфигурация сейчас пробрасывает только 212.xx.xx.88:80 на одну ВМ и пробрасывает порты 40022, 40122, 40222 на ssh-порты ВМ. Конфиг сети /etc/network/interfaces на хосте Proxmox:
Код:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
auto vmbr0
iface vmbr0 inet static
address 212.xx.xx.88
netmask 255.255.255.0
gateway 212.x.xx.1
bridge_ports eth0
bridge_stp off
bridge_fd 0
auto vmbr3
iface vmbr3 inet static
address 10.0.2.254
netmask 255.255.255.0
bridge_ports none
bridge_stp off
bridge_fd 0
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -s '10.0.2.0/24' -o vmbr0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '10.0.2.0/24' -o vmbr0 -j MASQUERADE
post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 40022 -j DNAT --to 10.0.2.100:22
post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 40022 -j DNAT --to 10.0.2.100:22
post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 40122 -j DNAT --to 10.0.2.101:22
post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 40122 -j DNAT --to 10.0.2.101:22
post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 40222 -j DNAT --to 10.0.2.102:22
post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 40222 -j DNAT --to 10.0.2.102:22
post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 80 -j DNAT --to 10.0.2.101:80
post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 80 -j DNAT --to 10.0.2.101:80
Эта конфигурация сейчас работает как надо. Теперь я пытаюсь добавить вторичный публичный IP и использовать его для некоторых ВМ, но не для всех. Я пытался просто сделать так, чтобы "пробросить" VM100 через вторичный IP:
Код:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
auto vmbr0
iface vmbr0 inet static
address 212.xx.xx.88
netmask 255.255.255.0
gateway 212.x.xx.1
bridge_ports eth0
bridge_stp off
bridge_fd 0
auto vmbr1
iface vmbr1 inet static
address 212.xx.xx.98
netmask 255.255.255.0
bridge_ports eth0
bridge_stp off
bridge_fd 0
auto vmbr3
iface vmbr3 inet static
address 10.0.2.254
netmask 255.255.255.0
bridge_ports none
bridge_stp off
bridge_fd 0
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
# VM100
post-up iptables -t nat -A POSTROUTING -s '10.0.2.100' -o vmbr1 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '10.0.2.100' -o vmbr1 -j MASQUERADE
post-up iptables -t nat -A PREROUTING -i vmbr1 -p tcp --dport 40022 -j DNAT --to 10.0.2.100:22
post-down iptables -t nat -D PREROUTING -i vmbr1 -p tcp --dport 40022 -j DNAT --to 10.0.2.100:22
# остальные
post-up iptables -t nat -A POSTROUTING -s '10.0.2.0/24' -o vmbr0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '10.0.2.0/24' -o vmbr0 -j MASQUERADE
post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 40122 -j DNAT --to 10.0.2.101:22
post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 40122 -j DNAT --to 10.0.2.101:22
post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 40222 -j DNAT --to 10.0.2.102:22
post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 40222 -j DNAT --to 10.0.2.102:22
post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 80 -j DNAT --to 10.0.2.101:80
post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 80 -j DNAT --to 10.0.2.101:80
Но это вообще не работает. VM100 больше не доступна — остальные ВМ работают. Как сделать так, чтобы всё работало, как надо? Спасибо, Себастьян.
