У меня есть сервер 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, он по какой-то причине не работал.
Предположим, что:
На хосте - 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>
...