Toon posts:

FreeBSD en Qemu met tap netwerk

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ten eerste, sorry als ik deze post in het verkeerde topic plaats. Het plaatje past namelijk zowel bij Unix als bij Windows. Ik heb geen idee of dit een Unix of Windows klacht betreft.

Sinds kort heb ik een nieuwe server, daar heb ik FreeBSD 7 op gezet. De server host een aantal Unix services, maar ook een GUI met Remote Desktop sessie. In deze GUI wil ik een ander OS draaien, hetzij Windows 2000 of Windows XP. Dit wil ik eigenlijk alleen voor de super handige tweakers tool Gotsend! Daar komt nog eens bij dat ik mijn huidige bestanden host via dezelfde Unix server via Samba. Hier gaat het echter mis.

Mijn huidige setup:
Eerst heb ik mijn FreeBSD Ports tree geupdate naar de nieuwste versie. Dit is van ongeveer een dag geleden.
Eerder had ik al een nieuwe kernel gecompiled voor mijn FreeBSD systeem (SCHED_4BSD eruit en SCHED_ULE erin aangezien ik Intel Core 2 Duo Wolfdale heb). Hierna is de nieuwste kqemu-kmod vanaf de source gecompiled. Hier komen twee modules uit, namelijk kqemu en aio. Beide kernel modules laden perfect.
Hierna heb ik de qemu vanaf de source gecompiled, maar eerst Samba aangezet via make config (waarschijnlijk niet eens nodig, ik gebruik tap en krijg DHCP vanaf me router).

Toen had ik een goed werkende qemu met kqemu acceleratie. Hierna heb ik nog een aantal bestanden aangemaakt omtrent sudo en qemu-ifup.
/usr/local/bin/sudo /sbin/ifconfig $1 up
case "`ifconfig bridge0`" in
*" $1 "*) ;; # already in bridge
*) /usr/local/bin/sudo /sbin/ifconfig bridge0 addm $1 ;;
esac
Nu is eigenlijk alles in orde om bijvoorbeeld Windows XP te installeren (op create XP.img na dan, maar ach zit probleem niet.)
Ik start de Windows XP installatie via dit commando:
qemu-system-x86_64 -boot d -cdrom XP.iso -hda XP.img -net nic,model=rtl8139,vlan=1 -net tap,ifname=tap0,script=/etc/qemu-ifup,vlan=1 -m 512 -localtime -usb -usbdevice tablet
Het probleem:
De installatie lukt en vind de netwerk kaart. Ik krijg netjes een DHCP adres van de router in mijn ip range. Het internet functioneert.
Als ik naar Mijn netwerklocaties ga, en dus de Unix Samba server aanklik, hangt het explorer process voor ongeveer een minuut waarna deze melding verschijnt "The I/O operation has been aborted because of either a thread exit or an application request". Als dit bericht verschijnt, kan ik de Unix server gewoon pingen. Ik kan nog steeds internetten en misschien wel het meest rare, ik kan gewoon weer op de Samba share drukken alsof de verbinding er weer is. Waarna deze melding weer verschijnt.

Dit is tevens getest met het IP nummer, en de Netbios naam. Dit probleem blijft bestaan onder zowel Windows 2000 als Windows XP.

Hierbij de ifconfig als er een Windows machine via tap netwerk verbinding heeft:
em0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=198<VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4>
ether 00:1e:8c:70:6d:ed
inet 10.0.0.3 netmask 0xffffff00 broadcast 10.0.0.255
media: Ethernet autoselect (1000baseTX <full-duplex>)
status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
ether 16:d8:97:dc:88:c6
id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
maxage 20 holdcnt 6 proto rstp maxaddr 100 timeout 1200
root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
member: tap0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
member: em0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
tap0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
ether 00:bd:e7:38:03:00
Opened by PID 13637
Heeft iemand hier al ervaring mee gehad of nog ideeen/tips wat ik kan proberen?

-- Kleine update
Ik ben er net nog achter gekomen dat ik gewoon shares kan benaderen, die de Unix server zelf NIET host. Dit probleem komt dus alleen voor als ik een samba share open vanaf dezelfde server. Hierbij de log van de Unix Samba server tijdens het connectie probleem:
[2008/06/13 16:56:26, 1] smbd/service.c:make_connection_snum(1033)
magister-qemu (10.0.0.27) connect to service Foto initially as user roland (uid=1001, gid=0) (pid 13697)
[2008/06/13 16:57:34, 0] lib/util_sock.c:read_data(534)
read_data: read failure for 4 bytes to client 10.0.0.27. Error = Connection reset by peer
[2008/06/13 16:57:34, 1] smbd/service.c:close_cnum(1230)
magister-qemu (10.0.0.27) closed connection to service Foto

[ Voor 5% gewijzigd door Verwijderd op 13-06-2008 19:02 ]


  • silentsnake
  • Registratie: September 2003
  • Laatst online: 15-01 11:20
Ik ben toevallig ook een tijdje bezig geweest met Qemu op FreeBSD en Windows XP. Ik had een soort gelijke setup als jij. Tap interface maken en in een bridge gooien. Nou heb ik een werkende Windows XP, maar ik heb een half werkende netwerk functionaliteit. Ik kan vanaf de VM nergens naartoe pingen (niet eens de gateway), maar ik kan wel vanaf een ander PC in een ander subnet de VM pingen (en ja, ik krijg ook een reply terug, beetje raar dus). Heb jij dat heel toevallig ook? Of kan jij wel gewoon vanuit je Qemu overal naartoe pingen?

Verwijderd

Topicstarter
Vanuit qemu kan ik gewoon overal naartoe pingen, ongeveer 4 computers. Tevens zie ik elke share die op de computers aan staan. Als ik via mijn computer op het netwerk kijk zie ik ook dat magister-qemu aangemeld is in de workgroup. Het werkt dus volledig, behalve lokale em0 > bridge0 < tap0.

Ik ben nog eens verder gaan kijken, en heb een ftp client geinstalleerd. Als ik vanaf een niet lokale computer download gaat dit perfect, ongeveer 2,5 mbs (ok valt wat tegen, maar het werkt tenminste). Als ik naar de lokale ftp server connect werkt dit en het browsen werkt goed, geen hickups. Als ik menig bestand oversleep hangt de connectie als een baksteen, heel af en toe komt er een kb door, ongeveer 0,2 kbs.

  • blorf
  • Registratie: December 2003
  • Laatst online: 25-12-2025
silentsnake schreef op vrijdag 13 juni 2008 @ 20:25:
Ik ben toevallig ook een tijdje bezig geweest met Qemu op FreeBSD en Windows XP. Ik had een soort gelijke setup als jij. Tap interface maken en in een bridge gooien. Nou heb ik een werkende Windows XP, maar ik heb een half werkende netwerk functionaliteit. Ik kan vanaf de VM nergens naartoe pingen (niet eens de gateway), maar ik kan wel vanaf een ander PC in een ander subnet de VM pingen (en ja, ik krijg ook een reply terug, beetje raar dus). Heb jij dat heel toevallig ook? Of kan jij wel gewoon vanuit je Qemu overal naartoe pingen?
Klopt, heb ik ook gehad. De oplossing was het subnetmask van de brug 255.255.255.255 te maken ipv 255.255.255.0, dus:
ifconfig bridge0 netmask 255.255.255.255

Vraag me niet waarom.


kldload kqemu
kldload if_tap
kldload if_bridge
ifconfig tap create
ifconfig bridge create
ifconfig bridge0 192.168.1.35 netmask 255.255.255.255
ifconfig bridge0 addm fxp0 up
ifconfig bridge0 addm tap0 up
qemu -hda image.img -m 1024 -net nic,model=rtl8139,macaddr=00:00:00:00:00:01 \
net tap,ifname=tap0 -soundhw es1370 -boot c

[ Voor 17% gewijzigd door blorf op 03-08-2008 20:40 ]

You are in a maze of little twisting passages, all different.


Verwijderd

Topicstarter
Inmiddels zijn we een aantal maanden verder en tot op heden heb ik geen oplossing kunnen vinden voor dit probleem. Ik moet eerlijk zeggen dat ik het ook een tijdje heb opgegeven, maar we gaan vol goede moed het weer opnieuw proberen! Tevens is de FreeBSD (7) server al een aantal maal opnieuw geinstalleerd (als host) met qemu (nieuw uit de ports tree) en kqemu (wat mn systeem nogal instabiel maakt, dit gebruik ik dus niet meer). In deze Qemu wil ik Windows 2003/Windows 2008 gaan draaien als guest.

Deze keer gebruik ik een GENERIC SMP kernel, met de 4BSD scheduler support in plaats van de ULE scheduler die ik eerst gebruikte, dit maakt weinig verschil.

Mijn LAN:
range 10.0.0.0
netmask 255.255.255.0
router 10.0.0.1
modem 192.168.0.1 (ja dit werkt, vraag me niet waarom)

Via bridge0 en tap0 wil ik de verbinding leggen naar mijn huidige netwerk via Qemu. Dit werkt op dit moment goed,tenzij ik naar mijn lokale FreeBSD wil (denk aan website, sql databases, samba shares).
em0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=198<VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4>
ether 00:1e:8c:70:6d:ed
inet 10.0.0.3 netmask 0xffffff00 broadcast 10.0.0.255
media: Ethernet autoselect (1000baseTX <full-duplex>)
status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x5
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
tap0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
ether 00:bd:b9:1e:00:00
Opened by PID 9531
bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
ether 7e:c4:5f:06:b4:29
id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
maxage 20 holdcnt 6 proto rstp maxaddr 100 timeout 1200
root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
member: tap0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
member: em0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
Tevens heb ik het een en ander geprobeerd met de bridge0 en tap0 interfaces door bijv deze twee regels uit de voeren. De Windows in Qemu gebruikt IP adres 10.0.0.4 (static ingesteld), het IP 10.0.0.2 word dan de brug tussen de FreeBSD en de Windows Qemu, deze IP is vrij.
ifconfig bridge0 inet 10.0.0.2 netmask 255.255.255.0 broadcast 10.0.0.255
ifconfig tap0 inet 10.0.0.4 netmask 255.255.255.0 broadcast 10.0.0.255
Dit heeft echter geen effect op het netwerk binnen Windows, ik mag overal naar toe surfen, behalve natuurlijk wederom mijn eigen FreeBSD server.

Tevens heb ik geprobeerd wat blorf heeft gepost, al was dit niet voor mij bedoelt.
ifconfig bridge0 inet 10.0.0.2 netmask 255.255.255.255 broadcast 10.0.0.255
ifconfig tap0 inet 10.0.0.4 netmask 255.255.255.0 broadcast 10.0.0.255
Hierna valt mijn gehele internet verbinding weg op de Windows Qemu server. Mijn FreeBSD server heeft gewoon nog internet.

Heeft iemand dit probleem inmiddels al getackelt? Tegenwoordig gebruik ik maar een netwerk share dat zich niet lokaal bevindt :'(

  • dragunova
  • Registratie: Mei 2007
  • Laatst online: 09-01 15:49

dragunova

Samozaridnyia Vintovka D.

Verwijderd schreef op zaterdag 06 september 2008 @ 16:37:...
Mijn LAN:
range 10.0.0.0
netmask 255.255.255.0
router 10.0.0.1
modem 192.168.0.1 (ja dit werkt, vraag me niet waarom)
Waarschijnlijk omdat je modem op een adres als 10.0.0.138 of zo gewoon ook routeert?

Ik bedoel, de interface van je modem heeft waarschijnlijk meerdere ip-adressen...

[ Voor 12% gewijzigd door dragunova op 06-09-2008 20:46 ]

does the pope shit in the woods? is a bear catholic?


Verwijderd

Topicstarter
Modem: 192.168.0.1
Router: 10.0.0.1

FreeBSD em0: 10.0.0.3
FreeBSD brdige0: 10.0.0.2
FreeBSD tap0: 10.0.0.4

Als ik vanaf de virtuele machine (10.0.0.4) richting de locale samba server wilt (10.0.0.3) dan ga ik toch in feite door bridge0 (10.0.0.2) naar em0 (10.0.0.3) en niet door de router/modem? Het lijkt mij dat dit gewoon een interne route betreft. Het internet en andere computers functioneren wel degelijk in de virtuele machine, alleen de lokale samba server kan ik niet bereiken.

Waar kan het fout gaan tussen deze drie interfaces? (ik gebruik verder geen firewall)
Pagina: 1