Jump to content
Калькуляторы

объединить 2 виртуалки двух хостов в Хетзнер

Всем привет!
Имею 2 VDS на Хетзнере. На обеих стоят виртуальные машины (на promox). Виртуалки убунту 20.04. Два хоста соединены между собой через vswith. Между ними соединение имеется. Нужно через них соединить виртуалки. Если тупо на виртуалках создать vlan, то связь между машинами есть, но хетзнер ругается на левые Мак-адреса виртуалок, т.е. в сети должны быть только мак-адреса хостов. Соединение должно идти через хосты.
Настройки хостов:
1.

 

source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
iface lo inet6 loopback
auto enp0s31f6
iface enp0s31f6 inet static  - внешка
  address 42.4.96.45
  netmask 255.255.255.224
  pointopoint 42.4.96.33
  gateway 42.4.96.33
  # route 42.4.96.32/27 via 42.4.96.33
#  up route add -net 42.4.96.32 netmask 255.255.255.224 gw 42.4.96.33 dev enp0s31f6

iface enp0s31f6.4000 inet manual - wswitch
auto vmbr4000
iface vmbr4000 inet manual
  bridge-ports enp0s31f6.4000
  bridge-stp off
  bridge-fd 0
  mtu 1400
  up ip addr add 192.168.100.3/24 dev vmbr4000
  echo "1 vswitch" >> /etc/iproute2/rt_tables
#  post-up echo 1 > /proc/sys/net/ipv4/ip_forward
#  post-up iptables -t nat -A POSTROUTING -s '192.168.100.0/24' -o enp0s31f6.4000 -j MASQUERADE
#  post-down iptables -t nat -D POSTROUTING -s '192.168.100.0/24' -o enp0s31f6.4000 -j MASQUERADE


iface enp0s31f6 inet6 static
        address 2a01:4f8:172:10de::2/64
        gateway fe80::1

auto vmbr1 - сеть виртуальной машины
iface vmbr1 inet static
        address 192.168.1.3/24
        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.1.0/24' -o enp0s31f6 -j MASQUERADE
        post-down iptables -t nat -D POSTROUTING -s '192.168.1.0/24' -o enp0s31f6 -j MASQUERADE

 

2 хост:

 

auto lo
iface lo inet loopback
iface lo inet6 loopback

auto enp0s31f6
iface enp0s31f6 inet static
  address 136.201.55.223
  netmask 255.255.255.192
  pointopoint 136.201.55.193
  gateway 136.201.55.193
  # route 136.201.55.192/26 via 136.201.55.193
#  up route add -net 136.201.55.192 netmask 255.255.255.192 gw 136.201.55.193 dev enp0s31f6

iface enp0s31f6.4000 inet manual
auto vmbr4000
iface vmbr4000 inet manual
  bridge-ports enp0s31f6.4000
  bridge-stp off
  bridge-fd 0
  mtu 1400
  up ip addr add 192.168.100.2/24 dev vmbr4000
#  post-up iptables -t nat -A POSTROUTING -s '192.168.100.0/24' -o enp0s31f6 -j MASQUERADE
#  post-down iptables -t nat -D POSTROUTING -s '192.168.100.0/24' -o enp0s31f6 -j MASQUERADE

iface enp0s31f6 inet6 static
        address 2a01:4f8:172:10de::2/64
        gateway fe80::1

auto vmbr1
iface vmbr1 inet static
        address 192.168.1.2/24
        bridge-ports none
        bridge-stp off
        bridge-fd 0
#echo "1 vswitch" >> /etc/iproute2/rt_tables
        post-up echo 1 > /proc/sys/net/ipv4/ip_forward

        post-up iptables -t nat -A POSTROUTING -s '192.168.1.0/24' -o enp0s31f6 -j MASQUERADE
        post-down iptables -t nat -D POSTROUTING -s '192.168.1.0/24' -o enp0s31f6 -j MASQUERADE

 

Виртуалки имеют интернет через хост используя MASQUERADE - на сетевом интерфейсе не должно быть маков от виртуалок.

Адреса виртуалок примерно такие:

 

network:
  ethernets:
    ens18:
      addresses:
      - 192.168.1.47/24
      gateway4: 192.168.1.3
      nameservers:
        addresses:
        - 8.8.8.8
        search: []
    ens19:
      addresses:
      - 192.168.100.47/24 - если добавить такой интерфейс на обеих виртуалках, то все работает, но tcpdump обнаруживается мак виртуалок
      gateway4: 192.168.100.2
      routes:
      - to: 192.168.100.0/24
        via: 192.168.100.2
  version: 2


и
 

# This is the network config written by 'subiquity'
network:
  ethernets:
    ens18:
      addresses:
      - 192.168.1.139/24
      gateway4: 192.168.1.2
      nameservers:
        addresses:
        - 8.8.8.8
        search: []

 

Пробовал примерно так на 1-м хосте:

 

-A POSTROUTING -s 192.168.1.47/24 -d 192.168.1.139/24 -o enp0s31f6.4000 -j MASQUERADE
-A PREROUTING -i enp0s31f6.4000 -j DNAT --to 192.168.1.47


И так на 2-м:
 

-A POSTROUTING -s 192.168.1.139/24 -d 192.168.1.47/24 -o enp0s31f6.4000 -j MASQUERADE
-A PREROUTING -i enp0s31f6.4000 -j DNAT --to 192.168.1.139

 

Но естественно не сработало. Если на виртуалках добавить сеть 192.168.100.0, то они соединяются миную хост и на внешних интерфейсах появляется мак-адреса виртуалок. Подскажите пожалуйста как правильно настроить? Заранее благодарен!

Edited by tarabukinivan

Share this post


Link to post
Share on other sites

Обычно, если есть виртуализация, поднимаются на обоих хостах виртуальные роутеры, хоть Mikrotik CHR. Физический порт отдается в отдельный виртуальный свитч только для виртуального роутера (хоста в нём не будет), и делается еще один виртуальный свитч без физических портов, в котором торчат и хост, и второй адаптер роутера, и виртуалки. Между роутерами промежуточная сеть, все работает через L3, NAT не нужен. Однако, если реально надо прокачивать в скорость физического порта, то решение не подойдет, выжимать удается процентов 80 в лучшем случае - издержки виртуализации.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.