PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Qemu mit Bridge und Host-Only Netzwerk



tobsen
22.07.07, 12:31
Salve, ich verzweifel hier gerade an der Qemu Netzwerkkonfiguration, wie einfach ist dagegen doch der VMWare-Server. ;)

Ich möchte auf dem Host verschiedene Gäste laufen lassen, die sowohl eine IP vom Router bekommen und dann auch in dem Netz zu erreichen sind, als auch ein Host-Only Netz haben, in dem der Verkehr nicht den Host verlässt (z.B. mit IPs wie 10.0.0.2). Ersteres hab ich mittlerweile mit Hilfe der Links im Tutorial hingefrickelt:
Erst bastel ich mir ne Bridge auf dem Host:

#!/bin/sh

################################################## #############################
#
# Setup a network bridge instead of the main network interface.
# This bridge can then be used to connect further (virtual) interfaces to the LAN, eg. Qemu's tap devices.
# Starting the bridge leads to ca. 5 seconds of "network unreachable".

# Network interface that shall be replaced by a bridge.
HOSTIF=eth1

#
################################################## #############################


# Names used during bridge construction.
BRIF=br0
NEWHOSTIF=$BRIF$HOSTIF

# Check for root permissions
if [ `id -u` -gt 0 ]; then
echo "Need root permissions to run."
exit 1
fi

# Check for necessary tools
IFCONFIG=`which ifconfig`
IFRENAME=`which ifrename`
BRCTL=`which brctl`
IFUP=`which ifup`
IFDOWN=`which ifdown`

if [ -z $IFCONFIG ]; then
echo "ifconfig not found (make sure this machine has networking, and ifconfig is in the path)"
exit 127
fi

if [ -z $IFRENAME ]; then
echo "ifrename not found (is package ifrename installed?)"
exit 127
fi

if [ -z $BRCTL ]; then
echo "brctl not found (is package bridge-utils installed?)"
exit 127
fi

if [ -z $IFUP -o -z $IFDOWN ]; then
echo "ifup/ifdown not found (is this not a Debian distro?)"
exit 127
fi


# Main functionality
case "$1" in
start)
echo "Creating bridge $BRIF with $HOSTIF"

# Deactivate current network setup
$IFDOWN $HOSTIF
$IFCONFIG $HOSTIF 0.0.0.0 down

# Rename host interface
$IFRENAME -i $HOSTIF -n $NEWHOSTIF

# Create bridge
$BRCTL addbr $HOSTIF
$BRCTL stp $HOSTIF off
$BRCTL setfd $HOSTIF 1
$BRCTL addif $HOSTIF $NEWHOSTIF
$BRCTL show

# Activate bridge interfaces
$IFCONFIG $HOSTIF up
$IFCONFIG $NEWHOSTIF up

# Configure new bridge to match old config
echo "Configuring bridge $BRIF"
$IFUP $HOSTIF
;;

stop)
echo "Removing bridge $BRIF which contains $NEWHOSTIF"

# Deactivate interfaces
$IFDOWN $HOSTIF
$IFCONFIG $NEWHOSTIF down
$IFCONFIG $HOSTIF down

# Remove bridge
$BRCTL delif $HOSTIF $NEWHOSTIF
$BRCTL delbr $HOSTIF

# Rename bridged interface to old name
$IFRENAME -i $NEWHOSTIF -n $HOSTIF

# Activate old network setup
$IFCONFIG $HOSTIF up

# Reconfigure network to match original network setup
$IFUP $HOSTIF
;;

status)
$BRCTL show
;;

*)
echo "Usage: $0 [start|stop|status]"
;;
esac

exit 0


Danach starte ich die virtuelle Maschine (hier ein Linuxgast) mit folgendem Befehl:

kvm -nographic -hda vdisk.img -m 512 -net nic -net tap,script=./addtobridge -net nic

wobei das addtobridge so aussieht:

#!/bin/bash

# Connects the interface given in $1 to the bridge specified below.

BRIF=eth1

#echo "Connecting interface $1 to bridge $BRIF"

/sbin/ifconfig $1 up
/usr/sbin/brctl addif $BRIF $1

Danach hat der Gast eine IP aus dem vom Router verwalteten DHCP-Netz, und eine unkonfigurierte zweite Netzwerkkarte, die ich ja nach meinem Verständnis mittels des zweiten "-net nic" erzeugt habe.
Jetzt steh ich bezüglich der Konfiguration der zweiten Karte auf dem Schlauch: Wie krieg ich die in ein Host-Only Netz, so dass darüber Verbindungen zwischen den Gästen laufen können _ohne_ über den Router zu müssen? Wenn ich jetzt ein pump auf dem zweiten Interface laufen lasse bekomme ich eine zweite IP aus dem Routernetz, das bring mir nichts. :(

Danke im Voraus & schönen Sonntag,

tobsen