Xen: не может получить Dom0 и DomU для проверки связи друг с другом
Мы установили конфигурацию Xen (4.1) и не можем установить взаимодействие Dom0 и DomU (ping eachother). DomU могут пинговать друг друга, но не Dom0, а Dom0 не может пинговать DomU. Мы попробовали много разных вещей, следуя тому, что могли найти в сети, в том числе какое-то решение, которое было предложено на этом сайте (см. Ниже), но мы застряли...
Вот наша конфигурация: у нас есть два гостевых домена:
- VM1, с ID 3
- test2, с ID 4
Мы пытаемся связать их мостовым способом, как в http://wiki.xen.org/wiki/XenNetworking, но нам не удалось это сделать.
Вот ifconfigs:
Из Dom0:
# ifconfig
eth0 Link encap:Ethernet HWaddr 00:26:22:45:33:59
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:35 Base address:0xc000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:460 errors:0 dropped:0 overruns:0 frame:0
TX packets:460 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:35512 (35.5 KB) TX bytes:35512 (35.5 KB)
lxcbr0 Link encap:Ethernet HWaddr 9a:b8:f4:95:9f:36
inet addr:10.0.3.1 Bcast:10.0.3.255 Mask:255.255.255.0
inet6 addr: fe80::98b8:f4ff:fe95:9f36/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:62 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:10287 (10.2 KB)
wlan0 Link encap:Ethernet HWaddr 70:1a:04:0d:09:74
inet6 addr: fe80::721a:4ff:fe0d:974/64 Scope:Link
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:1 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:66 (66.0 B) TX bytes:0 (0.0 B)
xenbr0 Link encap:Ethernet HWaddr 00:26:22:45:33:59
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
С ВМ1:
VM1:~# ifconfig
eth0 Link encap:Ethernet HWaddr 00:16:3E:22:99:77
inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::216:3eff:fe22:9977/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1478 errors:0 dropped:0 overruns:0 frame:0
TX packets:71 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:286514 (279.7 KiB) TX bytes:5330 (5.2 KiB)
Interrupt:26
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:15 errors:0 dropped:0 overruns:0 frame:0
TX packets:15 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1680 (1.6 KiB) TX bytes:1680 (1.6 KiB)
Из test2:
test2:~# ifconfig
eth0 Link encap:Ethernet HWaddr 00:16:3E:6A:81:FF
inet addr:192.168.1.203 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::216:3eff:fe6a:81ff/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1278 errors:0 dropped:0 overruns:0 frame:0
TX packets:56 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:242526 (236.8 KiB) TX bytes:4488 (4.3 KiB)
Interrupt:26
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:6 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:672 (672.0 b) TX bytes:672 (672.0 b)
Вот также наш /etc/network/interfaces:
auto lo
iface lo inet loopback
auto xenbr0
iface xenbr0 inet static
bridge_ports eth0
address 192.168.1.1
broadcast 192.168.1.255
netmask 255.255.255.0
gateway 192.168.1.0
auto eth0
iface eth0 inet manual
И вот результат команды "brctl show" из Dom0:
# brctl show
bridge name bridge id STP enabled interfaces
lxcbr0 8000.feffffffffff no vif3.0
vif4.0
xenbr0 8000.002622453359 no eth0
Что мы пробовали до сих пор:
присвоение IP-адреса eth0 из Dom0:
ifconfig eth0 192.168.1.1 маска сети 255.255.255.0
мы пытались следовать этому ответу. Сетевой мост в dom0 не может пропинговать domU, но у нас нет интерфейса eth1, и никакой интерфейс не будет работать.
Любое предложение, помощь?
Спасибо за ответы, brctl addif... не работает.
Вот файл конфигурации VM1:
kernel = '/boot/vmlinuz-3.2.0-33-generic'
ramdisk = '/boot/initrd.img-3.2.0-33-generic'
vcpus = '1'
memory = '128'
#
# Disk device(s).
#
root = '/dev/xvda2 ro'
disk = [
'file:/home/xen/domains/VM1/disk.img,xvda2,w',
'file:/home/xen/domains/VM1/swap.img,xvda1,w',
]
#
# Physical volumes
#
#
# Hostname
#
name = 'VM1'
#
# Networking
#
vif = [ 'ip=192.168.1.2,mac=00:16:3E:22:99:77' ]
#
# Behaviour
#
on_poweroff = 'destroy'
on_reboot = 'restart'
on_crash = 'restart'
2 ответа
О, мой, такой старый... Но так как я попал сюда, пытаясь найти решение, вот один. Я думаю, что ваша проблема в "ip=192.168.1.2" в вашей строке VIF, но если я ошибаюсь, ответ бесполезен. И даже если я прав, это бесполезно для людей с немного другим конфигом. Поэтому длинная версия:
Конфигурация сети DomU (все остальное не имеет значения): vif=['bridge=xenbr0']
Мост настроен через фиктивный интерфейс, составленный следующим образом (это команды, выполняемые от имени пользователя root):
# modprobe dummy
# ifconfig dummy0 up
# brctl addbr xenbr0
# brctl addif xenbr0 dummy0
Вот как это выглядит после запуска вашей виртуальной машины (вы можете увидеть виртуальную машину vif16.0, подключенную к вашему мосту):
# brctl show
bridge name bridge id STP enabled interfaces
xenbr0 8000.1a088b6b402f no dummy0
vif16.0
Я использую DHCP, но вы можете назначить IP-адреса вручную. Xenbr0 для Dom0 и eth0 под DomU для DomU. Не назначайте IP-адреса членам вашего моста! Это важно.
ifconfig для Dom0 выглядит следующим образом (убрана статистика, чтобы сделать ее менее громоздкой):
dummy0 Link encap:Ethernet HWaddr 1a:08:8b:6b:40:2f
inet6 addr: fe80::1808:8bff:fe6b:402f/64 Scope:Link
UP BROADCAST RUNNING NOARP MTU:1500 Metric:1
vif16.0 Link encap:Ethernet HWaddr fe:ff:ff:ff:ff:ff
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
xenbr0 Link encap:Ethernet HWaddr 1a:08:8b:6b:40:2f
inet addr:192.168.2.1 Bcast:192.168.2.255 Mask:255.255.255.0
inet6 addr: fe80::1808:8bff:fe6b:402f/64 Scope:Link
И из DomU выглядит так:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.2.21 netmask 255.255.255.0 broadcast 192.168.2.255
inet6 fe80::216:3eff:fe25:e843 prefixlen 64 scopeid 0x20<link>
Пинг Дом0:
PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data.
64 bytes from 192.168.2.1: icmp_seq=1 ttl=64 time=0.238 ms
64 bytes from 192.168.2.1: icmp_seq=2 ttl=64 time=0.279 ms
А для доступа в интернет (моя конфигурация по сути NAT, у вас должна быть возможность доступа к Интернету изначально), может потребоваться включение NAT следующим образом:
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 ! -d 192.168.2.0/24 -j MASQUERADE
Для устранения неисправностей используйте tcpdump -v -i xenbr0
, Это очень помогает, так как успешный Ping требует, чтобы ваш пакет вышел и вернулся, поэтому не дает никакого представления о том, когда он потерян - при выходе или возвращении.
В вашем конфигурационном файле не указан мост для подключения вашего DomU. Вы можете указать мост в разделе VIF:
vif = [ 'mac=00:16:3E:22:99:77,bridge=xenbr0' ]
Вы также можете указать IP-адрес и другую информацию. См. Параметры конфигурации Xen.
Указание моста в разделе vif заставляет Xen запускать сценарий на Dom0 после того, как DomU назначены виртуальные интерфейсы. Это добавляет виртуальный интерфейс к указанному мосту.
Обратите внимание, что для настройки этой сети могут потребоваться дополнительные настройки вашей сети. Использование правильных параметров конфигурации Xen поможет упростить все остальное.