Kategória: VirtualBox

Zmenené: 23. december 2010

VirtualBox – sieťovanie 4.0

Vo verzii 4.0 boli možnosti nastavenia virtuálnych sieťových rozhraní znova rozšírené. Keďže pribudli nové veci, rozhodol som sa pôvodný článok, ktorý popisoval zmeny vo verzii 2.2 prepísať. Čo teda možno nastaviť pre virtuálnu sieť vo VirtualBoxe?

Sieťové rozhrania

VirtualBox poskytuje od verzie 2.2 na 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:

  • AMD PCNet PCI II (Am79C970A);
  • AMD PCNet FAST III (Am79C973,predvolená);
  • Intel PRO/1000 MT Desktop (82540OEM);
  • Intel PRO/1000 T Server (82543GC);
  • Intel PRO/1000 MT Server (82545EM);
  • Paravirtualizovaný sieťový adaptér (virtio-net).

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á. Pozor treba dať najmä na posledný, pretože v tomto prípade sa nejedná o virtualizáciu konkrétneho hardvéru, ale vyžaduje špeciálny softvér, ktorý je súčasťou projektu KVM.

Varovanie

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 zo šiestich režimov:

  • 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);
  • VDE (Virtual Distributed Ethernet) sieť.

Tip

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, 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 ani 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. Viac v používateľskom manuáli.

Virtuálny stroj s takto nastaveným sieťovým rozhraní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

VBox_bridged_01.png

Výber fyzického rozhrania

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.

Rada

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 mosta, 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 sieťového mosta, bol tento samostatný režim vytvorený najmä z dôvodov:

  1. Bezpečnosť - v režime sieťového mostu 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ť (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čom, ktorý je implementovaný ovládačom VirtualBox, a podporuje broadcast/multicast rámcov a promiskuitný 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, ktoré sú spustené s rovnakým UID.

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.

VDE sieť

Táto možnosť používa virtuálny prepínač, ale je dostupná len na systémoch Linux a FreeBSD. Vyžaduje nainštalovaný softvér VDE a zásuvnú knižnicu VDE z projektu VirtualSquare. Ďalšie podrobnosti sú dostupné v dokumentácii VDE.

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

Tip

Verzia 4.0 ponúka grafické rozhranie nastavenia smerovania portov.

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 nepotrebujete, aby okolie malo prístup k virtuálnemu stroju, použite NAT, ktorý vyžaduje minimálne (až žiadne nastavenie). Ak potrebujete aby virtuálne stroje mali prístup jeden k druhému, ale nepotrebujete 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 na to, že komunikácia je dostupné odchytávaním z ostatných virtuálnych strojov.

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

VBox_siet_rez.png