# Netzwerk mit qemu

## l3u

Hallo :-)

Ich habe bisher ein paar virtuelle Maschinen mit VirtualBox laufen. Funktionieren alle super. Jetzt wollte ich mir mal kvm und qemu anschauen. Weil VirtualBox ist ja Oracle und Oracle ist böse … (Frage nebenbei: lohnt sich qemu? Sollte man es VirtualBox vorziehen?!)

Leider hab ich eine Virtualisierung mit qemu nicht „einfach so“ hinbekommen. Das Netzwerk tut nicht ganz das, was ich gern hätte.

In VirtualBox hab ich eine „Netzwerkbrücke“ eingestellt. Die virtuelle Maschine hat eine Netzwerkkarte und eine IP-Adresse im selben Netz wie das Host-System. Beide können sich auch gegenseitig pingen etc.

Wie stelle ich das qemu an? Ich hab da mit TAP-Devices und Bridging rumexperimentiert, aber funktioniert hat es nicht (ich hab allerdings auch keine große Ahnung davon).

Kann doch nicht so schwer sein? Steht doch bestimmt auch irgendwo. Für jede Hilfe bin ich dankbar!

----------

## mike155

QEMU/KVM ist toll und kann sehr viel! Allerdings ist ist eine Einarbeitung etwas aufwändiger. Aber es lohnt sich definitiv!

Für den Einstieg würde ich vielleicht erst einmal mit libvirt arbeiten, das dann qemu-kvm aufruft.

Bzgl. Netzwerke gibt es viele verschiedene Möglichkeiten, z. B.

1) Man kann eine virtuelle Maschine komplett ohne Netzwerk laufen lassen

2) Man kann eine virtuelle Maschine so laufen lassen, dass sie nur Kontakt zum Host hat, siehe z.B. hier: http://gentooexperimental.org/~patrick/weblog/archives/2013-11.html#e2013-11-14T08_05_59.txt

3) Man kann auf dem Host mit den brutils eine virtuelle Bridge anlegen und dann eine oder mehrere VMs und eine oder mehrere physikalische Netzwerkkarten mit der Bridge verbinden. Ich arbeite hier immer mit TUN/TAP interfaces. Schau zum Beispiel mal hier: http://qemu-buch.de/de/index.php/QEMU-KVM-Buch/_Netzwerkoptionen/_Virtuelle_Netzwerke_konfigurieren

----------

## l3u

Ich hab’s nach der Anleitung probiert:

```
qemu-kvm -cdrom grml64-small_2013.02.iso -net nic,vlan=0 -net tap,vlan=0,ifname=tap0
```

entsprechend /etc/qemu-ifup und /etc/qemu-ifdown angelegt. Es wird auch tap0 als Netzwerkinterface im Host-System angelegt und eth0 im Gastsystem. Aber das Gastsystem kann sich nur selbst pingen und nichts sonst, auch nicht das Hostsystem.

Ich will nur eine virtuelle Maschine laufen lassen und die soll eine Netzwerkkarte im selben Netz wie das Hostsystem und Zugriff auf dieses Netzwerk haben. Was mache ich falsch?

----------

## mike155

Ferndiagnosen sind immer etwas schwierig... Der Qemu-Aufruf sieht erst einmal gut aus. Poste mal die Ausgaben von "brctl show" und von "ifconfig -a" auf dem Host-System. Poste auch die IP-Adresse und Netzmaske, die Du im Gast-System verwendest.

----------

## l3u

Okay, jetzt hat’s funktioniert: es war etwas mit der Netzwerkbrücke nicht in Ordnung.

Folgende Konfiguration von /etc/conf.d/net hat funktioniert:

```
config_eth0="null"

tuntap_tap0="tap"

config_tap0="null"

config_br0="192.168.178.80/24"

routes_br0="default via 192.168.178.1"

bridge_br0="eth0 tap0"

rc_net_br0_need="net.eth0 net.tap0"
```

Mit folgendem Aufruf:

```
qemu-kvm -cdrom grml64-small_2013.02.iso -net nic -net tap,ifname=tap0,script=no,downscript=no
```

Aber ich hab trotzdem noch eine Frage: Damit das funktioniert, muss ich ja die Konfiguration von eth0 auf "null" setzen. Das heißt, dass ich die Netzwerkbrücke immer laufen lassen muss, auch, wenn ich gar keine virtuelle Maschine benutze, oder?! Geht das nicht auch irgendwie dynamisch? Also dass der Brückenbetrieb nur dann läuft, wenn ich die virtuelle Maschine starte? So wie das bei VirtualBox der Fall ist? Oder haben die das irgendwie ganz anders (weniger performant?) realisiert?

----------

## mike155

 *Quote:*   

> Damit das funktioniert, muss ich ja die Konfiguration von eth0 auf "null" setzen.

 

Ja, das ist so, wenn Du mit einer Bridge arbeitest.

Wenn Du die VM nur ab und zu nutzt, kannst Du den Rechner natürlich

beim Booten zunächst ohne Bridge konfigurieren und zum Starten der 

VM(s) ein kleines Bash-Script schreiben, das zunächst die Bridge 

installiert (und dabei die IP-Adresse des Rechners von eth0 auf br0 

umzieht) und die VM(s) startet. So mache ich das bei Rechnern, auf 

denen nur ab und zu eine VM läuft.

Bei Servern, bei denen die VMs immer laufen, arbeite ich gerne mit zwei

Ethernet-Adaptern. Der erste ist nur für den Host Rechner und an den

zweiten werden die Bridge und die VMs gehängt.

----------

## syn0ptik

hallo,

Du mußt gemacht der qemu laüft mit

```
-net nic,model=rtl8139 -net tap,ifname=tap0
```

----------

