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.
Obsah článku
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 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
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 (
), 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.