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

Две сетевые карты для одного гостя KVM

Я удалил старую гостевую KVM, и теперь у меня есть запасной IP-адрес. Я теперь назначил это (ранее работал!) IP-адрес другого гостя KVM, например:

virsh # attach-interface my-guest bridge br0 vnet1 00:50:56:00:57:05 --model virtio --persistent

Гостевой XML-файл теперь выглядит так:

virsh # dumpxml my-guest
<domain type='kvm' id='3'>
  <name>my-guest</name>
  ...
  <devices>
    <emulator>/usr/bin/kvm-spice</emulator>
    ...
    <interface type='bridge'>
      <mac address='00:50:56:00:57:04'/>
      <source bridge='br0'/>
      <target dev='vnet0'/>
      <model type='virtio'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </interface>
    <interface type='bridge'>
      <mac address='00:50:56:00:57:05'/>
      <source bridge='br0'/>
      <target dev='vnet1'/>
      <model type='virtio'/>
      <alias name='net1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </interface>
    ...
  </devices>
  ...
</domain>

Из-за вида случайно назначенного слота PCI новый IP-адрес сейчас eth0 а старый eth1.

Я поменял гостя /etc/network/interfaces соответственно:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
# 148.251.73.28 <- new IP address
auto eth0
iface eth0 inet dhcp

# 148.251.73.27 <- old IP address
auto eth1
iface eth1 inet dhcp

После входа в систему меня даже приветствуют этим дружественным сообщением, в котором говорится, что оба интерфейса должны быть настроены правильно, поскольку им автоматически назначаются правильные IP-адреса (на основе MAC-адресов):

System load:  1.54                Users logged in:        0
Usage of /:   22.6% of 448.72GB   IP address for eth0:    148.251.73.28
Memory usage: 12%                 IP address for eth1:    148.251.73.27
Swap usage:   0%                  IP address for docker0: 172.17.42.1
Processes:    207

А теперь проблема: только eth0, новый IP адрес, работает. Я не могу связаться с сервером eth1.

Примечание: у меня есть сервер nginx, который прослушивает 0.0.0.0.

Все эти тесты терпят неудачу:

$ curl --interface eth1 ifconfig.co
$ curl --interface eth1 148.251.73.28   (eth1 -> eth0)
$ curl --interface eth0 148.251.73.27   (eth0 -> eth1)

И как ни странно, это работает:

$ curl --interface eth1 148.251.73.27   (eth1 -> eth1)

Какого черта? Есть ли у кого-нибудь подсказки о том, что могло вызвать это?

И последнее, но не менее важное: /etc/network/interfaces:

# Loopback device:
auto lo
iface lo inet loopback

# device: eth0
auto  br0
iface br0 inet static
  address     148.251.52.150
  broadcast   148.251.52.159
  netmask     255.255.255.224
  gateway     148.251.52.129
  pointopoint 148.251.52.129

  bridge_ports eth0
  bridge_stp off
  bridge_fd 1
  bridge_hello 2
  bridge_maxage 12

  # default route to access subnet
  up route add -net 148.251.52.128 netmask 255.255.255.224 gw 148.251.52.129 br0