понедельник, 22 октября 2007 г.

Особенности Qemu

День потратил чтобы соединиться из установленной в Qemu windows-машины к vpn-серверу на одноименной платформе. Долго пытался понять почему соединения отваливаются сразу после авторизации.
Оказалось до банального просто. Qemu я запускал от своего имени (не root) с параметром -net user и поэтому наружу могли идти только пакеты протоколов TCP и UDP, а все другие отбрасывались - в том числе пакеты icmp и gre протоколов.
Чтобы преодолеть данное препятствие qemu стал запускать с tap-интерфейсом:
qemu -hda windows-disk.img -cdrom Windows-image.iso \
-net nic,model=rtl8139 -net tap,ifname=tap0,script=qemu-if-1.sh


где qemu-if-1.sh - скрипт настройки tap-интерфейса
$ cat > qemu-if-1.sh
#!/bin/sh
/sbin/ifconfig tap0 inet 10.0.3.1 netmask 255.255.255.0

$ chmod +x qemu-if-1.sh

Qemu следует запускать от имени пользователя root, чтобы поднялся tap-интерфейс. И в нашем случае виртуальную машину надо вручную настроить на ip-адрес из диапазона 10.0.3.0/24, с шлюзом по адресу 10.0.3.1.

4 комментария:

Marat комментирует...

root не нужен, если выставить:
net.link.tap.user_open=1

mr.tacitus комментирует...

$ sudo sysctl net.link.tap.user_open=1
Password:
error: "net.link.tap.user_open" is an unknown key

Система: Linux 2.6.22-gentoo-r9

Bug комментирует...

sysctl для freebsd.
а отчего блог-то "freebsd ..." называется, а?

Andrew комментирует...

Кому интересно Виртуализация с помощью Qemu
Так сказать маленький howto