Я запускаю машину с Ubuntu, которая через libvirt размещает несколько гостевых виртуальных машин (также Ubuntu). Гости могут получить доступ к Интернету, в то время как хост может получить доступ только к локальной сети, включая шлюз. Это кажется странным, и я понятия не имею, что может быть причиной.
Я не могу вспомнить, где на этом пути эта проблема возникла первой или какие изменения вызвали ее. Поэтому я просто описываю текущую ситуацию в терминах некоторой конфигурации и вывода:
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 a.b.c.1 0.0.0.0 UG 0 0 0 eth0
a.b.c.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
a.b.c.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 br0
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
Это, кажется, говорит в основном то же самое:
$ ip route show
default via a.b.c.1 dev eth0 proto static
a.b.c.0/24 dev br0 scope link
a.b.c.0/24 dev eth0 proto kernel scope link src a.b.c.38 metric 1
169.254.0.0/16 dev br0 scope link metric 1000
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
/ etc / network / interfaces:
auto lo
iface lo inet loopback
auto br0
iface br0 inet static
address a.b.c.38
netmask 255.255.255.0
network a.b.c.0
broadcast a.b.c.255
gateway a.b.c.1
dns-nameserver XXX.XXX.XXX.XXX XXX.XXX.XXX.XXX XXX.XXX.XXX.XXX
bridge_ports all
bridge_stp yes
bridge_fd 0
post-up /sbin/ethtool -s eth0 wol g
post-down /sbin/ethtool -s eth0 wol g
Эта команда не выполняется:
$ sudo ifdown eth0 && sudo ifup eth0
ifdown: interface eth0 not configured
Ignoring unknown interface eth0=eth0.
Другая команда, касающаяся моста:
$ brctl show
bridge name bridge id STP enabled interfaces
br0 8000.14dae9726e93 no eth0
vnet0
vnet1
vnet2
virbr0 8000.000000000000 yes
Это кажется подозрительным:
$ arp -n
Address HWtype HWaddress Flags Mask Iface
a.b.c.50 (incomplete) eth0
a.b.c.63 (incomplete) eth0
a.b.c.1 ether 00:00:0c:07:ac:3d C br0
a.b.c.63 ether 4c:72:b9:8f:b8:6c C br0
a.b.c.50 (incomplete) br0
a.b.c.40 ether 52:54:00:2f:79:ac C br0
a.b.c.39 ether 00:25:90:7c:f8:94 C br0
a.b.c.1 (incomplete) eth0
a.b.c.48 ether 3c:07:54:13:7c:55 C br0
a.b.c.2 ether f0:f7:55:2a:15:00 C br0
Прежде всего, /etc/network/interfaces
определяет br0
интерфейс, но не eth0
интерфейс, таким образом, Вы, конечно, ожидали бы ifup eth0
перестать работать. Вы могли попробовать к ifdown br0; ifup br0
. Вы ожидали бы видеть маршрут по умолчанию в своей системе, выходящей br0
а не eth0
, учитывая Вашу конфигурацию.
eth0
не должен иметь никакого присвоенного IP-адреса.
Примечание, что перевод в нерабочее состояние моста и может прервать доступ в Интернет от Ваших виртуальных машин, таким образом, что они должны быть перезапущены (я не уверен, будет ли это или не, но я не могу протестировать это в данный момент).
Кажется, была внешняя причина. Коммутируемая сеть была настроена способом, который не выполняет STP (Протокол связующего дерева) и для этого разъединяет порты, которые отправляют пакеты STP. В сетевой конфигурации bridge_stp yes
ведомый к передающим пакетам тезисов. Однако неясно, как гости VM могли все еще общаться с внешним Интернетом. Так или иначе проблема теперь решена - Спасибо!