Назад | Перейти на главную страницу

Мост systemd для ВМ + несколько статических IP-адресов

У меня есть сервер Ubuntu 18.04 с 3 общедоступными IP-адресами. Основной IP-адрес уже настроен.

Я хочу настроить IP2 и IP3. IP2 должен использоваться для домена SSL, а IP3 для виртуальной машины (qemu libvirt). Проблема (для меня) в том, что предыдущие версии Ubuntu использовали выскочку, и я смог ее настроить, но в текущей версии есть systemd, и я не могу с этим разобраться.

Раньше я использовал следующие инструкции для настройки, и все работало нормально: https://wiki.hetzner.de/index.php/Netzkonfiguration_Debian/en#Routed_.28brouter.29

Теперь, с systemd, это файл конфигурации сети (только с 1 IP), с которого я начал:

# /etc/systemd/network/10-eno1.network
[Match] 
Name=eno1 

[Network]
Gateway=IP_GATEWAY

[Address] 
Address=IP1
Peer=IP_GATEWAY/32 

Добавить IP2 (для SSL) просто, поскольку для этого просто требуется дополнительная секция [Address] в файле выше.

Что касается IP3, я предполагаю, что для маршрутизации IP3 на мою виртуальную машину мне нужно создать мост, как в исходном руководстве. Итак, при попытке настроить мост qemu / libvirt для виртуальной машины я получил нечто очень похожее на эту конфигурацию: https://bbs.archlinux.org/viewtopic.php?id=193994 т.е. - устройство br0 + eno1 добавлено в мост + настроить мост, как указано выше

Но, как и в приведенном выше потоке, сервер становится недоступным (не может входить / выходить ping), и вывод диагностических команд почти такой же.

Есть предложения по настройке IP3 для использования с виртуальной машиной?

Мне удалось найти решение самостоятельно. Это заняло у меня слишком много времени, потому что, когда я тестировал его в виртуальном KVM, он по какой-то причине не работал.

Предположим, что:

  • IP1 - основной IP моего сервера
  • IP2 - дополнительный IP-адрес, используемый для SSL-сертификата моего сайта
  • IP3 - дополнительный IP-адрес, используемый для моей виртуальной машины
  • eno1 - мой физический интерфейс Ethernet

На хосте - 3 файла:

# /etc/systemd/network/10-virbr1.netdev
[NetDev]
Name=virbr1
Kind=bridge
MACAddress=00:1e:67:ad:8d:12

[Bridge]
STP=false

# /etc/systemd/network/20-eno1.network
[Match]
Name=eno1

[Network]
Bridge=virbr1

# /etc/systemd/network/30-virbr1.network
[Match]
Name=virbr1

[Network]
Gateway=IP_GATEWAY

[Address]
Address=IP1
Peer=IP_GATEWAY/32

[Address]
Address=IP2
Peer=IP_GATEWAY/32

На виртуальной машине (некоторые старые Ubuntu - не используют systemd):

# /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address IP3
    netmask 255.255.255.255
    gateway IP_GATEWAY
    pointopoint IP_GATEWAY
    dns-nameservers 8.8.8.8 1.1.1.1

Некоторые дополнительные пояснения: MACAddress = 00: 1e: 67: ad: 8d: 12 было необходимо, потому что моя хостинговая компания (Hetzner) выполняет некоторую фильтрацию MAC-адресов, поэтому мост должен иметь MAC-адрес физической карты Ethernet.

По той же причине у виртуальной машины должен быть определенный MAC-адрес, который вы можете сгенерировать в панели управления сервером Hetzner. В моем случае вывод команды "virsh dumpxml my-vm" выглядит так:

...
<interface type='bridge'>
      <mac address='00:50:56:00:53:E1'/>
      <source bridge='virbr1'/>
      <target dev='vnet0'/>
      <model type='virtio'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
...