VirtualBox – sieťovanie 2.2
Vo verziách 2.1 a 2.2 boli možnosti nastavenia virtuálnych sieťových rozhraní prebudované. A nejedná sa len o zmenu terminológie, ale pribudli aj nové veci. Aj vzhľadom k tomu som sa rozhodol prepracovať minuloročný článok tak, aby reagoval na aktuálny stav. Čo teda možno nastaviť pre visrtuálnu sieť vo VirtualBoxe?
Sieťové rozhrania
VirtualBox poskytuje od verzie 2.2 pre vytvorenie sieťového pripojenia každého virtuálneho stroja až štyri virtuálne sieťové rozhrania (virtuálne sieťové karty) a pre každú z nich ponúka na výber päť typov. Vybrať si môžete naozaj, ktorú len chcete a nestretol som sa (ak nepočítam problémy s ovládačmi niektorých OS) s problémami pri používaní ktorejkoľvek:
Vo verzii 2.2.0 je problém s emuláciou kariet PCNet III, tento problém by mal byť riešený v ďalšom vydaní (bugreport), preto použite radšej inú kartu.
- AMD PCNet PCI II;
- AMD PCNet FAST III (predvolená);
- Intel PRO/1000 MT Desktop;
- Intel PRO/1000 T Server;
- Intel PRO/1000 MT Server.
Ak si chcete vyskúšať, ako fungujú a či ich OS rozpozná, využite, že virtuálny stroj môže mať štyri sieťové rozhrania a nastavte pre každé iný typ karty (napríklad v režime nepripojené) a prosto skontrolujte, či ich systém rozpozná.
Windows Vista nepozná (nemá ovládače) pre karty AMD PCNet (neskúšal som, ale možno pomôžu tieto ovládače).
Každé z týchto sieťových rozhraní môže byť nastavené samostatne v jednom z piatich režimoch
- Nepripojené (Not attached);
- Preklad sieťových adries (Network Address Translation);
- Sieťový most (Bridged networking);
- Interná sieť (Internal networking);
- Len s hostiteľom ( Host-only networking);
Tieto režimy sa od predchádzajúcich verzií mierne líšia, popis starších režimov je v staršej verzii tohoto článku (VirtualBox - sieťovanie), ak teda používate staršiu verziu, pozrite si starší článok.
Nepripojené
V tomto režime je virtuálnemu stroju vytvorené virtuálne sieťové rozhranie, virtuálny operačný systém ho môže rozpoznať, ale toto rozhranie nie je pripojené k žiadnej sieti, vlastne akoby do sieťovej karty nebol pripojený kábel. Týmto spôsobom je možné odpojiť "sieťový kábel" a prerušiť spojenie, čo je možné využiť na informovanie virtuálneho systému, že neexistuje sieťové spojenie a vynútiť rekonfiguráciu.
Virtuálny stroj s takto nastaveným sieťovým rozhraním nemá (cez toto rozhranie) sieťový prístup k žiadnym iným strojom, ani k reálnym a ani k virtuálym. Rovnako ostatné stroje (reálne anii virtuálne) nemajú prístup k takto nastavenému virtuálnemu stroju.
Preklad sieťových adries
Virtuálny systém s takto nastavenou sieťovou kartou je obdobou reálneho stroja, ktorý je pripojený k sieti prostredníctvom smerovača, ktorý sa stará o preklad adries. Funkciu smerovača v tomto prípade obstaráva samotný program VirtualBox (čiže akoby hostiteľ). Je to najjednoduchší spôsob sieťového nastavenia, ktoré zaisťuje prístup virtuálneho stroja k vonkajšej sieti, zvyčajne bez potreby ďalšieho nastavenia na hostiteľskom či virtuálnom systéme. Pri použití tohto nastavenia nie je virtuálny systém z vonkajšej siete viditeľný a ani prístupný. Virtuálny stroj získava svoje sieťové nastavenia z DHCP servera, ktorý je integrovaný vo VirtualBoxe. Prvá sieťová karta je pripojená k sieti 10.0.2.0, druhá k 10.0.3.0 a tak ďalej (nastavenie siete je možné zmeniť pomocou nástroja VBoxManage).
Použitie NAT má niektoré obmedzenia, ako neúplná podpora ICMP (ping už funguje), nedoručovanie UDP broadcastov, neúplná podpora VPN, či problémy so smerovaním portov < 1024. Viec v používateľskom manuáli.
Virtuálny stroj s takto nastaveným sieťovým rozhraním má sieťový prístup k vonkajšej sieti, k službám hostiteľa (vždy na prvej IP adrese danej siete), ale nemá prístup k ostatným virtuálnym strojom. Ostatné stroje (reálne ani virtuálne) nemajú prístup k takto nastavenému virtuálnemu stroju (výnimku tvorí smerovanie portov – viz nižšie).
Sieťový most
Preč sú doby, keď bolo treba zložito nastavovať (najmä v Linuxe) systém aby mohol používať tento režim. Takže ak donedávna bol dôvod, aby ho sieťoví laici obchádzali širokým oblúkom, od verzie 2.1 už neexistuje.
V tomto režime je sieťové rozhranie akoby premosťujúce reálne sieťové rozhranie hostiteľa. Podrobnosti myslím nie sú potrebné, o to zaujímavejší je výsledok. Pretože takto pripojený virtuálny stroj akoby bol pripojený k reálnej sieti. Má svoju sieťovú adresu (treba nastaviť vo virtuálnom OS) z rozsahu reálnej siete a dokáže komunikovať so všetkými strojmi v reálnej sieti, ako aj oni s ním, a to aj s ostatnými virtuálnymi strojmi, ktoré majú nastavený tento režim.
V skutočnosti som sa pri komunikácii medzi premostenými virtuálnymi strojmi stretol s niektorými problémami, ale komunikácia je možná.
Znie to krásne, však? Presne toto mi oproti VMware chýbalo. Aby bolo možné tento režim používať, je potrebný špeciálny ovládač, ktorý sa nainštaluje a spustí pri inštalácii VirtualBoxu (potrebuje hlavičkové súbory jadra). Ak je potrebné kedykoľvek neskôr ovládač doinštalovať, či aktualizovať, možno využiť spúšťací skript (aspoň v Debiane) a spustiť ho s parametrom setup:
invoke-rc.d vboxdrv setup
No a v nastavení virtuálneho sieťového rozhrania je potrebné zvoliť fyzické rozhranie hostiteľa, ktoré má byť premostené.
Interná sieť
Interná sieť je veľmi podobná režimu sieťového mostu, a to v tom, že virtuálny stroj môže priamo komunikovať s vonkajším svetom. Avšak vonkajší svet je obmedzený len na ostatné virtuálne stroje, ktoré sú pripojené k tej istej internej sieti. Hoci všetko, čo sa dá robiť v tomto režime, sa dá robiť aj v režime hostiteľského rozhrania, bol vytvorený tento samostatný režim. Vyčlenenie tejto internej komunikácie do samostatného rožimu urobili autori najmä pre:
- Bezpečnosť - v režime hostiteľského rozhrania prechádza celá sieťová komunikácia cez rozhranie hostiteľského systému, takže je možné na zachytenie prevádzky použiť paketový sniffer.
- Rýchlosť - interná sieť je oveľa efektívnejšia ako hostiteľské rozhranie, pretože VirtualBox môže priamo prenášať dáta, bez ich posielania cez hostiteľský operačný systém.
Interné siete sú vytvárané automaticky podľa potreby a nie je ich centrálna konfigurácia. Každá interná sieť má svoje meno, ktoré je možné nastaviť v nastavení siete virtuálneho stroja, v režime interná sieť (prvý krát ho treba napísať, potom je dostupné v rozbaľovacom zozname). Všetky sieťové rozhrania s rovnakým menom siete (predvolene intnet) sú prepojené virtuálnym smerovačo, ktorý implementuje úplný Ethernetový prepínač s podporou broadcast/multicast rámcov a promiskuitného režimu.
Takto nastavený virtuálny stroj nemá prístup do reálnej siete ani neexistuje pre okolité stroje, ale môže komunikovať s ostatnými virtuálnymi strojmi v rovnakej virtuálnej lokálnej sieti.
Len s hostiteľom
Vo verzii 2.2 bol zavedený nový sieťový režim, ktorý je akýmsi hybridom režimov sieťového mosta a internej siete (pamätáte, že sú to podobné režimy?). Rovnako ako pri sieťovom moste, je možné aby virtuálny stroj plnohodnotne komunikoval s virtuálnym vonkajším svetom (virtuálne stroje medzi sebou a s hostietľom) akoby boli pripojené k skutočnému prepínaču. Avšak na túto komunikáciu nepotrebujú reálne sieťové rozhranie hostiteľa, ale je vytvárané špeciálne softvérové loopback rozhranie. Takže komunikácia medzi virtuálnymi strojmi je skrytá pred reálnym svetom, ale môže byť zachytená hosťujúcim systémom.
Smerovanie portov
Spomínal som, že virtuálny stroj za NAT nie je z vonkajšej siete dostupný, ale VirtualBox poskytuje možnosť ako sprístupniť určité služby aj pre zvyšok siete, a to pomocou mechanizmu presmerovania portu (port forwarding).
Princíp spočíva v tom, že VirtualBox počúva na určenom porte hosťujúceho počítača a prijaté požiadavky preposiela na určený port virtuáneho stroja. Pre vonkajšiu sieť to vyzerá akoby daná služba bežala na hosťovskom systéme. Služby, ktoré chcete sprístupniť môžete nastaviť pomocou nástroja príkazového riadku VBoxManage. Stačí len vedieť, ktoré porty daná služba používa a určiť, ktoré porty použiť na hosťujúcom počítači (je možné použiť akýkoľvek aktuálne nepoužitý port).
Nastavenie presmerovania portov na virtuálny stroj vyžaduje tri príkazy, napríklad pre sprístupnenie webového servera:
VBoxManage setextradata "DebDevel"
"VBoxInternal/Devices/pcnet/0/LUN#0/Config/guesthttp/Protocol" TCP
VBoxManage setextradata "DebDevel"
"VBoxInternal/Devices/pcnet/0/LUN#0/Config/guesthttp/GuestPort" 80
VBoxManage setextradata "DebDevel"
"VBoxInternal/Devices/pcnet/0/LUN#0/Config/guesthttp/HostPort" 8080
Kde "DebDevel" je meno virtuálneho stroja a guesthttp je ľubovoľné pomenovanie pre danú konfiguráciu presmerovania. S týmto nastavením budú všetky TCP spojenia na port 8080 hosťujúceho systému presmerované na port 80 virtuálneho stroja. Protokol môže byť buď TCP alebo UDP (na veľkosti nezáleží). Pre odstránenie tohoto mapovania je potrebné spustiť znova tieto príkazy, ale už bez parametrov (TCP, 80 a 8080).
Treba dať pozor na to, že v uvedený príklad je platný pre virtuálne rozhranie PCNet (pcnet v ceste), pre virtuálne rozhranie Intel PRO/1000 treba pcnet nahradiť e1000. V neposlednom rade treba pamätať, že týmto spôsobom možno nastaviť na hosťujúcom stroji (HostPort) číslo portu väčšie ako 1024, pre nižšie čísla portov by boli potrebné práva superpoužívateľa (root).
PXE boot
V režime prekladu adries je podporované aj PXE bootovanie. Zabudovaný DHCP server režimu NAT môže posielať súbor s menom vmname.pxe, ak existuje v adresári TFTP, ktorý zase musí byť v adresári, v ktorom sa nachádza súbor VirtualBox.xml. Tneto súbor však si však musí pripraviť každý sám (nie je súčasťou VirtualBox).
Zhrnutie
Čo povedať na záver? Ak nepotrebujete vo virtuálnom stroji prístup k sieti, tak zvoľte Nepripojené. Ak potrebujete prístup k sieti, ale nepotebujete, aby okolie malo prístup k virtuálnemu stroju, použite NAT, ktorý vyžaduje minimálne (až žiadne nasatvenie). Ak potrebujete aby virtuálne stroje mali prístup jeden k druhému, ale nepotebujete zvyšok siete, použite Internú sieť.
No a ak vyžadujete úplný prístup k internetu a okolitej sieti, použite Hostiteľské rozhranie, ale pripravte sa, že to od Vás bude vyžadovať aj určité vedomosti o nastavení sieťových mostov a siete ako takej.
Mám pocit, že celému tomuto rozprávaniu ešte niečo chýba, preto celkom na koniec pridávam diagramy jednotlivých režimov. Čiarkované spojenia sú virtuálne cesty, ktoré fyzicky neexistujú.




Komentáre
zaujíma ma, či sú tie schémy virtuálnej siete pochopiteľné, najmä tie posledné dve.
Lokalna siet, to znamena ze sa vidi virt. stroj1 s virt. strojom2, ties sa vidia s hostitelom a vidia aj internet???
pekne si to vysvetlil. ucitel sa nezaprie. teraz tomu rozumiem uplne.
dik.
1. Hostitel vidi virtualnu masinu
2. Virtual vidi hostitela
3. Na oboch funguje internet
to vsetko sucasne sa mi nepodarilo :-(
Takze pokial by bola chut, moj stav je takyto:
1. Hostitel XP, Vbox v. 2.2.4, DHCP prideluje IP. 192.168.0.100
2. Virtual stroj Fedora 8.
Chcel by som, aby mali virtuálne stroje aj hostiteľský PC prístup von, no po odpojení pripojenia k routeru aby vedeli komunikovať medzi sebou a hostiteľom. Pokiaľ možno každé s vlastnou IP adresou v rámci vnútornej siete.
Jediná teoretická možnosť čo ma napadá je použiť bridge na VirtualBoxe a vytvoriť ďalší sw bridge na hostiteľskom PC .. to je ale už nad moje moMentálne schopnosti :(
Nemyslím si, že je to potrebné takto kombinovať a stačí použiť sieťový most. Po odpojení hostiteľa od smerovača jednoducho všetci komunikujú akoby boli pripojení k prepínaču...