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

Псевдоним IP / виртуальный интерфейс для ESXi на KVM / libvirt

Мне нужно запустить два хоста 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.

Итак, меняйте только тип модели и больше ничего не меняйте.