Kategória: VirtualBox

Zmenené: 10. september 2010

VirtualBox - hostiteľské rozhranie

Pred nástrojom VirtualBox som používal VMWare. Je to pokročilý virtualizačný nástroj, ktorý poskytuje príjemné grafické rozhranie aj pre nastavenie pokročilých možností. Keď som prešiel na používanie VirtualBox, už som sa nekochal tým, čo tá virtualizácia dokáže, ale chcel som z neho maximum.

Pokiaľ používate VirtualBox verzie 2.1, celé toto čarovanie s mostami môžete vynechať, pretože nová verzia VirtualBox to urobí za Vás. Stačí jednoducho zvoliť Hostiteľské rozhranie a zo zoznamu vybrať, na ktoré fyzické rozhranie sa má virtuálny stroj zavesiť…

Medzi tieto pokročilé možnosti bezpochyby patrí integrácia virtuálneho stroja do reálnej siete a spúšťanie virtuálnych strojov z reálneho disku. Tu sa zameriam práve na integráciu do siete. Sieťové možnosti virtuálneho stroja vo VirtualBox som popisoval inde. Tu sa zameriam práve na časť nazvanú Hostiteľské rozhranie.

Práve toto nastavenie siete virtuálneho stroja umožňuje jeho plnú integráciu do reálnej siete, a keďže využívam virtuálne počítače na testovanie rôznych sieťových nastavení a služieb, potrebujem aby boli v sieti prístupné. Lenže toto nastavenie je potrebné dotvoriť, pretože v grafickom rozhraní je dostupná len možnosť tento typ siete používať. A aby som bol úplný, ešte aj možnosť určiť sieťové rozhranie a nejaké skripty. Lenže práve toto rozhranie už musí existovať a pre jeho vytvorenie však grafické rozhranie neposkytuje žiadne nástroje. A myslím, že je to dobre. Ten kto chce tieto veci využívať, by mal o systéme a sieti niečo vedieť, takže je to spôsob ochrany pred nesprávnym zásahom neznalého používateľa.

Kým som sa do tohoto nastavovania pustil, preštudoval som viacero rôznych návodov na rôznych koncoch internetu. Väčšina z nich sa zhodovala v jednom postupe, a to vo vytváraní skriptov, ktoré toto rozhranie vytvárajú. Ja som však tvor (od príprody) lenivý, preto som sa neuspokojil s takýmito riešeniami a hľadal som ďalej. Mal som relatívne jasno, že to musí ísť nejako zautomatizovať. Nakoniec som našiel, čuduj sa svet, v manuáli k VirtualBox. Je to postup presne aký som hľadal a keby som si neodkladal manuál na koniec, našiel by som ho aj skôr.

Celý postup je rozdelený do niekoľkých krokov a vyžaduje nainštalovaný balík bridge-utils:

sudo apt-get install bridge-utils

Je dosť možné, že ho už nainštalovaný aj máte. Nasleduje úprava súboru /etc/network/interfaces tak, aby popisoval náš most.

Ethernetový most

Malá odbočka pre tých, ktorí netušia o čom je reč. Ethernetový most, je také sieťové rozhranie, ktoré premosťuje (čiže spája) samostatné sieťové rozhrania, a tieto potom môžu vystupovať, všetky spolu, ako jedno rozhranie.

Bez mostu

Bez mostu

Bez mostu vystupujú všetky rozhrania ako samostatné, možu prijímať a odosielať dáta, ale o svojej existencii navzájom nevedia. To zabezpečuje až sieťový systém počítača, ktorý by pomocou smerovacej tabuľky mohol smerovať dáta z jedného rozhrania na druhé.

S použitím mostu

S použitím mostu

Naproti tomu, pomocou mostu premostíte jednotlivé rozhrania, tento most (br0) potom vystupuje ako samostatné sieťové rozhranie, ktoré dokáže preposielať dáta medzi jednotlivými rozhraniami. Takýmto spôsobom sa teda (veľmi zjednodušene) dostanú aj virtuálne rozhrania k vonkajšej sieti a naopak.

Nastavenie mostu

Ako som už začal, popis mostu je možné vložiť do súboru /etc/network/interfaces, čo je štandardný konfiguračný súbor v Debiane, ktorý popisuje sieťové rozhrania. Ak máte v sieti DHCP server, stačí do tohoto súboru pridať takýto popis mostu:

auto br0
iface br0 inet dhcp
    bridge_ports eth0

Ak DHCP server nemáte, alebo nepoužívate, je tu možné pridať všetky potrebné informácie:

auto br0
iface br0 inet static
    address 192.168.0.1
    netmask 255.255.255.0
    network 192.168.0.0
    broadcast 192.168.0.255
    gateway 192.168.0.253
    bridge_ports eth0

Čo ste to vlastne nastavili? Aby sa automaticky spustil ethernetový most br0, do ktorého je pridané sieťové rozhranie eth0. Parametre tohoto rozhrania sú v prvom prípade nastavované z dhcp a v druhom prípade staticky. Pri statickom nastavení sú povinné len parametre address a netmask.Samozrejme parametre siete prispôsobte svojej sieti. Tu manuál odporúča reštartovať nastavenie siete, ale mne sa osvedčilo ešte zmeniť konfiguráciu rozhrania eth0 tak, aby som ho prepol do promiskuitného režimu:

auto eth0
iface eth0 inet manual
    up ifconfig $IFACE 0.0.0.0 up
    up ip link set $IFACE promisc on
    down ip link set $IFACE promisc off
    down ifconfig $IFACE down

A teraz už naozaj reštart sieťového nastavenia:

invoke-rc.d networking restart
 * Reconfiguring network interfaces...
 * if-up.d/mountnfs[eth0]: waiting for interface br0 before doing NFS mounts

Waiting for br0 to get ready (MAXWAIT is 32 seconds).                                [ ok ]

Toto nastavenie zabezpečí, že Váš most bude k dispozícii aj po reštarte, len sa neľakajte, reštart nastavenia siete teraz potrvá trochu dlhšie (ak ho chcete skrátiť, môžete k týmto nastaveniam mostu pridať parameter bridge_maxwait 0).

Virtuálne rozhrania

Teraz nastal čas na vytvorenie virtuálnych rozhraní pre virtuálne stroje, v súlade s manuálom ich budem volať vboxX (kde to X bude poradové číslo rozhrania). Pre vytváranie virtuálnych rozhraní ponúka Linux nástroj tunectl z balíčka uml-utilities, ale aj VirtualBox prichádza s nástrojmi príkazového riadku, ktoré plnia tento účel VBoxAddIF, VBoxDeleteIF a VBoxTunctl. Nástroj VBoxTunctl je ekvivalentom k tunectl a je distribuovaný pre prípad, že by nejaká distribúcia tunectl neposkytovala.

VBoxAddIF vytvára trvalé rozhranie TAP, ktoré sa po reštarte obnovuje. Toto rozhranie nazvime vbox0, vbox1 atď. Jeho syntax je:

VBoxAddIF [vboxx] [user] [brx]

čiže vyžaduje ako parametre meno virtuálneho rozhrania, meno používateľa a meno mostu. napríklad nasledujúci príkaz vytvorí rozhranie vbox0 pre používateľa slavko a pridá ho do mostu br0 (príkaz vyžaduje administrátorské práva):

VBoxAddIF vbox0 slavko br0

čo je ekvivalentom k:

tunectl -t vbox0 -u slavko
brctl addif br0 vbox0

Pre nastavenie virtálneho rozhrania vo virtuálnom stroji môžete použiť grafické rozhranie (Nastavenie ‣ Sieť ‣ Názov rozhrania), samozrejme pri použití pripojenia Hostiteľské rozhranie) alebo môžete použiť príkazový riadok:

VBoxManage modifyvm "Meno_VirtStroja" -hostifdev1 vbox0

Nastavenie virtuálneho rozhrania

Toto riešenie síce prežije reštart počítača (asi si to niekde zapisuej VirtualBox), ale neprežije reštartovanie sieťového nastavenia. Preto použite obdobný postup ako pri moste, čiže nadefinujte rozhranie do /etc/network/interfaces. Tu už je potrebný balíček uml-utilities, ktorý obsahuje príslušné nástroje (aj tu je možné, že ho už máte nainštalovaný):

apt-get install uml-utilities

Pred tým ako môže VirtualBox pristupovať k rozhraniu, musí byť používateľ, ktorý ho spúšťa, pridaný do skupiny uml-net, napríklad nasledujúci príkaz pridá do tejto skupiny používateľa slavko:

addgroup slavko uml-net

Aby sa prejavila zmena, musíte sa znova prihlásiť.

Pložka v /etc/network/interfaces, popisujúca virtuálne rozhranie môže vyzerať napríklad takto:

auto vbox0
iface vbox0 inet manual
    up ifconfig $IFACE 0.0.0.0 up
    down ifconfig $IFACE down
    tunctl_user slavko

Nezabudnite v poslednom riadku nastaviť správne používateľské meno a pridať túto definíciu pred definíciu mosta. Ešte je potrebné pridať toto nové rozhranie do mosta. Takže pridajte meno rozhrania do položky bridge_ports v časti definície mosta br0, napríklad takto:

bridge_ports eth0 vbox0

teraz možno bez obáv reštartovať nastavenie siete:

invoke-rc.d networking restart

Zhrnutie

Pokiaľ potrebujete viacero virtuálnych rozhraní, jednoducho si pridajte ďalšie definície, nezabudnite pridať príslušné rozhrania do mostu. Pomenovanie rozhraní menom vboxX nie je podmienkou, pokojne si ich môžete nazvať ako chcete.

Rozdiel medzi použitím nástrojov VirtualBoxu (VBoxAddIF a VBoxDeleteIF) a nástrojmi tunectl a brctl som našiel len jediný a ten sa týka štartu počítača (respektíve štartu siete). Pri použití nástrojov VirtualBoxu je na obrazovku vypisovaných menej informácií, takže výber je len na Vás.