ubuntuusers.de

KVM/QEMU mit Network Bridge?

Status: Gelöst | Ubuntu-Version: Server 10.04 (Lucid Lynx)
Antworten |

Budgreg

Anmeldungsdatum:
10. Februar 2011

Beiträge: 16

Hello!

Habe erfolgreich KVM installiert und ein virtuelles Windows XP zum Laufen gebracht. Die Standard-Netzwerk-Lösung ist aber nicht ausreichend, ich möchte jetzt dieses virtuelle System mit einem bridges network an mein Netzwerk anbinden. Leider komm ich da nicht weiter.

Unter http://wiki.ubuntuusers.de/QEMU steht ein Verweis auf http://wiki.ubuntuusers.de/Netzwerkbr%C3%BCcke, was aber sehr allgemein gehalten ist (und nicht auf KVM eingeht). Die Brigde hab ich aber eingerichtet:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet manual
up ifconfig $IFACE up

#Bridge interface
auto br0
iface br0 inet static
        address 10.9.8.10
        network 10.9.8.0
        netmask 255.255.255.0
        broadcast 10.9.8.255
        gateway 10.9.8.1
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0

Ich hab demnach die statische IP Adresse 10.9.8.10 (war früher eth0 zugewiesen) der Bridge zugewiesen.

Leider schaffe ich es aber nicht, dieses "tap-" oder "tun"-Interface zu aktivieren, damit die virtuelle Installation dann auf diese Bridge zugreifen kann.

Das WindowsXP starte ich ansich über qemu -hda /home/virtual/winxp.img -boot c -net nic,macaddr=52:54:ad:0c:4d:f6 -net nic -net tap -vnc :1 -k de -usb -m 384

Wer kann mir hier helfen? In weiterer Folge möchte ich das WindowsXP automatisch beim Booten des ubuntu Servers starten. WIe kann ich das machen?

Danke im Vorraus. Ein Hinweis auf öffentliche Seiten (zum Nachlesen) wären auch hilfreich. Leider bin ich mit Informationen wie z.B. http://wiki.debian.org/QEMU#Networking nicht weitergekommen...

Danke & lg, Gregor.

Colttt

Anmeldungsdatum:
29. April 2009

Beiträge: 1517

warum hast du es nicht so gemacht wie es im debian-wiki steht?? damit gehts! habs ja auch so gemacht 😉

Budgreg

(Themenstarter)

Anmeldungsdatum:
10. Februar 2011

Beiträge: 16

Na ja - die dort angegebene Config ist für DHCP.

1
2
3
4
5
6
7
8
9
#auto eth0
iface eth0 inet manual
auto br0
iface br0 inet dhcp
   pre-up /usr/sbin/tunctl -u <username> -t tap0
   pre-up ifconfig tap0 up
   bridge_ports all tap0
   post-down ifconfig tap0 down
   post-down tunctl -d tap0

Ich hab aber eine statische Adresse (am Ubuntu-Host).

Ich hab dieses Beispiel für meine Config übernommen. Sieht bei mir so aus:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
auto lo
iface lo inet loopback

# The primary network interface
#auto eth0
iface eth0 inet manual
up ifconfig $IFACE up

#Bridge interface
auto br0
pre-up /usr/sbin/tunctl -u gregor -t tap0
pre-up ifconfig tap0 up
iface br0 inet static
        address 10.9.8.10
        network 10.9.8.0
        netmask 255.255.255.0
        broadcast 10.9.8.255
        gateway 10.9.8.1
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0
post-down ifconfig tap0 down
post-down tunctl -d tap0

Aber nach einem Restart des Networks mit /etc/init.d/networking restart kommt dann:

1
2
3
4
5
6
 * Reconfiguring network interfaces...
/etc/network/interfaces:16: misplaced option
ifdown: couldn't read interfaces file "/etc/network/interfaces"
/etc/network/interfaces:16: misplaced option
ifup: couldn't read interfaces file "/etc/network/interfaces"
   ...fail!

Any idea?

Colttt

Anmeldungsdatum:
29. April 2009

Beiträge: 1517

entferne mal bitte zeile 7 komplett, ich weiss ja njicht wo du das her hast.. 😉

auto lo
iface lo inet loopback

# The primary network interface
#auto eth0
iface eth0 inet manual

#Bridge interface
auto br0
pre-up /usr/sbin/tunctl -u gregor -t tap0
pre-up ifconfig tap0 up
iface br0 inet static
        address 10.9.8.10
        network 10.9.8.0
        netmask 255.255.255.0
        broadcast 10.9.8.255
        gateway 10.9.8.1
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0
post-down ifconfig tap0 down
post-down tunctl -d tap0

PomTom

Avatar von PomTom

Anmeldungsdatum:
13. November 2009

Beiträge: 158

Wohnort: Hinter den sieben Bergen, bei den sieben Zwergen

Mal unabhängig davon, was in diesem Howto steht - KVM benötigt kein (sichtbares) tun- oder tap-Interface. Die Bridge alleine reicht, damit die VMs Zugriff auf das Netzwerk haben. Dafür ist eine Bridge ja da ☺

Budgreg

(Themenstarter)

Anmeldungsdatum:
10. Februar 2011

Beiträge: 16

PomTom schrieb:

Mal unabhängig davon, was in diesem Howto steht - KVM benötigt kein (sichtbares) tun- oder tap-Interface. Die Bridge alleine reicht, damit die VMs Zugriff auf das Netzwerk haben. Dafür ist eine Bridge ja da ☺

Klingt ja perfekt, aber wie einrichten?

PomTom

Avatar von PomTom

Anmeldungsdatum:
13. November 2009

Beiträge: 158

Wohnort: Hinter den sieben Bergen, bei den sieben Zwergen

Wie was einrichten? Wenn die Bridge da ist, ist der Hypervisor - zumindest netzwerktechnisch - startklar.

Budgreg

(Themenstarter)

Anmeldungsdatum:
10. Februar 2011

Beiträge: 16

PomTom schrieb:

Wie was einrichten?

Was soll ich an der Bridge ändern? Und wie soll ich die virtuelle Instanz starten, damit der Zugriff auf das Netzwerk funktioniert?

PomTom

Avatar von PomTom

Anmeldungsdatum:
13. November 2009

Beiträge: 158

Wohnort: Hinter den sieben Bergen, bei den sieben Zwergen

Das Bridge-Interface bekommt nur eine Management-IP, die für den Zugriff auf den Hypervisor benötigt wird, also z.B. für SSH. eth0 - oder worauf die Bridge aufsetzt - bekommt überhaupt keine IP.

Zum Verwalten der VMs empfiehlt sich ohnehin dringend der Einsatz von libvirt. In diesem Fall würde man eine VM wie folgt installieren:

virt-install -n <NameDerVM> -r <ram> -u `uuidgen` --vcpus <AnzahlCPUs> -c <PfadZurSetupIso> --os-type=windows --os-variant=<WindowsVersion> --disk path=<PfadZurQcow2OderLVM>,bus=virtio,size=<DiskGroesse>,sparse=false -w bridge=<NameDesBrigeInterfaces>,model=virtio --vnclisten=0.0.0.0 -k de -v

Anschliessend kann mittels VNC auf die Konsole der VM zugegriffen werden.

Die VM selbst wird mittels virsh grundlegend verwaltet, z.B.

virsh start NameDerKVMDomain

virsh shutdown NameDerKVMDomain

virsh destroy NameDerKVMDomain

Siehe man virsh

Budgreg

(Themenstarter)

Anmeldungsdatum:
10. Februar 2011

Beiträge: 16

WELTKLASSE - mit VIRSH ist alles kein Problem.

Leider war ich etwas verunsichert. Auf der VIRSH-WIKI-Seite steht:

Wenn man sich bisher noch nicht mit Virtualisierung[6] beschäftigt hat oder bisher nur graphische Oberflächen wie die von Virtual-Box gewohnt ist und jetzt tiefer einsteigen möchte, sollte nach Möglichkeit erst mit der reinen KVM- oder QEMU-Technik auf der Konsole beginnen, um die Konfigurationsspezifika z.B. für eine Windowsmaschine kennen zu lernen.

Im XML-File hab ich das Netzwerk so eingerichtet:

   <interface type='bridge'>
      <mac address='52:54:00:51:f7:ec'/>
      <source bridge='br0'/>
      <target dev='vnet0'/>
    </interface>

Der Zugriff ist jetzt problemlos möglich.

Danke & lg, Gregor.

PS: Hat jemand eine Idee, wie ich auf die virtuelle Maschine zugreifen kann, wenn ich nur SSH-Zugriff auf dem KVM-Host habe?

PomTom

Avatar von PomTom

Anmeldungsdatum:
13. November 2009

Beiträge: 158

Wohnort: Hinter den sieben Bergen, bei den sieben Zwergen

Budgreg schrieb:

PS: Hat jemand eine Idee, wie ich auf die virtuelle Maschine zugreifen kann, wenn ich nur SSH-Zugriff auf dem KVM-Host habe?

Bei einer Linux-VM kannst du den Konsolen-Output auf eine serielle Konsole (ttyS0) umleiten, und außerdem ebenfalls dort einen TTY-Login erscheinen lassen, so dass du mittels virsh console domainName auf die VM zugreifen kannst, als würdest du unmittelbar davorsitzen.

Bei einer Windows-VM würde ich ganz normal den VNC-Server starten und von remote über einen SSH-Tunnel auf den VNC-Server zugreifen.

Budgreg

(Themenstarter)

Anmeldungsdatum:
10. Februar 2011

Beiträge: 16

PomTom schrieb:

Budgreg schrieb:

PS: Hat jemand eine Idee, wie ich auf die virtuelle Maschine zugreifen kann, wenn ich nur SSH-Zugriff auf dem KVM-Host habe?

Bei einer Linux-VM kannst du den Konsolen-Output auf eine serielle Konsole (ttyS0) umleiten, und außerdem ebenfalls dort einen TTY-Login erscheinen lassen, so dass du mittels virsh console domainName auf die VM zugreifen kannst, als würdest du unmittelbar davorsitzen.

Bei einer Windows-VM würde ich ganz normal den VNC-Server starten und von remote über einen SSH-Tunnel auf den VNC-Server zugreifen.

Perfekt - werde ich probieren.

Solved.

Danke & lg, Gregor

Antworten |