Мне нужно запустить два хоста ESXi на KVM и назначить им разные внешние IP-адреса, видимые для внешней сети. Желаемая топология:
ESXI ESXI
↓ ↓
KVM KVM
↓ ↓
vIF vIF
(own ip) (own ip)
↓ ↓
Physical NIC
↓
External Net
Это удобно с другими хостами, так как два виртуальных интерфейса с мостом с моделью vNIC, установленной на устройство Virtio, помогут. Но модель Virtio в качестве сетевой карты не поддерживается ESXi и не загружается с жалобами на то, что сетевой адаптер не обнаружен.
Есть ли способ заставить виртуальные интерфейсы работать с ESXi на KVM? Я попытался использовать E1000 в качестве сетевой карты, но не смог подключить ESXi к внешней сети.
Вот конфиг, который я пробовал. Никто работал:
<interface type='bridged'>
<source bridge='br0'/>
<model type='virtio'/> #ESXi won't boot due to no adapter detected
</interface>
<interface type='bridged'>
<source source='br0' />
<model type='e1000'/> #ESXi boots but no network connectivity
</interface>
<interface type='direct'>
<source dev='br0' mode='bridged' />
<model type='e1000'/> #ESXi boots but no network connectivity
</interface>
<interface type='direct'>
<source dev='br0' mode='passthrough' />
<model type='e1000'/> #ESXi boots but no network connectivity
</interface>
#Not applicable to my requirements as physical NIC would be passed to KVM
<interface type='direct'>
<source dev='enp2s0:0' mode='passthrough' />
<model type='e1000'/>
</interface>
<interface type='direct'>
<source dev='br0' mode='bridged' />
<model type='e1000'/> #ESXi boots but no network connectivity
</interface>
Вот мои интерфейсы:
br0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::b8ca:7bff:fe23:e847 prefixlen 64 scopeid 0x20<link>
ether ba:ca:7b:23:e8:47 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4 bytes 300 (300.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp0s26u1u6: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.9 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::3be6:18f3:cdd7:d837 prefixlen 64 scopeid 0x20<link>
ether a0:ce:c8:01:75:ef txqueuelen 1000 (Ethernet)
RX packets 25284 bytes 1737100 (1.6 MiB)
RX errors 0 dropped 6860 overruns 0 frame 0
TX packets 25208 bytes 29421441 (28.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.6 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::ca2d:afad:d824:1205 prefixlen 64 scopeid 0x20<link>
ether 90:2b:34:9a:bf:67 txqueuelen 1000 (Ethernet)
RX packets 3375628 bytes 4511208522 (4.2 GiB)
RX errors 0 dropped 3301 overruns 0 frame 0
TX packets 1832807 bytes 847946426 (808.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 18
enp2s0:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255
ether 90:2b:34:9a:bf:67 txqueuelen 1000 (Ethernet)
device interrupt 18
Понятно, что virtio-net не работает с ESXi, поскольку они вряд ли позаботятся о предоставлении драйверов для сетевой карты, которые актуальны только для nested-virt. E1000 - это стандартный сетевой адаптер, поэтому я вполне ожидаю, что это сработает. Всегда есть вероятность, что какая-то ошибка в эмуляции QEMU сделает его несовместимым с ESXi.
В следующем сообщении блога предлагается попробовать модель сетевого адаптера vmxnet3 с QEMU.
https://xrsa.net/2014/08/25/running-vmware-esxi-under-ovirt/
Это паравиртуализированная модель сетевого адаптера vmware, которую также поддерживает QEMU.
Вы начали с этой конфигурации, которая в остальном верна, но ESXi не может использовать virtio NIC:
<interface type='bridged'>
<source bridge='br0'/>
<model type='virtio'/> #ESXi won't boot due to no adapter detected
</interface>
Но по какой-то причине вы, похоже, никогда просто не меняли тип модели NIC на e1000. и не внес никаких других изменений. Все остальные настройки, которые вы пробовали, имеют правильную модель сетевого адаптера, но другие сломанный или неподходящие настройки.
Конечно, вы можете (и, вероятно, должны) также просто использовать тип сетевой карты vmxnet3, который уже много лет прекрасно поддерживается в libvirt и qemu.
Итак, меняйте только тип модели и больше ничего не меняйте.