Ještě lepší síťování ve VirtualBoxu

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?

  1. 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
  2. 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.

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

  4. 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 Usmívající se Najdete-li nějakou chybu (a ona tam nějaká určitě bude), nebojte se ji nahlásit. Ať Vám skript slouží! ;-)


Average: 5 (1 hlas)

Komentáře

oprava

ahoj, na prvni pohled to vypada super. Jenze to ma 2 male hacky smaze to z routovaci tabulky eth0 Nerozhodný 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 Hopla! Napiste aspon nekdo.........., Diky

Obrázek uživatele Miloso

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, že eth0 dostane stejnou adresu, jako tuším br0.

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

Smajlíci
>:-P>:-(:-]:-?B-):-[>:-D:-(:-oX-(:-D;-DO:-):-*:-X>:-):-$>:-|:-!>:-O|-):-):->:-|:-P;-P;-):'-(:-\
Obsah tohoto pole je soukromý a nebude veřejně zobrazen.
  • K formátování a úpravě obsahu můžete použít Texy!
  • Textoví smajlíci budou nahrazeni jejich grafickými ekvivalenty.
  • Můžete citovat jiné příspěvky pomocí tagu [quote].

Více informací o možnostech formátování

CAPTCHA
Otázka sloužící k ověření, zda-li je pisatel člověk (alespoň biologicky) a zabránění automatickému spamování.
Image CAPTCHA
Zkopírujte znaky z obrázku, velikost písmen hraje roli.
Syndikovat obsah