# netzwerk kvm

## pieter_parker

pc1

brctl addbr br0

ifconfig br0 192.168.0.254 netmask 255.255.255.0 up

tunctl -b -u root -t qtap0

brctl addif br0 qtap0

ifconfig qtap0 up 0.0.0.0 promisc

route add -host 192.168.0.200 dev br0

qemu-kvm test.qemu -m 512 -net nic,model=rtl8139 -net tap,ifname=qtap0,script=no

virtuelleskvmding

ifconfig eth0 192.168.0.200 netmask 255.255.255.0 up

route add default gw 192.168.0.254

wenn ich das so mache koennen sich beide maschienen gegenseitig anpingen

ich komme dann aber nicht mehr von pc1 ins internet (router -> 192.168.0.254)

und vom virtuellemkvmding komme ich auch nicht ins internet

iptables habe ich auf beiden maschienen ausgeschaltet

hat jemmand eine idee wo der fehler bei der configuration liegen koennte?!

----------

## ixo

Hallo,

ich habe das gerade unter Ubuntu zum Laufen bekommen (Workstation = ubuntu, Server = gentoo).

Der Rechner hat eine Netzwerkkarte (eth0) und bekommt vom Server per DHCP IP Adresse und routing.

Es sieht folgendermaßen aus:

- br0 an eth0 gehängt, dazu Konfigurationsdateien geändert, damit beim Booten direkt br0 genommen wird

(Ethernetadresse des ubuntu hosts ist an br0, nicht mehr an eth0)

- virtuelles KVM Dingsbums als bridged an br0 konfiguriert

Resultat:

Host hat IP Adresse an br0

Virtuelles KVM Dingsbums hängt ebenfalls an br0 im selben Segment wie Host, (ip Adresse und Routing kommt vom gentoo Server)

Alle können miteinander herumpingen etc.

Die Config Datei auf dem Ubuntu host sieht so aus.

```
$ cat /etc/network/interfaces

# 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 dhcp

auto br0

# Use old eth0 config for br0, plus bridge stuff

iface br0 inet dhcp

    bridge_ports    eth0

    bridge_stp      off

    bridge_maxwait  0

    bridge_fd       0

```

Dürfte bei Gentoo etwas anders sein, aber vielleicht hilft's ja. (Unter Gentoo muss ich das auch noch irgendwann zum Laufen bekommen.)

Grüße, ixo

PS: Wozu soll das qtap0 gut sein?

----------

## py-ro

```
route add default gw 192.168.0.254 
```

Damit wäre deine Bridge das GW, das ist nicht was du willst, wenn du eine Bridge baust.

Außerdem lass mal das ganze tun Geraffel weg und schaue mit ifconfig nach, welches Device dann von der VM erstellt wird und füge das der Bridge hinzu.

Zum Schluss noch eine Demo Gentoo-Config

```

bridge_br0="eth0"

config_eth0="null"

config_br0="

        89.238.xxx.xxx/24

        2a00:xxxx:2000:xxxx::2/64

        "

brctl_br0="stp off"

routes_br0="default via 89.238.xxx.1

        default via 2a00:xxxx:2000:xxxx::1"

```

Bei mir erledigt die libvirt das hinzufügen der Devices zur Bridge, nur so als Info. Das Gateway in der VM ist das gleiche wie für den Host.

Der Host wäre das Gateway, wenn man ein Routing-Setup machen würde, dann ohne Bridge.

Bye

Py

----------

## pieter_parker

vconfig add eth0 1

ifconfig eth0.1 192.168.1.1

hab ich gemacht, und in der vm hab ich die ip 192.168.1.2 vergeben

wie muss ich qemu-kvm aufrufen damit in der vm das eth0.1 benutzt wird?

```
libvirtd 

14:43:07.932: 20677: info : libvirt version: 0.9.3

14:43:07.932: 20677: error : virSysinfoRead:441 : Interner Fehler Failed to find path for dmidecode binary

14:43:08.088: 20677: error : virExecWithHook:321 : Cannot find 'ip' in path: Datei oder Verzeichnis nicht gefunden
```

wie soll das funktionieren mit libvirtd?

und wie komme ich in die kvm konsole?

----------

## py-ro

Was willst du den jetzt schon wieder mit vconfig?

Überlege erstmal was du genau willst und gebe dann nochmal Bescheid...

----------

## pieter_parker

geht das nicht ueber vconfig?

bei vmware frueher hatte ich vmnet1 bis ... am host, und ich habe ueber iptables geroutet

wie funktioniert das bei qemu-kvm? was genau muss ich tun um es genauso zumachen?

----------

## pieter_parker

wie funktioniert das mit kvm und dem netzwerk?

----------

## py-ro

Musst du gucken in Dokumentation oder hier:

http://qemu-buch.de/

Bye

Py

----------

## pieter_parker

hab ich die letzten tage schon gemacht

aber ein buch hilft mir da nicht viel weiter ... ich glaube was ich brauche ist wer der mir sagt die das funktionieren soll mit dem netzwerk bei kvm

----------

## py-ro

Da sind die kompletten Befehle aufgeführt... mit der jeweiligen Erklärung der Netzwerkmodi...

Hast du überhaupt mal reingeguckt?

Py

----------

## pieter_parker

na klar, da hab ich mich schon durchgelesen

ich kriege es aber einfach nicht zum laufen, egal welchen netzwerk modi ich ausprobiere

koennt ihr mir bitte ein config geben mit der ich am host eine neue netzwerkkarte habe ueber die die virtuelle maschiene ins netzkommt das ich dann ueber iptables route

bitte, das waere super...

----------

## pieter_parker

huhu?

----------

## bbgermany

Hi,

 *pieter_parker wrote:*   

> huhu?

 

Ehrlich, dass ist bald ein bissle frech gegenüber den Leuten die dir hier helfen. Und für faule, die google nicht richtig bemühen können:

http://lmgtfy.com/?q=kvm+networking+gentoo

Da findet man dann folgende nützliche Links:

https://forums.gentoo.org/viewtopic-t-712629-start-0.html

http://www.samshome.net/?p=21&page=1

MfG. Stefan

----------

## pieter_parker

```
/etc/conf.d/net

     brctl_br0=( "setfd 9" "sethello 2" "setmaxage 12" "stp off" )

    bridge_br0="eth0"

    config_eth0=( "192.168.0.1 netmask 255.255.255.0 brd 192.168.0.255" )

    routes_eth0=( "default via 192.168.0.254" )

    dns_servers=( "217.0.43.1" )

     config_br0=( "192.168.1.1 netmask 255.255.255.0 brd 192.168.1.255" )

      depend_br0() { need net.eth0 }
```

mit /etc/init.d/net.br0 start

hab ich zwar ein br0 bei ifconfig, aber kein internet mehr

und wenn ich

kvm -cdrom /home/pieter/Downloads/install-x86-minimal-20110927.iso -boot d -vnc 192.168.0.1:0 -net nic,vlan=0,macaddr=00:00:00:00:00:00 -net tap,vlan=0

mache wie bei dem englischen howto angegeben ist

sagt er mir

/etc/qemu-ifup: could not launch network script

qemu-system-x86_64: -net tap,vlan=0: Device 'tap' could not be initialized

----------

## py-ro

Vergleich mal deine Config mit meiner weiter oben *hint* eth0 *hint* vielleicht fällt dir was auf....

mac und vlan solltest bei dem KVM-Aufruf weglassen, das mit dem -net tap ist afaik auch überlfüssig.

Du solltest dich aber nochmal mit den Grundlagen beschäftigen, was ist eine Bridge? Was tut Sie? Wie tut Sie es?

Was für ein Setup möchte ich (du) eigentlich?

Bye

Py

----------

## pieter_parker

py-ro, du hast bei dir

config_eth0="null" 

ich hab bei mir

config_eth0=( "192.168.0.1 netmask 255.255.255.0 brd 192.168.0.255" ) 

warum hast du bei dir "null" stehen?

ich will ein setup wo der host der router ist, wie heisst das setup?

tun ist fuer ip zustaendig waerend tap nur mit ethernet zu tun hat

ich denke ich brauche ethernet, also tap, weil wozu soll nur ip gut sein?

ich will das jede vm ein eigenes dev am router hat das ich ueber iptables dann route

wie heisst das setup?

----------

## yuhu

hallo pieter_parker,

ist das 2. layout vom http://en.gentoo-wiki.com/wiki/KVM#Possible_Network_Layouts das was du willst?

----------

## pieter_parker

ja, das kommt hin, das ist es.

----------

## yuhu

wenn das so ist, warum passt du die dort abgebildete config nicht an deine Gegebenheiten an?

Using NAT/Masquerading:

File: /etc/conf.d/net

 *Quote:*   

> bridge_br0="tap0 tap1"
> 
> brctl_br0="setfd 0 sethello 0 stp off"
> 
> rc_need_br0="net.tap0 net.tap1"
> ...

 

----------

## pieter_parker

mit

```
bridge_br0="tap0 tap1"

brctl_br0="setfd 0 sethello 0 stp off"

rc_need_br0="net.tap0 net.tap1"

config_eth0=( "192.168.0.1 netmask 255.255.255.0 brd 192.168.0.255" )

routes_eth0=( "default via 192.168.0.254" )

dns_servers_eth0=( "217.0.43.1" )

config_br0=( "192.168.1.1 netmask 255.255.255.0 brd 192.168.1.255" )

config_tap0="null"

tuntap_tap0="tap"

#tunctl_tap0="-u joeuser"

#mac_tap0="00:00:00:00:00:00"

config_tap1="null"

tuntap_tap1="tap"

#tunctl_tap1="-u joeuser"

#mac_tap1="00:00:00:00:00:01"
```

und

kvm -hda /home/pieter/temp/hda1.img -cdrom /home/pieter/Downloads/install-x86-minimal-20110927.iso -boot d -net nic,macaddr=00:00:00:00:00:00 -net tap,ifname=tap0,script=no,downscript=no -vnc 192.168.0.1:0

funktioniert es

die vm ist per tap0 verbunden, und das wiederrum ist auf br0 gebrueckt? warum?

gibt es eine loesung das man die vm direkt mit br0 verbindet

und die naechste vm mit br1 usw verbindet?

muss ich jetzt wirklich

br0 mit tap0 bruecken

br1 mit tap1 bruecken usw

ich will das jede vm fuer sich ist und keinen kontakt mit anderen vm hat, ausser ich route es

welche loesungen gibt es noch?

----------

## py-ro

Mitdenken, dann einfach die Bridges weglassen und nur die tap-Devices benutzen, das meinte ich mit verstehen was du tust.

Py

----------

## pieter_parker

eh ok, warum sagt das niemand gleich das das so funktioniert

wenn ich z.b. die gentoo minimal install disc boote, schaltet sich beim booten die aufloesung im vnc fenster um und ich werde rausgeschmissen, kann mich aber wieder verbinden und hab dann das vnc fenster in der neuen aufloesung

kann man dieses rausgeschmissen werden und aufloesung wechseln irgendwie im laufendem vnc fenster mit machen?

gibts fuer vnc ne besondere option dafuer? habe tightvnc mit vncviewer benutzt

was genau macht diese tunctl_tap0 option?

wenn ich eine vm starte, und darain z.b. windows installiere, und dann mit meinem maus curos vom kde in das vnc fenster gehe wird er zu einem kreis

der kreis ist abweichend von der maus im vnc fenster

der cursour im vnc fenster bewegt sich mit einer anderen geschindigkeit wie meine maus

wie kriege ich die beiden in einklang

klar, mit rdesktop ist das problem geloest, aber wie kriege ich es per vnc in einklang?

----------

## bbgermany

 *pieter_parker wrote:*   

> eh ok, warum sagt das niemand gleich das das so funktioniert
> 
> wenn ich z.b. die gentoo minimal install disc boote, schaltet sich beim booten die aufloesung im vnc fenster um und ich werde rausgeschmissen, kann mich aber wieder verbinden und hab dann das vnc fenster in der neuen aufloesung
> 
> kann man dieses rausgeschmissen werden und aufloesung wechseln irgendwie im laufendem vnc fenster mit machen?
> ...

 

schonmal was von libvirt und virt-manager gehört?

MfG. Stefan

----------

## pieter_parker

schon, aber das muss doch auch alles ohne gehen

----------

## pieter_parker

wie verbinde ich mich in eine vm wo eine graifsche oberflaeche laeuft?

auch ueber vnc oder gab es da vom xserver aus nicht eine funktion fuer?

----------

## bbgermany

 *pieter_parker wrote:*   

> schon, aber das muss doch auch alles ohne gehen

 

auch diesmal hat die Google Suche geholfen: http://www.linux-kvm.org/page/FAQ#.22rect_too_big.22_Message_when_using_VNC_Display und als zusätzliche Information: der faule Admin schreibt nicht jedes Mal den ganzen Befehl hin zum starten eine VM, sondern bedient sich "Tools" die das für ihn machen, deswegen libvirt und virt-manager.

 *pieter_parker wrote:*   

> wie verbinde ich mich in eine vm wo eine graifsche oberflaeche laeuft?
> 
> auch ueber vnc oder gab es da vom xserver aus nicht eine funktion fuer?

 

Was denkst du denn wie sonst?

MfG. Stefan

----------

## pieter_parker

ok, aber wie soll das mit libvirt und virt-manager funktionieren

libvirtd laeuft

im virt-manager sehe ich nur stehen "localhost (QEMU)"

ich habe vorher 2 vm von der konsole aus gesatartet

warum werdne diese nicht angezeigt im virt-manager

mache ich

virsh --connect qemu:///system

hab ich eine konsole

mache ich dort list

sehe ich die vm nicht die ich vorher mit

kvm -net nic,macaddr=00:00:00:00:01:02 -net tap,ifname=tap1,script=no,downscript=no -hda hda1.img -cdrom install-x86-minimal-20110927.iso -boot d -vnc password -vnc 19268.0.1:0

gestartet habe

----------

## yuhu

libvirtd bzw virt-manager erkennt nicht, ob du eine VM per Hand in der Konsole gestartet hast.

Du musst diese VMs schon über virt-manager anlegen oder du schreibst die Konfiguration.

Das ganze liegt dann im Unterverzeichnis /etc/libvirtd/qemu

Das ganze sieht dann so aus

```
server ~ # tree /etc/libvirt/

/etc/libvirt/

|-- libvirtd.conf

|-- lxc.conf

|-- nwfilter

|   |-- allow-arp.xml

|   |-- allow-dhcp-server.xml

|   |-- allow-dhcp.xml

|   |-- allow-incoming-ipv4.xml

|   |-- allow-ipv4.xml

|   |-- clean-traffic.xml

|   |-- no-arp-spoofing.xml

|   |-- no-ip-multicast.xml

|   |-- no-ip-spoofing.xml

|   |-- no-mac-broadcast.xml

|   |-- no-mac-spoofing.xml

|   |-- no-other-l2-traffic.xml

|   |-- no-other-rarp-traffic.xml

|   |-- qemu-announce-self-rarp.xml

|   `-- qemu-announce-self.xml

|-- qemu

|   |-- autostart

|   |   `-- ipfire.xml -> /etc/libvirt/qemu/ipfire.xml

|   |-- ipfire.xml

|   |-- networks

|   |   |-- autostart

|   |   |   `-- default.xml -> ../default.xml

|   |   |-- vnet_iso.xml

|   |   |-- vnet_nat.xml

|   |   `-- vnet_route.xml

|   |-- vdr.xml

|   `-- work.xml

|-- qemu.conf

`-- storage

    |-- autostart

    |   |-- default.xml -> /etc/libvirt/storage/default.xml

    |   `-- virt.xml -> /etc/libvirt/storage/virt.xml

    |-- default.xml

    `-- virt.xml

```

Die Konfiguration einer VM liegt im xml Format vor und kannst mit virsh oder eben virt-manager bearbeiten.

```
server ~ # cat /etc/libvirt/qemu/work.xml

<!--

WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE

OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:

  virsh edit work

or other application using the libvirt API.

-->

<domain type='kvm'>

  <name>work</name>

  <uuid>8a880810-a591-56d5-531e-3a6b1aded7b3</uuid>

  <memory>1048576</memory>

  <currentMemory>1048576</currentMemory>

  <vcpu>1</vcpu>

  <os>

    <type arch='x86_64' machine='pc-0.13'>hvm</type>

    <boot dev='network'/>

    <bootmenu enable='no'/>

  </os>

  <features>

    <acpi/>

    <apic/>

    <pae/>

  </features>

  <cpu match='exact'>

    <model>Westmere</model>

    <vendor>Intel</vendor>

    <feature policy='require' name='tm2'/>

    <feature policy='require' name='est'/>

    <feature policy='require' name='monitor'/>

    <feature policy='require' name='ss'/>

    <feature policy='require' name='vme'/>

    <feature policy='require' name='rdtscp'/>

    <feature policy='require' name='ht'/>

    <feature policy='require' name='ds'/>

    <feature policy='require' name='pbe'/>

    <feature policy='require' name='tm'/>

    <feature policy='require' name='vmx'/>

    <feature policy='require' name='ds_cpl'/>

    <feature policy='require' name='xtpr'/>

    <feature policy='require' name='acpi'/>

    <feature policy='require' name='x2apic'/>

  </cpu>

  <clock offset='utc'/>

  <on_poweroff>destroy</on_poweroff>

  <on_reboot>restart</on_reboot>

  <on_crash>restart</on_crash>

  <devices>

    <emulator>/usr/bin/qemu-kvm</emulator>

    <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:fc:a8:85'/>

      <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>

    <input type='mouse' bus='ps2'/>

    <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'/>

    <video>

      <model type='cirrus' vram='9216' heads='1'/>

      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>

    </video>

    <memballoon model='virtio'>

      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>

    </memballoon>

  </devices>

</domain>

```

Wenn die VM dann via virsh oder virt-manager gestartet wurde, sieht das in etwa so aus.

```
server ~ # ps -ef | grep work | grep kvm

root      3396     1  0 Oct02 ?        00:24:13 /usr/bin/qemu-system-x86_64 --enable-kvm -S -M pc-0.13 -cpu core2duo,+lahf_lm,+rdtscp,+aes,+popcnt,+x2apic,+sse4.2,+sse4.1,+xtpr,+cx16,+tm2,+est,+vmx,+ds_cpl,+pbe,+tm,+ht,+ss,+acpi,+ds -enable-kvm -m 1024 -smp 1,sockets=1,cores=1,threads=1 -name work -uuid 8a880810-a591-56d5-531e-3a6b1aded7b3 -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/work.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -boot order=n,menu=off -netdev tap,fd=18,id=hostnet0,vhost=on,vhostfd=19 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:fc:a8:85,bus=pci.0,multifunction=on,addr=0x3.0x0 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -usb -vnc 0.0.0.0:1 -vga cirrus -device virtio-balloon-pci,id=balloon0,bus=pci.0,multifunction=on,addr=0x5.0x0

```

cu

----------

## bbgermany

Und wenn du eine laufende Version von libvirtd hast, dann werden sich deinen Netzwerkprobleme etc in Luft auflösen und der Rechner braucht dann "theoretisch" nicht mal eine GUI, weil du alles von Remote machen kannst.

MfG. Stefan

----------

## pieter_parker

beim anlegen einer vm ueber virt-manager kommt hier kurz vor dem abschluss

Nicht erfasster Fehler bei Validierung von

Installationsparametern: Must pass VirtualDevice instance

```
Traceback (most recent call last):

  File "/usr/share/virt-manager/virtManager/create.py", line 1241, in validate

    return self.validate_final_page()

  File "/usr/share/virt-manager/virtManager/create.py", line 1501, in validate_final_page

    self.guest.add_device(self.nic)

  File "/usr/lib/python2.7/site-packages/virtinst/Guest.py", line 666, in add_device

    raise ValueError(_("Must pass a VirtualDevice instance."))

ValueError: Must pass a VirtualDevice instance.
```

--

unabhaengig davon was tue ich gegen das problem mit vnc und der nicht syncrnen maus wie in ein paar beitraegen zuvor beschrieben?

----------

## bbgermany

 *pieter_parker wrote:*   

> beim anlegen einer vm ueber virt-manager kommt hier kurz vor dem abschluss
> 
> Nicht erfasster Fehler bei Validierung von
> 
> Installationsparametern: Must pass VirtualDevice instance
> ...

 

https://forums.gentoo.org/viewtopic-t-884912-view-previous.html?sid=0b4f73a6b9c4352b93127b8cc8527297

 *pieter_parker wrote:*   

> 
> 
> --
> 
> unabhaengig davon was tue ich gegen das problem mit vnc und der nicht syncrnen maus wie in ein paar beitraegen zuvor beschrieben?

 

google hilft dir dabei!

----------

## yuhu

Wenn ich mich richtig erinnere hatte ich das gleiche Problem.

Als Abhilfe habe ich die erste VM von einer Vorlage (xml) kopiert.

----------

## pieter_parker

ich finde im internet nichts dazu warum die maus vom kde mit der maus im kvm-vnc nicht syncron ist

ich finde im netz auch nichts dazu wo ich im virt-manager sagen kann das ich tap1 an der netwerkkarte haben will

----------

## py-ro

Weil das mit der Maus nichts mit der VM zu tun, das ist ein VNC Problem, VNC ist einfach ein besch... Protokoll.

Ich hatte weiter oben ein Buch verlinkt, da ist auch Kapitel zu libvirt drin, dass du nichts findest glaube ich dir nicht.

Py

----------

## yuhu

 *Quote:*   

> ich finde im netz auch nichts dazu wo ich im virt-manager sagen kann das ich tap1 an der netwerkkarte haben will

 

Bei den VM Optionen solltest du eine NIC Device finde.

Dort wählst Du als Quellgerät "Specify shared device name" und schreibst unter Brücken-Name "tap1" hinein.

----------

## pieter_parker

tap1 ist gestartet

ich fuege in der vm eine netzwerkkarte hinzu

host-gerät: specify shared device name

 brücken-name: tap1

mac-adresse: 52:54:00:46:b7:c7

gerätemodell: hypervisor-standart

sage dann abschliessen und will die vm starten

ein fenster mit folgendem hinhalt erscheint dann

Error starting domain: Interner Fehler Failed to add tap interface to bridge. tap1 is not a bridge device

Traceback (most recent call last):

  File "/usr/share/virt-manager/virtManager/asyncjob.py", line 44, in cb_wrapper

    callback(asyncjob, *args, **kwargs)

  File "/usr/share/virt-manager/virtManager/asyncjob.py", line 65, in tmpcb

    callback(*args, **kwargs)

  File "/usr/share/virt-manager/virtManager/domain.py", line 1050, in startup

    self._backend.create()

  File "/usr/lib/python2.7/site-packages/libvirt.py", line 457, in create

    if ret == -1: raise libvirtError ('virDomainCreate() failed', dom=self)

libvirtError: Interner Fehler Failed to add tap interface to bridge. tap1 is not a bridge device

----------

## py-ro

Ist tap1 eine Brücke?

ich tippe mal auf nein.

Benutze mal den grafischen virt-manager, mit dem kannst die Netze nach Bedarf zusammenklicken.

Py

----------

## pieter_parker

ich starte den virt-manager ueber virt-manager

wo soll ich dort was zusammenclicken koennen mit den netzwerk einstellungen?

ich clicke auf meine vm

dann clicke ich auf anzeigen > details

dort kann ich einstellungen betreffend der vm vornehmen

----------

## bbgermany

Mal ganz blöd gefragt, aber als welcher User versuchst du das alles?

MfG Stefan

----------

## pieter_parker

als root kommt:

```
virt-manager 

g_dbus_connection_real_closed: Remote peer vanished with error: Underlying GIOStream returned 0 bytes on an async read (g-io-error-quark, 0). Exiting.

Beendet
```

es funktioniert nur als user, werde aber beim programmstart nach dem root pw gefragt, gebe es ein und bin im virt-manager

----------

## pieter_parker

als welcher user muss ich es denn starten?

----------

## yuhu

Bei mir läuft der der virt-manager als normaler Benutzer. Da habe ich nichts spezielles eingestellt.

----------

## pieter_parker

gut

aber woran kanns liegen das ich bei mir kein tap1 dev hinzufuegen kann

?

----------

## yuhu

Läuft bei Dir noch immer nichts mit virt-manager?

Oder scheitert es nur noch an der richtigen Netzwerkkonfiguration?

----------

## pieter_parker

beides richtig

bei mir laeuft immer noch nichts mit virt-manager weil es mit der netzwerkconfiguration ueberhaupt nicht funktionieren will

ohne laeuft es

ich kann vom virt-manager nicht auf tap1 zugreifen

was muss ich tun

----------

## bbgermany

Wieso zum Geier reitest du immer auf TAP1 rum? Ist dieses Device etwa schon angelegt? Jede VM braucht mit/ohne Bridging ein eigenes Interface fürs Netzwerk. Also ein eigenes TAP/TUN Interface. Weiterhin kannst du auch nur Befehle wie brctl oder die usermode-utils ausführen, wenn du root-Rechte hast. Das kann man aber mit Gruppen modifizieren. Schau auch mal als welcher User dein libvirtd läuft. Da musst du nämlich auch an der Konfiguration arbeiten, sonst wird das mit dem virt-manager überhaupt nichts.

Um eventuell zu verstehen was du dort machen willst, solltest du auf jeden Fall erstmal verstehen wie Netzwerk mit KVM/XEN etc funktioniert. Nur die Befehle blind einhacken hilft nämlich nicht zu lernen...

MfG. Stefan

----------

## pieter_parker

tap1 ist fuer die erste vm

tap2 fuer die zweite

usw

libvirtd laeuft als root

an welcher configuration muss ich arbeiten?

liegt das problem darin das der user der virt-manager startet nicht auf die tap-devs zugreifen kann?

wenn es daran liegt, wie loese ich das?

als root kann ich ueber die konsole die vm mit einem tap der tap dev starten und es funktioniert

----------

## bbgermany

So, als aller erstes solltest du mal hier schaun:

http://en.gentoo-wiki.com/wiki/KVM und insbesondere hiermit: http://en.gentoo-wiki.com/wiki/KVM#Packages und hiermit: http://en.gentoo-wiki.com/wiki/KVM#Networking_2

Damit du die Netzwerkkonfiguration sauber vorbereiten kannst!

Und dann beschäftigst du dich bitte mit libvirtd. Im besonderen Fall hinsichtlich den Berechtigungen:

http://libvirt.org/auth.html

Und ganz zum Schluss, wenn du nicht bridged über ethX arbeitest, dann solltest du dir mal die netfilter-Howtos zu Gemüte ziehen.

Und dann schauen wir nochmal, wenn es garnicht geht.

MfG. Stefan

----------

## pieter_parker

danke fuer die hilfe ... aber das mit den rechten beim libvirt verstehe ich noch nicht ganz

gibt es der verstaendnis halber so ein howto auf deutsch, oder kann mir jemmand bitte sagen was ich genau nun machen muss damit das mit dem virt-manager und dem netzwerk funktioniert

verzweifel bald

----------

## pieter_parker

wie muss ich vorgehen?

----------

## pieter_parker

hab jetzt wieder mehr zeit mich mit der sache zu beschaeftigen und will es erneut angehen

ich will virt-manager mit kvm nutzen, ich will das jede vm ihr eigenes tap-dev hat bei dem ich am host ueber iptables route was wohin und von wo nach wo darf oder nicht darf

mit

kvm -net nic,macaddr=00:00:00:00:01:01 -net tap,ifname=tap1,script=no,downscript=no -hda image -cdrom cdrom.iso -boot d -vnc password -vnc 192.168.0.1:0

und dann mit vncviewer hinverbinden funktioniert, auch das netzwerk aus der vm ins internet funktioniert

will das ganze aber handlicher haben, habe dazu app-emulation/virt-manager-0.9.0-r1 installiert

der libvirtd laeuft

ich verbinde mich als user mit dem ich im kde angemeldet bin zum "virt-manager", beim start wird nach dem root pw gefragt, ich gebe es ihm

es scheitert aber bei der netzwerk configuration im virt-manager

wie zum geier bringe ich dem virt-manager bei das ich in der virtuellen-maschiene1 tap1 nutzen moechte, in vm2 tap2, usw...

----------

## bbgermany

1. Solltest du dir mal die Howtos nochmal ansehen und dann

2. ist es mit großer Warscheinlichkeit ein Rechteproblem, warum du nicht das Device anlegen kannst.

MfG. Stefan

EDITH: Interessant wäre auch mal der komplette Fehler des virt-manager, da kann man dann vielleicht sehen wo dein Problem liegt.

----------

## pieter_parker

libvirtd laeuft als user root

/etc/conf.d/net

```
       config_tap1=( "192.168.1.1 netmask 255.255.255.0 brd 192.168.1.255" )

       tuntap_tap1=( "tap" )

       tunctl_tap1=( "-u pieter" )

          mac_tap1=( "00:00:00:00:01:01" )
```

```
ifconfig tap1

tap1      Protokoll:Ethernet  Hardware Adresse 00:00:00:00:01:01  

          inet Adresse:192.168.1.1  Bcast:192.168.1.255  Maske: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

          Kollisionen:0 Sendewarteschlangenlänge:500 

          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
```

bei einer vm bei der netzwerk configuration

host-geraet: specify shared device name

bruecken-name: tap1

mac-adresse: 00:00:00:00:01:01

geraetemodell: hypervisor-standard

beim starten der vm kommt dann:

```
Error starting domain: Interner Fehler Failed to add tap interface to bridge. tap1 is not a bridge device

Traceback (most recent call last):

  File "/usr/share/virt-manager/virtManager/asyncjob.py", line 44, in cb_wrapper

    callback(asyncjob, *args, **kwargs)

  File "/usr/share/virt-manager/virtManager/asyncjob.py", line 65, in tmpcb

    callback(*args, **kwargs)

  File "/usr/share/virt-manager/virtManager/domain.py", line 1050, in startup

    self._backend.create()

  File "/usr/lib/python2.7/site-packages/libvirt.py", line 510, in create

    if ret == -1: raise libvirtError ('virDomainCreate() failed', dom=self)

libvirtError: Interner Fehler Failed to add tap interface to bridge. tap1 is not a bridge device
```

muss ich in /etc/libvirt/ in den dateien "libvirtd.conf" , "lxc.conf" oder "qemu.conf" irgendwas einstellen?

ein

grep -v  ^# /etc/libvirt/libvirtd.conf | grep -v ^$

grep -v  ^# /etc/libvirt/lxc.conf | grep -v ^$

grep -v  ^# /etc/libvirt/qemu.conf | grep -v ^$

gibt jeweils nichts aus,

----------

## bbgermany

Hi,

wie oft denn noch: die Tap-Devices werden dynamisch angelegt. Du DARFST sie NICHT vorher konfigurieren!!!

Und der Fehler sagt dir das auch:

 *Quote:*   

> 
> 
> ```
> libvirtError: Interner Fehler Failed to add tap interface to bridge. tap1 is not a bridge device
> ```
> ...

 

Die Tap-Devices bekommen auch keine IP-Adresse, sondern die virtuellen Netzwerkkarten in den VMs.

MfG. Stefan

----------

## pieter_parker

/etc/conf.d/net

```
       config_tap2=( "null" )

       tuntap_tap2=( "tap" )

       tunctl_tap2=( "-u pieter" )

```

ifconfig tap2

```
tap2      Protokoll:Ethernet  Hardware Adresse 62:42:8f:36:e2:d5  

          inet6 Adresse: fe80::6042:8fff:fe36:e2d5/64 Gültigkeitsbereich:Verbindung

          UP BROADCAST MULTICAST  MTU:1500  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:3 overruns:0 carrier:0

          Kollisionen:0 Sendewarteschlangenlänge:500 

          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
```

bei der vm im virt-mananger bei der netzwerk configuration

host-geraet: specify shared device name

bruecken-name: tap2

geraetemodell: hypervisor-standard 

mac-adresse: 52:54:00:62:b5:4c (schon voreingestellt)

mit einem nicht vorconfiguriertem tap-dev kommt auch eine fehlermeldung..

```
Error starting domain: Interner Fehler Failed to add tap interface to bridge. tap2 is not a bridge device

Traceback (most recent call last):

  File "/usr/share/virt-manager/virtManager/asyncjob.py", line 44, in cb_wrapper

    callback(asyncjob, *args, **kwargs)

  File "/usr/share/virt-manager/virtManager/asyncjob.py", line 65, in tmpcb

    callback(*args, **kwargs)

  File "/usr/share/virt-manager/virtManager/domain.py", line 1050, in startup

    self._backend.create()

  File "/usr/lib/python2.7/site-packages/libvirt.py", line 510, in create

    if ret == -1: raise libvirtError ('virDomainCreate() failed', dom=self)

libvirtError: Interner Fehler Failed to add tap interface to bridge. tap2 is not a bridge device
```

ich verstehe es nicht, bitte, was mus ich tun ... schritt fuer schritt

----------

## bbgermany

Du verstehst es immernoch nicht und hast die Howtos nicht richtig gelesen.

Du musst wie ich schonmal geschrieben habe zuerst ein bridge device erstellen (z.B. br0) mit einer IP (welche auch immer, da du ja NAT machen möchtest). Dann kannst du das Interface als Gerät im virt-manager angeben und ein weiteres TAP Interface wird auf dieses Device "gebridged". Wenn es dann immernoch nicht geht, wäre der neue Fehler im virt-manager interessant.

MfG. Stefan

----------

## pieter_parker

mit "kvm -net nic,macaddr=00:00:00:00:01:01 -net tap,ifname=tap1,script=no,downscript=no -hda image -cdrom cdrom.iso -boot d -vnc password -vnc 192.168.0.1:0"

und dann mit vncviewer hinverbinden funktioniert, und das ganze ohne br0

wofuer will der virt-manager unbedingt dieses br0 device haben?

----------

## py-ro

Will er nicht, du hast im gesagt er soll das nehmen...

----------

## pieter_parker

verstehe das nicht, wie sage ich ihm das er kein br0 nehmen soll ...

muss ich ein br0 an ein tap1 bruecken, und das tap1 kann ich am host routen?

wenn ich ein br0 starte, hab ich am pc selbst keine verbindung mehr ins netz

/etc/conf.d/net

```
        bridge_br0=( "eth0 tap2" )

         brctl_br0=( "setfd 0 sethello 0 stp off" )

       rc_need_br0=( "net.tap2" )

        config_br0=( "192.168.1.1" )

       config_eth0=( "192.168.0.1 netmask 255.255.255.0 brd 192.168.0.255" )

          mtu_eth0=( "1500" )

       routes_eth0=( "default via 192.168.0.254" )

       config_tap2=( "null" )

       tuntap_tap2=( "tap" )

       tunctl_tap2=( "-u pieter" )
```

könnt ihr bitte eure configs posten

----------

## bbgermany

Wie man nur unschwer erkennen kann, scheint libvirt auf Bridge Devices wert zu legen, auch bei NAT (siehe http://libvirt.org/formatnetwork.html#examples ).

Im übrigen ist das jetzt hier vollkommen falsch:

 *Quote:*   

> 
> 
> ```
> bridge_br0=( "eth0 tap2" )
> 
> ...

 

richtiger ist:

```

config_eth0=( "192.168.0.1 netmask 255.255.255.0 brd 192.168.0.255" )

mtu_eth0=( "1500" )

routes_eth0=( "default via 192.168.0.254" )

bridge_br0=( "tap0" )

brctl_br0=( "setfd 0 sethello 0 stp off" )

rc_need_br0=( "net.tap0" )

config_br0=( "192.168.1.1 netmask 255.255.255.0 brd 192.168.1.255 " )

config_tap0=( "null" )

tuntap_tap0=( "tap" )

tunctl_tap0=( "-u pieter" )

```

Dann noch mit IP-Tables den Traffic NATen und ipforward aktivieren. Dann sollte dein Host auch wieder Netzzugang haben, denn eth0 mit IP und in der Brigde geht nicht.

MfG. Stefan

----------

## pieter_parker

hab das so wie von dir vorgeschalgen gemacht

```
        bridge_br1=( "tap1" )

         brctl_br1=( "setfd 0 sethello 0 stp off" )

       rc_need_br1=( "net.tap1" )

        config_br1=( "192.168.1.1 netmask 255.255.255.0 brd 192.168.1.255 " )

       config_tap1=( "null" )

       tuntap_tap1=( "tap" )

       tunctl_tap1=( "-u pieter" ) 
```

hab im virt-manager bei der vm "br1" angegeben, und die vm gestartet

es kam schonmal keine fehlermeldung...

(hab die gentoo minimal boot disc gestartet)

in der vm hab ich dann

```
ifconfig eth0 192.168.1.2

echo "namserver 192.168.0.254" > /etc/resolv.conf

route add default gw 192.168.1.1
```

gemacht, und dann mit ping google.de geguckt was passiert

iptables hab ich so eingestellt das er alles was nicht gezielt angegeben ist verwirft und im log anzeigt

im log sehe ich das br1 in den forward moechte....

ich frage mich warum br1? wo kommt das tap1 ueberhaupt zum einsatz?

gebe ich im virt-manager tap1 anstatt von br1 an, kommt die alt bekannte meldung

"Error starting domain: Interner Fehler Failed to add tap interface to bridge. tap1 is not a bridge device"

----------

## bbgermany

Deswegen solltest du dir die Howtos anschauen. Dort steht nämlich drin, wie das funktioniert.

 *http://en.gentoo-wiki.com/wiki/KVM#Networking_2 wrote:*   

> 
> 
> Ethernet bridging
> 
> Possible Network Layouts
> ...

 

Die Tap-Devices auf deinem Host sind nur die Brückengeräte für deine virtuellen Netzwerkkarten in den VMs. Wenn virt-manager eine VM anlegt/startet, solltest du auch ein tapX mehr in deinem System finden, dass auch auf br1 konfiguriert ist. Siehe auch:

```

brctl show br1

```

MfG. Stefan

----------

