Два сетевых адаптера для одного гостя 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