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

Автор tarabukinivan, 29 декабря 2021, 20:29:40

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

tarabukinivan

Всем привет!
Имею 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, то они соединяются миную хост и на внешних интерфейсах появляется мак-адреса виртуалок. Подскажите пожалуйста как правильно настроить? Заранее благодарен!