Kategória: VirtualBox

Zmenené: 12. apríl 2009

VirtualBox – sieťovanie

Používam virtuálne stroje práve na testovanie rôznych sieťových aplikácií. Pri vytvorení nového virtuálneho stroja VirtualBox prednastaví sieť na NAT. Pre ojedinenlý stroj to stačí, ale dá sa z virtuálnej siete dostať aj viac?

VirtualBox poskytuje pre sieť až štyri virtuálne sieťové rozhrania pre každý virtuálny stroj. Každý z týchto virtuálnych strojov môže byť nastavený samostatne v jednom zo štyroch režimoch:

  • Nepripojené (Not attached)
  • Preklad sieťových adries (Network Address TranslationNAT)
  • Hostiteľské rozhranie (Host Interface Networking)
  • Interná sieť (Internal Networking)

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

NAT

Nebudem tu popisovať princíp prekladu 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 o preklad adries stará. Funkciu smerovača v tomto prípade obstaráva samotný program VirtualBox. 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.

Port forwarding

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.

Princíp spočíva v tom, že VirtualBox naslúcha na určitom 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).

Obmedzeniím tohoto riešenia sú problémy so sieťou Microsoft (ale nastavenie je možné) a so správami ICMP (ping nepôjde).

Hostiteľské rozhranie

V tomto režime vytvára VirtualBox nové, softvérové sieťové rozhranie v hostiteľskom stroji, ktoré potom existuje spolu s Vašim pôvodným rozhraním. Základné nastavenie umožňuje komunikáciu medzi hosťujúcim a virtuálnym systémom, pri pokročilejšom nastavení môže byť takýto virtuálny stroj prístupný aj ostatným strojom v sieti. Pre použitie týchto softvérových rozhraní platí, že každá virtuálna sieťová karta, ktorá má používať tento režim, musí mať svoje vlastné softvérové rozrhanie.

Táto problematika je trochu rozsiahlejšia, preto tu nebudem podrobne popisovať jej nastavenie. Možno inokedy.

Interná sieť

Interná sieť je veľmi podobná režimu hostiteľského rozhrania, 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:

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

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.