[Megoldva] KVM hálózat

Fórumok

Sziasztok,
szeretnék pár virtuális gépet, hogy néhány "hálózati" dolgot könnyen ki tudjak próbálni.
A következő scripttel indítom a virtuális gépeket: (lent).
Röviden: létrehozok egy br0-át a brctl-el, két "tap" device-ot a tunctl-el, ezeket beszórom a br0-ba, és megmondom a kvm-nek, hogy használja szépen őket. Sok leírásba láttam így, amíg nem mondom ifconfiggal a br0-nak hogy up addig egyáltalán nincs hálózati kapcsolat a két virtuális gép között, ha felhúzom a br0-át akkor már van "ethernet" kapcsolat, viszont az IP csomagok még mindig nem jutnak át egyik TAP-ról a másikra. A kiinduló tap-on még megvannak a br0-án monitorozva is, de a másik tap-on már nem jelennek meg... Abból következtettek erre, hogy az ARP request-re jön válasz a másik végpontról, de a ping nem megy át... (ezt wiresharkkal is jól megnéztem :) ) Mi hiányzik ? A két gépen ifconfiggal statikusan konfigurálok egy-egy ip-t...
ifconfig eth0 10.10.10.10/24
ifconfig eth0 10.10.10.11/24
tévedek vagy így látnia kéne ? Esetleg a host gépen, kéne valamit még jól beállítani ?
Nem vagyok teljesen hülye a hálózatokhoz, de a tap, és br dolgokba teljesen új vagyok. Ha jól értem a br egy bridge, ethernet kapcsolat két hálózat között ? Tehát úgy viselkedik mint egy switch, vagy hub... ?
Előre is köszönöm a türelmet és a segítséget. A scriptet én írtam, így semmi se biztos :)


#!/bin/bash

function addbr
#$1 - name
{
#Set up bridge
sudo brctl show | grep $1 &> /dev/null
if [ $? -ne 0 ] ; then
sudo brctl addbr $1
sleep 1
sudo ifconfig $2 up
fi
}

function delbr
#$1 - name
{
sudo ifconfig br0 down
sudo brctl delbr $1
}

function addtap
#$1 - bridge device
#$2 - tap device
{
#setup network
sudo tunctl -b -u `whoami` -t $2
sleep 1
sudo ip link set $2 up
sleep 1
sudo brctl addif $1 $2
}

function deltap
#$1 - bridge device
#$2 - tap device
{
sudo brctl delif $1 $2
sleep 1
sudo ip link set $2 down
sleep 1
sudo tunctl -d $2
}

function initpid
{
PIDFILE=`mktemp`
}

function addpid
{
echo $! > $PIDFILE
}

function waitforpids
{
for i in `cat $PIDFILE` ; do
wait $i
done
}

initpid

addbr br0
addtap br0 ktap0
sudo kvm -hda images/base.img --snapshot -net nic,vlan=0,model=virtio,macaddr=d8:d3:85:12:65:10 -net tap,vlan=0,ifname=ktap0,script=no,downscript=no &
addpid

addtap br0 ktap1
sudo kvm -hda images/base.img --snapshot -net nic,vlan=0,model=virtio,macaddr=d8:d3:85:12:65:11 -net tap,vlan=0,ifname=ktap1,script=no,downscript=no &
addpid

waitforpids
deltap br0 ktap0
deltap br0 ktap1
delbr br0

Megoldás:
Paranoid iptables a notebook-on...

sudo iptables -A FORWARD -i br0 -j ACCEPT

ez az új "rule" megoldja. Köszönöm szépen a segítséget mindenkinek.

Hozzászólások

Ennyire hülye kérdés, vagy senki nem tudja, vagy nincs rá ideje ?

röviden: up.

Köszi. előre is.

A virt. gépeken mi a

route -n

kimenete?
A host-on a

brctl show

kimete?

Hello, előre is köszönöm.


brctl show

bridge name bridge id STP enabled interfaces
br0 8000.2e3dccd0075c no ktap0
ktap1

route -n (egyik, 20.20.20.21/24)
Dest, gw, genmask, flags, metric, ref, use, iface
20.20.20.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

(masik, 20.20.20.20/24)
20.20.20.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

Üdv, P.

Megvan a ludas... a host iptables beállítások lesznek...
mikor FORWARD, INPUT, defaultot DROP-ról ACCEPTre raktam elkezdett szaladni :) Hülye hülye hülye.... Egy kérdés még... FORWARD-ba kéne engedélyezni az összes br0-ról jövő kapcsolatot ? (meg ami már része egy folyamnak ?)

próbálgatom, ide böfögöm ha találok ultimate megoldást :)

"Ha jól értem a br egy bridge, ethernet kapcsolat két hálózat között ? Tehát úgy viselkedik mint egy switch, vagy hub... ?"

Nem. A bridge az osi modell L2 szintjén irányítja a csomagokat a két vagy több általa látott hálózat között, azaz a mac címeket jegyzi meg a szegmenseken és azok szerint végzi a rútolást. Ez a szoftveresen emulált nem tudom, hogy így működik-e. A switch és a hub ilyet nem tud.