Я удалил старую гостевую 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