Ne že bych se chtěl nějak moc vytahovat, ale ani ne před hodinkou, shodou okolností zrovna ve chvíli, kdy mě napadlo vytvořit si druhý testovací virtuální stroj s Arch Linuxem, jsem si uvědomil, jak je řešení přemostěného síťování z předminulého článku nepružné, právě používáme-li více virtuálních strojů. A tak tu mám pro Vás řešení :-)
Takže jak na to?
- Zapomeňte na předminulý článek, smažte skript a odstraňte ze své paměti zmínku, že jste článek vůbec kdy četli :-D
- Do souboru se seznamem modulů, které se načtou při bootování (v Gentoo
/etc/modules.autoload.d/kernel-2.6) připište tyto dva řádky:
tun
bridge
Díky těmto řádkům se potřebné moduly načtou při každém spuštění operačního systému.
- Do souboru s pravidly pro udev, doporučuji třeba
/etc/udev/rules.d/60-virtualbox.rules, přidejte tento řádek:
KERNEL=="tun", GROUP="vboxusers", MODE="0660"
Toto pravidlo zapříčiní, že každý člen uživatelské skupiny vboxusers, do které jistě patříte, bude mít přístup k zařízení /dev/net/tun.
- A konečně (prosím famfáry), přivítejte nový skript na vytvoření celého přemostění:
#!/bin/sh
# Usage: ./promisc.sh $1
# Where:
# $1 is number/count of virtual devices to create
USER=milan
HOST_IP=192.168.0.2
GATEWAY_IP=192.168.0.1
STARTING_IP=192.168.0.201
#
# Stop editing right here, real work begins
#
STARTING_IP_FIRST_PARTS=`echo $STARTING_IP | awk 'BEGIN { FS = "."; OFS = "." } { print $1, $2, $3 }'`
STARTING_IP_LAST_PART=`echo $STARTING_IP | awk 'BEGIN { FS = "." } { print $4 }'`
if [ "$#" != "1" ]; then
echo "Wrong arguments"
exit 1
else
brctl addbr br0
ifconfig eth0 0.0.0.0 promisc
brctl addif br0 eth0
ifconfig br0 $HOST_IP
for DEV in $(seq $1); do
tunctl -t tap$DEV -u $USER
brctl addif br0 tap$DEV
ifconfig tap$DEV $STARTING_IP_FIRST_PARTS.$STARTING_IP_LAST_PART up
bash -c "echo 1 > /proc/sys/net/ipv4/conf/tap$DEV/proxy_arp"
route add -host $HOST_IP dev tap$DEV
let STARTING_IP_LAST_PART+=1
done
arp -Ds $HOST_IP eth0 pub
route add default gateway $GATEWAY_IP
fi
Skript vyžaduje jen jediný argument, kterým je počet virtuálních síťových zařízení, které má vytvořit. Před jeho spuštěním je však třeba upravit první čtyři řádky:
- USER – jméno uživatele, pod nímž VirtualBox poběží
- HOST_IP – IP adresa Vašeho počítače
- GATEWAY_IP – IP adresa výchozí brány
- STARTING_IP – IP adresa první virtuální síťovky, například, zadáte-li
192.168.0.51, první virtuální síťovka pak bude mít také adresu 192.168.0.51, druhá 192.168.0.52, …
A s trochou štěstí by to mělo být vše
Najdete-li nějakou chybu (a ona tam nějaká určitě bude), nebojte se ji nahlásit. Ať Vám skript slouží! ;-)
Komentáře
oprava
ahoj, na prvni pohled to vypada super. Jenze to ma 2 male hacky smaze to z routovaci tabulky eth0
a kuli tomu prestane jit internet na lokalu, tak nevym co stim spusoby to radek „ifconfig eth0 0.0.0.0 promisc“ Ja to chtel pouzit na routru se 2 sitovkama jenze mi to promazlo routovaci tabulku a routr sel do prd…
Nasel by se nekdo kdo tomu rozumi a dovedl to opravit ???? Asi se s toho zblaznim
Napiste aspon nekdo.........., Diky
Re: oprava
To je zvláštní, také se k Internetu připojuji přes síťovku
eth0, takže s tím skript počítá a mi internet normálně dál jede. Ten řádek by měl způsobit, žeeth0dostane stejnou adresu, jako tušímbr0.Ale tak nějak chápu, jak se cítíte, když jsem se to snažil vykoumat, myslel jsem, že něco prohodím oknem :-)
Poslat nový komentář