Невозможно заставить ВМ использовать публичный IP с macvtap / KVM / libvirt

544
pavel_karoukin

Я использую выделенный сервер с несколькими виртуальными машинами KVM. В прошлом у меня был успех, когда я получал отдельный общедоступный IPv4-адрес, привязанный к одной виртуальной машине, с помощью драйвера macvtap, и он работает точно так же, как совершенно независимый сервер.

Я копирую все, что я делаю, для второго общедоступного IPv4, который я получил от поставщика услуг хостинга, но в этот раз я не могу получить доступ к Интернету со второй виртуальной машины с помощью macvtap.

Вот соответствующие ip link showхосты для вновь созданного интерфейса macvtap, когда VM запускается libvirt:

40: macvtap2@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 500 link/ether 52:54:00:35:02:38 brd ff:ff:ff:ff:ff:ff 

И вот ifconfigвывод гостя :

ens10 Link encap:Ethernet HWaddr 52:54:00:35:02:38  inet addr:[PUBLIC IP] Bcast:[BROADCAST IP PROVIDED BY HOSTER] Mask:255.255.255.224 inet6 addr: fe80::5054:ff:fe35:238/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:21 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000  RX bytes:0 (0.0 B) TX bytes:1230 (1.2 KB) 

Вот соответствующий раздел из virsh edit machine:

 <interface type='direct'> <mac address='52:54:00:35:02:38'/> <source dev='eth0' mode='vepa'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/> </interface> 

Когда я бегу, tcpdump -vv host [PUBLIC VM IP]я вижу входящие пакеты, но никогда не отвечаю.

Я ничего не вижу в tcpdump -vv -i ens10выводе виртуальных машин вообще.

Подобная настройка, кажется, работает с другой виртуальной машиной, и я не могу найти, какая разница между двумя может привести к тому, что вторая виртуальная машина работает одинаково. Что-нибудь, что я могу сделать, чтобы отладить это дальше?

1

1 ответ на вопрос

1
pavel_karoukin

Оказалось, что это был вопрос запроса отдельного MAC-адреса для моей виртуальной машины у Хетцнера (моего хостера), а не использования случайно сгенерированного libvirt. Как только я запросил и обновил конфиг, все остальное только начало работать.

Некоторые подробности: https://wiki.hetzner.de/index.php/Virtualisierung/en