Proxmox VE (проблема маршрутизации и перенаправления портов)

Я установил PVE, я получил три публичных IP-адреса, два из которых находятся в одном диапазоне, третий - в другом диапазоне. Я хотел предоставить хосту PVE один IP-адрес паба, чтобы он был доступен извне, а два других - для виртуальных машин. Я также хотел создать две виртуальные машины с частным IP-адресом и выполнить переадресацию портов. ниже представлена ​​моя конфигурация:

auto lo

iface lo inet loopback

auto eth0
iface eth0 inet static

address  x.x.203.141
netmask  255.255.255.128
pointopoint x.x.203.137
gateway  x.x.203.137
broadcast  x.x.203.255
#post-up echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp


iface eth1 inet manual

    auto vmbr0
    iface vmbr0 inet static

    address x.x.203.141
    netmask 255.255.255.128
    #gateway x.x.203.137
    bridge_ports none
    bridge_stp on
    bridge_fd 0
    bridge_maxwait 0



   iface vmbr1 inet manual
    bridge_ports none
    bridge_stp on
    bridge_fd 0

up ip route add x.x.203.142/32 dev vmbr0  ##IP of the first VM
up ip route add x.x.220.37/32 dev vmbr1   ## IP of the second VMS

auto vmbr2

iface vmbr2 inet static

address 192.168.0.254
netmask 255.255.255.0
bridge_ports none
bridge_stp on
bridge_fd 0

post-up echo 1 > /proc/sys/net/ipv4/ip_forward

post-up iptables -t nat -A POSTROUTING -s '192.168.0.0/24' -o eth0 -j MASQUERADE

post-down iptables -t nat -D POSTROUTING -s '192.168.0.0/24' -o eth0 -j MASQUERADE

, но я теряю внешний пинг для хост-машины. а также со вторыми виртуальными машинами, у которых есть общедоступный IP-адрес с другим диапазоном, у меня очень медленный интернет? Другое дело, что я не могу подключиться по ssh к виртуальной машине с частным IP-адресом извне.

Заранее благодарим за помощь!

0
задан 5 March 2016 в 22:31
1 ответ

Самый простой способ достичь этого - предоставить белые (публичные) IP-адреса виртуальным машинам через мост (не прокси-арп). Вы всё равно сможете использовать межсетевой экран для трафика всех ВМ на хосте, потому что netfilter в Linux поддерживает проверку мостового трафика с помощью правил iptables.

В этом случае конфигурация, вероятно, будет выглядеть следующим образом:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto vmbr0
iface vmbr0 inet static
    address  x.x.203.141
    netmask  255.255.255.128
    pointopoint x.x.203.137
    gateway  x.x.203.137
    broadcast  x.x.203.255
    bridge_ports eth0
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0

auto eth1
iface eth1 inet manual

auto vmbr1
iface vmbr1 inet manual
    bridge_ports eth1
    bridge_stp off
    bridge_fd 0

auto vmbr2
iface vmbr2 inet static
    address 192.168.0.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 '192.168.0.0/24' -o vmbr0 -j MASQUERADE
    post-down iptables -t nat -D POSTROUTING -s '192.168.0.0/24' -o vmbr0 -j MASQUERADE

Вы должны поместить ВМ, которая должна появиться на eth0 в vmbr0, ВМ, которая должна появиться на eth1 в vmbr1, а всё остальное - в vmbr2, любой трафик из этой сети будет маскироваться. Обратите внимание, что у vmbr1 нет IP-адреса, он не нужен, потому что единственная цель этого моста - связать eth1 и виртуальный интерфейс VM. Вся связь с хостом осуществляется через vmbr0.

Я не знаю, зачем вы добавили ключевое слово 'pointtopoint' для eth0. Я сохранил его в vmbr0, но все равно думаю, что это ошибка и не нужно. У вас есть сеть BMA на eth0 с маской /25, она имеет 128 адресов (126 usable), так что 'pointtopoint' (что означает, что у вас только один ровесник) выглядит там неправильно. Я также отключил лямку на всех мостах. Это не очень удобно, потому что вы не будете мостить интерфейсы, которые подключены в другом месте.

В любом случае, tcpdump - ваш лучший друг.

Вы можете настроить прокси-арп вместо моста на первой ВМ (которые появляются на eth0). Я думаю, что это сделает вещи менее надежными, и я советую вам не идти этим путем.

Из вашего описания я делаю вывод, что ваш хост должен иметь только один IP адрес, и этот адрес должен быть виден на eth0, так что eth1 будет ненумерован на хосте (не должен иметь никакого адреса), только VM адрес появится там. Не знаю, можно ли настроить прокси-арп и маршрутизацию в Linux на ненумерованном интерфейсе (тот, который не имеет никакого IP-адреса), поэтому для уточнения этой части мне нужно провести кое-какие исследования самостоятельно

.
0
ответ дан 5 December 2019 в 10:40

Теги

Похожие вопросы