У меня проблемы с настройкой KVM w. мостовая сеть в Ubuntu 10.10. Я запускаю свою виртуальную машину через virsh, после этого я вижу процесс kvm и устройство vnet на хост-машине, но новый интерфейс никогда не получает IPv4-адрес, поэтому я не могу использовать виртуальную машину! Ниже приведены данные о том, что я вижу после запуска виртуальной машины.
root@robin-desktop:~# virsh start meerkat
Domain meerkat started
root@robin-desktop:~# ps aux | grep kvm
root 1411 0.0 0.0 0 0 ? S 18:20 0:00 [kvm-irqfd-clean]
119 3436 73.7 3.5 1213320 141076 ? Sl 18:48 0:05 /usr/bin/kvm -S -M pc-0.12 -enable-kvm -m 1024 -smp 1,sockets=1,cores=1,threads=1 -name meerkat -uuid dbf905dd-b05d-5c81-5fe4-ad421cd50ece -nographic -nodefaults -chardev socket,id=monitor,path=/var/lib/libvirt/qemu/meerkat.monitor,server,nowait -mon chardev=monitor,mode=readline -rtc base=utc -boot c -drive file=/home/robin/kvm/meerkat/ubuntu-kvm/tmp6pwohf.qcow2,if=none,id=drive-ide0-0-0,boot=on,format=qcow2 -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 -device virtio-net-pci,vlan=0,id=net0,mac=52:54:00:06:7e:9c,bus=pci.0,addr=0x3 -net tap,fd=40,vlan=0,name=hostnet0 -chardev pty,id=serial0 -device isa-serial,chardev=serial0 -usb -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x4
root 3455 0.0 0.0 11340 872 pts/0 S+ 18:49 0:00 grep --color=auto kvm
root@robin-desktop:~#
root@robin-desktop:~# ifconfig
br0 Link encap:Ethernet HWaddr e0:cb:4e:bb:99:07
inet addr:192.168.1.15 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::e2cb:4eff:febb:9907/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2948 errors:0 dropped:0 overruns:0 frame:0
TX packets:2904 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1285644 (1.2 MB) TX bytes:612230 (612.2 KB)
eth0 Link encap:Ethernet HWaddr e0:cb:4e:bb:99:07
inet6 addr: fe80::e2cb:4eff:febb:9907/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3835 errors:0 dropped:0 overruns:0 frame:0
TX packets:3845 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1817408 (1.8 MB) TX bytes:785533 (785.5 KB)
Interrupt:47 Base address:0x2000
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:63 errors:0 dropped:0 overruns:0 frame:0
TX packets:63 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4869 (4.8 KB) TX bytes:4869 (4.8 KB)
vnet0 Link encap:Ethernet HWaddr fe:54:00:06:7e:9c
inet6 addr: fe80::fc54:ff:fe06:7e9c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:20 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:0 (0.0 B) TX bytes:4137 (4.1 KB)
root@robin-desktop:~#
Немного покопавшись, могут быть подсказки в файле журнала демона:
root@robin-desktop:~# tail -7 /var/log/daemon.log
Dec 1 18:48:55 robin-desktop NetworkManager[3342]: SCPlugin-Ifupdown: devices added (path: /sys/devices/virtual/net/vnet0, iface: vnet0)
Dec 1 18:48:55 robin-desktop NetworkManager[3342]: SCPlugin-Ifupdown: device added (path: /sys/devices/virtual/net/vnet0, iface: vnet0): no ifupdown configuration found.
Dec 1 18:48:55 robin-desktop NetworkManager[3342]: <warn> /sys/devices/virtual/net/vnet0: couldn't determine device driver; ignoring...
Dec 1 18:48:55 robin-desktop modem-manager: (net/vnet0): could not get port's parent device
Dec 1 18:48:56 robin-desktop avahi-daemon[3354]: Joining mDNS multicast group on interface vnet0.IPv6 with address fe80::fc54:ff:fe06:7e9c.
Dec 1 18:48:56 robin-desktop avahi-daemon[3354]: New relevant interface vnet0.IPv6 for mDNS.
Dec 1 18:48:56 robin-desktop avahi-daemon[3354]: Registering new address record for fe80::fc54:ff:fe06:7e9c on vnet0.*.
Пробовал выключить авахи и сетевой менеджер - без разницы.
Есть ли у кого-нибудь опыт подобных проблем? У меня все нормально работало на Ubuntu 9.10!
Спасибо.
Изменить: вот некоторые выходные данные brctl:
root @ robin-desktop: ~ # brctl show
bridge name bridge id STP enabled interfaces
br0 8000.e0cb4ebb9907 no eth0
vnet0
Изменить 2: это файл сетевого интерфейса на хост-машине
robin@robin-desktop:~$ cat /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
Я должен установить bridge_stp on
?
Edit3: Вот конфигурация libvirt xml, она изначально была создана ubuntu-vmbuilder, я немного ее взломал
<domain type='kvm'>
<name>meerkat</name>
<uuid>dbf905dd-b05d-5c81-5fe4-ad421cd50ece</uuid>
<memory>1048576</memory>
<currentMemory>1048576</currentMemory>
<vcpu>1</vcpu>
<os>
<type arch='x86_64' machine='pc-0.12'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
</features>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/bin/kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/home/robin/kvm/meerkat/ubuntu-kvm/tmp6pwohf.qcow2'/>
<target dev='hda' bus='ide'/>
<address type='drive' controller='0' bus='0' unit='0'/>
</disk>
<controller type='ide' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
</controller>
<interface type='bridge'>
<mac address='52:54:00:06:7e:9c'/>
<source bridge='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<serial type='pty'>
<target port='0'/>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</console>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</memballoon>
</devices>
</domain>
-A FORWARD -m Physdev --physdev-is-bridged -j ACCEPT в / etc / sysconfig / iptables, я добавил эту строку, чтобы мой kvm работал правильно.
Пожалуйста, проверьте свой брандмауэр настройки на хост-машине. Однажды меня это укусило - мне потребовались часы, чтобы найти проблему. Виртуальная машина должна иметь возможность отправлять и получать пакеты DHCP через мост. и снова через него через правила брандмауэра хоста.
Я определяю интерфейс на виртуальной машине в /etc/network/interfaces
используя статический адрес. Виртуальная машина должна быть определена с интерфейсом Ethernet. А vnet
устройство, созданное на сервере для виртуальной машины. В vnet
Интерфейс должен отображаться на сервере как работающий без определенных адресов. В vnet
устройство будет отображаться как eth
type interface на виртуальной машине.
Если приведенный выше вывод предназначен для вашего сервера, br0
адрес на вашем сервере должен подходить для виртуальной машины. eth0
на сервере должен быть любой адрес, необходимый для внешнего доступа. У вас также должен быть vnet0
устройство, которого я не вижу.
РЕДАКТИРОВАТЬ: я также отключил автозапуск сети с помощью virsh. Это определение / etc / network / initerfaces для одного из моих мостов. Я соответствующим образом обновил конфигурацию dhsmasq.
auto virbr0 iface virbr0 inet static address 192.168.10.1 netmask 255.255.255.224 pre-up brctl addbr virbr0 post-down brctl delbr virbr0
Соответствующее определение сети:
<network> <name>default</name> <uuid>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</uuid> <bridge name='virbr0' stp='on' forwardDelay='0' /> <domain name='virt.example.com'/> </network>