Задача следующая. Имеется система виртуализации proxmox (HOST) установленная на сервере. имеющая два настроенных сетевых интерфейса (external - внешний и internal - внутренний):
vim /etc/network/interfaces
# network interface settings
auto lo
iface lo inet loopback
iface eth0 inet manual
#external interface
auto vmbr0
iface vmbr0 inet static
address 172.16.0.29
netmask 255.255.255.0
gateway 172.16.0.1
bridge_ports eth0
bridge_stp off
bridge_fd 0
#internal interface
iface eth1 inet manual
auto vmbr1
iface vmbr1 inet static
address 192.168.2.185
netmask 255.255.0.0
bridge_ports eth1
bridge_stp off
bridge_fd 0
http://www.ameir.net/blog/archives/55-running-proxmox-behind-a-single-ip-address.html
http://toster.ru/q/23118?utm_source=tm_habrahabr&utm_medium=tm_block&utm_campaign=tm_promo
http://pve.proxmox.com/wiki/Network_Model#Masquerading_.28NAT.29
vim /etc/network/interfaces
# network interface settings
auto lo
iface lo inet loopback
iface eth0 inet manual
#external interface
auto vmbr0
iface vmbr0 inet static
address 172.16.0.29
netmask 255.255.255.0
gateway 172.16.0.1
bridge_ports eth0
bridge_stp off
bridge_fd 0
#internal interface
iface eth1 inet manual
auto vmbr1
iface vmbr1 inet static
address 192.168.2.185
netmask 255.255.0.0
bridge_ports eth1
bridge_stp off
bridge_fd 0
Внутри установлена виртуальная машина Ubuntu 14.04 LTS x64 (GUEST). На неё необходимо пробосить трафик из машины HOST со внешнего интерфейса по определённым портам (22 ssh и 80 web).
Краткая схема:
То есть если внешних ip-адресов только один, а виртуальные машины хочется выбросить во внешнюю сеть, необходимо будет делать проброс портов на сервере виртуализации в GUEST машины.
Создаём в машине HOST (proxmox) виртуальный сетевой интерфейс. В файле interfaces прописываем
auto vmbr0:0
iface vmbr0:0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
После махинаций с сетевыми интерфейсами лучше всего, для применения настроек внесённых в файл intefaces выполнять отключение/подключение его, следующими командами:
# ifdown vmbr0
# ifup vmbr0
Добавляем правила для iptables:
# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o vmbr0 -j MASQUERADE
# iptables -t nat -A PREROUTING -i vmbr0 -p tcp -m tcp --dport 10080 -j DNAT --to-destination 192.168.0.100:80
# iptables -t nat -A PREROUTING -i vmbr0 -p tcp -m tcp --dport 10022 -j DNAT --to-destination 192.168.0.100:22
Первое включает "натирование" трафика на сеть 192.168.0.0/24 с интерфейса vmbr0, т.е. с внешнего интерфейса HOST машины на виртуальную сеть vmbr0:0. Остальные два пробрасывают трафик поступающий на внешний интерфейс vmbr0 на порты 10022 и 10080 в виртуальную машину GUEST (Ubuntu) на интерфейс eth0 на порты 22 и 80 соответственно.
Можно записать данные правила в файл:
# iptables-save > /etc/iptables.rules
и добавить их в настройки интерфейса vmbr0 для машины HOST (отображена часть кода):
iface vmbr0 inet static
pre-up iptables-restore < /etc/iptables.rules
address 172.16.0.29
netmask 255.255.255.0
gateway 172.16.0.1
bridge_ports eth0
bridge_stp off
bridge_fd 0
Они будут загружаться когда перед тем как интерфейс vmbr0 будет "поднят".
И добавляем настройки интерфейса на который будет приходить трафик из HOST машины:
auto eth0
iface eth0 inet static
address 192.168.0.100
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1
dns-nameservers /some ip/
На всякий случай скрин вебморды proxmox где сидит GUEST (matilda1)
Обращаю внимание, в GUEST машине два сетевых интерфейса, один смотрит на внутреннюю сеть (bridge=vmbr1), а второй смотрит на интерфейс vmbr0 HOST машины (bridge=vmbr0).
Использованные материалы:http://www.ameir.net/blog/archives/55-running-proxmox-behind-a-single-ip-address.html
http://toster.ru/q/23118?utm_source=tm_habrahabr&utm_medium=tm_block&utm_campaign=tm_promo
http://pve.proxmox.com/wiki/Network_Model#Masquerading_.28NAT.29

Комментариев нет:
Отправить комментарий