Teoretické východiská pre VirtualNetworking vo VirtualBox -e

Stručná charakteristika

  • Účel: Oboznámiť užívateľa s VirtualNetworking-om vo virtuálnych strojoch
  • HW: ľubovoľný
  • OS: ľubovoľný

Úvod

VirtualBox podporuje najviac 8 virtuálnych PCI Ethernet sieťových kárt pre každý virtuálny stroj. Pre každú sieťovú kartu možno individuálne nastaviť:

  • Hardware
  • Virtualizačný mód

Štyri z týchto sieťových kariet je možné je možné nakonfigurovať v

  • Nastavenia
  • Sieť v záložkách Adaptér 1, Adaptér 2, Adaptér 3, Adaptér 4

1. Hardware

Pre každú kartu zvlášť je možné vybrať druh hardwaru, ktorý bude prítomný vo virtuálnom stroji. VirtualBox môže virtualizovať 6 typov sieťového hardwaru:

  • AMD PCNet PCI II (Am79C970A )
  • AMD PCNet FAST III (Am79C973 ) - je nastavený primárne, pretože je podporovaný takmer všetkými operačnými systémami
  • Intel PRO/1000 MT Desktop (82540EM) - pracuje s OS Windows Vista a novšími verziami
  • Intel PRO/1000 T Server (82543GC) - na hosťoch s Windows XP nie je potrebná inštalácia prídavných ovládačov
  • Intel PRO/1000 MT Server (82545EM)
  • Paravirtualized network adapter (virtio-net) - tento špeciálny typ vyžaduje pre virtualizáciu prostredia špeciálne sieťové rozhranie. VirtualBox -y verzie vyššej ako 3.1 poskytujú podporu pre sieťové ovládače "virtio", ktoré sú súčasťou projektu KVP zahrnutého pod slobodný software (open-source). Sieťové ovládače "virtio" je možné použiť pri týchto OS:

a) Linux kernel 2.6.25 a vyššie

b) Windows 2000, Windows XP, Windows Vista a Windows 7

VirtualBox má obmedzenú podporu pre tzv. Jumbo frames, t. j. sieťové packety s objemom dát viac ako 1500 byteov. Toto obmedzenie platí pre sieťové zariadenia AMD. V takomto prípade bude hosťovský operačný systém považovať takéto pakety za stratené, čo môže viesť k neočakávanému zlyhaniu správneho chodu aplikácie a k skresleniu výsledkov výstupu aplikácie. Tento problém sa nevyskytne pri hosťovských operačných systémoch s primárne nastavenou konfiguráciou, nakoľko Jumbo frames musia byť explicitne povolené.

2. Sieťové módy

Každá z ôsmich sieťových kariet môže byť osobitne nastavená v jednom z nasledujúcich módov:

  • Not attached - v tomto móde VirtualBox oznamuje hosťovskému OS, že sieťová karta je prítomna, ale že nie je žiaden spojenie (akoby sieťový kábel bol odpojený). V takomto prípade je možné "odpojiť" sieťový kábel, čím sa preruší spojenie, a vykonať rekonfiguráciu.

  • Network address translation (NAT) - pre užívateľa, ktorého jediným účelom vlastnenia internetového pripojenia je surfovať po webe, sťahovať súbory alebo posielať/prijímať maily je tento primárne nastavený mód postačujúci. Podrobnejší popis pre skúsenejších užívateľov je uvedený v kapitole 3.

  • Bridged networking - tento mód je určený pre rozšírené sieťové potreby ako napríklad sieťovú simuláciu, alebo správu servera na hosťovskom počítači. Ak je povolený, VirtualBox sa pripojí k jednej z nainštalovaných sieťových kárt a vysiela a prijíma packety priamo. Bližšie informácie v kapitole 4.

  • Internal networking - tento mód sa používa na vytvorenie rôznych druhov softwarovo orientovaných sietí, ktoré sú viditeľné vo vopred vybraných virtuálnych strojoch, ale neodporúča sa na vytváranie aplikácií, ktoré bežia na hostiteľskom počítači. Viac v kapitole 5.

  • Host-only networking - tento mód môže byť použitý na vytvorenie siete spájajúcej hostiteľský PC so skupinou virtuálnych stojov bez potreby fyzického sieťového rozhrania na hosťovskom PC. Namiesto toho spojenie medzi hostiteľským PC a virtuálnymi strojmi zabezpečuje virtuálne sieťové rozhranie (podobné loopbackovému rozhraniu). Viac sa možno dozvedieť v kapitole 6.

  • Generic networking - zriedkavo používaný mód zdieľa generické sieťové rozhranie. Tento stav je dosiahnutý tým, že užívateľovi je umožnené zvoliť si ovládač, ktorý môže byť súčasťou VirtulBoxu , ale môže byť aj súčasťou nejakého balíka rozšírení.

V súčasnosti existujú dva možné sub-módy:

  • UDP Tunnel - tento sub-mód môže byť použitý na priame prepojenie virtuálnych strojoch bežiacich na rôznych hostiteľských počítačoch prostredníctvom existujúcej sieťovej infraštruktúry. Podrobnejšie informácie sú uvedené v kapitole 7.

  • Virtual Distributed Ethernet (VDE) networking - môže byť použitý na prepojenie VDE switchu na Linuxe. V súčasnosti vyžaduje inštaláciu doplnkov, ktoré nie sú súčasťou balíkov od Oracleu. Podrobnejší popis je obsahom kapitoly 8.

3. Network Address Translation (NAT)

Je najjednoduchšou cestou pripojenia sa k vonkajšej sieti z virtuálneho stroja. Nepotrebuje žiadnu konfiguráciu hostiteľskej siete a hosťovského OS. Preto je primárne nastaveným sieťovým módom vo VirtualBox -e. Virtuálny stroj s NAT sa správa sko reálny PC pripojený na sieť prostredníctvom routra. V prípade virtuálneho stroja je "router" sieťové zariadenie, ktoré mapuje presun dát v sieti. Nevýhodou NAT módu je, že virtuálny stroj je "neviditeľný" a nedosiahnuteľný mimo lokálnej siete. Sieťové framy vyslané hosťovským OS sú doručené na NAT stroj VirtualBox -u, ktorý extrahuje TCP/IP data a znova ich odošle použijúc OS hostiteľa. Aplikácii hostiteľa alebo inému počítaču v sieti sa dáta javia byť vyslané aplikáciou VirtualBox -u na hostiteľskom PC. Virtuálny stroj získava svoju sieťovú adresu a konfiguráciu na privátnej sieti z DHCP servera integrovaného vo VirtualBox -e. IP adresa priradená virtuálnemu stroju je teda v inej sieti, v akej je hostiteľský PC. Keďže viac sieťových kariet môže mať nastavený NAT, prvá karta je pripojená do siete 10.0.2.0, druhá do siete 10.0.3.0, atď. Uvedené sieťové adresy sa však dajú v prípade potreby meniť.

Konfigurácia smerovania portov (port forwarding) pomocou NAT

Pokiaľ je virtuálny stroj pripojený k privátnej sieti v rámci VirtualBox -u a "neviditeľný pre hostiteľa, sieťové služby na hosťovskom PC nie sú dostupné hostiteľskému stroju alebo inému počítaču v tej istej sieti. Vzhľadom na aplikácie na hostiteľskom alebo inom - fyzickom,a lebo virtuálnom - stroji v sieti sa zdá, akoby služba bežala na hostiteľskom zariadení. To tiež znamená, že je nemožné spustiť tú istú službu na rovnakých portoch na hostiteľskom PC. Uvedený problém sa dá odstrániť prostredníctvom nástroja VBoxManage. K tomu potrebujete poznať, ktoré posty služba na hosťovskom PC používa, a na základe toho sa rozhodnúť, ktoré porty na hostiteľskom PC použiť (častým riešením je použitie rovnakých portov na hosťovskom aj hostiteľskom PC). Na hostiteľskom PC možete použiť ľubovoľný port, ktorý práve nie je využívaný žiadnou službou. Napr. nastavenie prichádzajúcich spojení NAT pre ssh server na hosťovskom PC je možné použiť nasledovný príkaz:

VBoxManage modifyvm "VM name" --natpf1 "guestssh,tcp,,2222,,22";

Podľa uvedeného príkladu budú všetky TCP dáta prichádzajúce na port 2222 na akékoľvek sieťové rozhrania na hostiteľskom počítači budú presmerované na port 22 na hosťovskom PC. Názov protokolu tcp je povinný atribút, ktorý uvádza protokol použitý na smerovanie (druhou alternatívou je udp). Názov guestssh je výlučne popisný a môže byť v prípade potreby aj automaticky vygenerovaný. Číslo po --natpf uvádza číslo sieťovej karty.

Na odstránenie smerovacích pravidiel možno použiť nasledovný príkaz:

VBoxManage modifyvm "VM name" --natpf1 delete "guestssh";

Ak hosťovský PC používa statickú IP adresu, je potrebné túto adresu zadať pri nastavení:

VBoxManage modifyvm "VM name" --natpf1 "guestssh,tcp,,2222,10.0.2.19,22";

Na presmerovanie všetkých dát možno zadať nasledovný príkaz:

VBoxManage modifyvm "VM name" --natpf1 "guestssh,tcp,127.0.0.1,2222,,22";

Bootovanie PXE prostredníctom NAT

NAT DHCP server poskytuje bootovací súbor vname.pxe v prípade, že existuje adresár TFTP v adresári, kde je uložený súbor VirtualBox .xml. Je voľbou užívateľa, či bude používať vname.pxe.

Obmedzenia NAT

1. Obmedzenie súvisiace s ICMP protokolom – niektoré často používané debugovacie nástroje (napr. ping alebo tracerouting) vychádzajú z ICMP protokolu, aby mohli vysielať, alebo prijímať dáta. Pre VirtualBox 2.1 je potrebné nainštalovať podporu ICMP, inak niektoré nástroje (napr. ping) nemusia pracovať spoľahlivo 2. Doručovanie UDP packetov cez broadcast nemusí fungovať korektne – po tom, čo hosťovský PC vyslal UDP packety na konkrétny port sa môže stať, že nebudú korektne doručené. Dôsledkom je, že preklad adresy do munerickej IP prostredníctvom NetBiosu nefunguje vo všetkých prípadoch. Dočasným riešením môže byť použitie numerickej IP adresy servera v \\server\share notácii. 3. Nie všetky protokoly (ako napríklad GRE) sú podporované – podporované sú len TCP a UDP protokoly. Niektoré produkty (napr. PPTP od Microsoftu) nemôžu byť použité. 4. Smerovanie na porty s číslom menším ako 1024 nie je možné – na hostiteľských počítačoch pracujúcich na báze UNIX-u (napr. Linux, Solaris, Mac OS X) nie je možné pripojiť sa na porty s číslom menším ako 1024, pokiaľ nepracujete ako root.

Tieto obmedzenia neovplyvňujú výrazne klasické užívateľské sieťové potreby, ale prítomnosť NAT-u môže spôsobiť mierne komplikácie, čo môže viesť k nesprávnej činnosti protokolov, ktoré inak pracujú korektne. príkladom je NFS, kde server je často konfigurovaný, aby nepodporoval pripojenia na neprivilegované porty (s číslom väčším ako 1024).

4. Sieťovanie v moste (Bridged networking)

Pomocou sieťovania v moste VirtualBox používa ovládač zariadenia na hostiteľskom systéme, ktorý filtruje dáta z vašej fyzickej sieťovej karty. Tento ovládač sa nazýva „sieťový filter“ (net filter). Umožňuje VirtualBox - u zadržať dáta z fyzickej siete a naopak, vložiť dáta do nej, čím sa efektívne vytvorí v softwari nové sieťové rozhranie. Keď hosťovský systém používa nejaké nové sieťové rozhranie, javí sa to hostiteľskému systému ako keby bol hosťovský systém fyzicky pripojený sieťovým káblom, čiže hostiteľský systém môže vysielať dáta hosťovskému systému cez rozhranie a cez neho aj prijímať dáta. Teda môžete nastaviť routing alebo bridging medzi hosťovským systémom a zvyškom siete. Nastavenie sieťovania v moste je jednoduché, stačí vykonať nasledovné:

  • Nastavenia
  • Sieť v poli pripojiť k vybrať adaptér v moste (bridge) – vybrať rozhranie na hostiteľskom systéme zo zoznamu, ktoré bude predstavovať fyzické rozhranie vo vašom systéme.

V závislosti na hostiteľskom OS je nutné vziať do úvahy nasledovné obmedzenia:

  • OS Macintosh a Linux – keď sa používa AirPort (na Linuxe bezdrôtové pripojenie), VirtualBox podporuje len protokol IPv4, pre protokoly ako napr. IPv6 alebo IPX musíte použiť káblové pripojenie.
  • OS Linux – okrem obmedzenia uvedeného vyššie, treba brať do úvahy aj to, že MTU s menej ako 1500 bytami na káblovom pripojení prostredníctvom sky2 driver na the Marvell Yukon II EC Ultra Ethernet NIC môže za určitých podmienok spôsobiť stratu packetov.
  • OS Solaris (verzie menšie ako Solaris 11) – nepodporuje bezdrôtové pripojenie. Filtrovanie toku dát na hosťovskom systéme použitím IPFiltra nie je taktiež úplne podporované kvôli technickým obmedzeniam sieťového subsystéme na Solarise.

Pri práci s verziami VirtualBox 2.0.4 a vyššími je možné používať pri sieťovaní v moste VNICs (Crossbow Virtual Network Interfaces), treba mať však na zreteli nasledovné skutočnosti:

  • VNIC nemôže byť zdieľaná medzi viacerými sieťovými rozhraniami na hosťovskom systéme, t.j. každé hosťovské sieťové rozhranie musí mať svoju vlastnú NIC.
  • VNIC a hosťovské sieťové rozhranie, ktoré používa VNIC, musia mať rovnakú MAC adresu.
Keď používate VLAN rozhrania, tieto musia byť nazvané podľa PPA-hack naming scheme (napr. e1000g513001), inak hostiteľský systém môže obdŕžať packety v neočakávanom formáte.

5. Vnútorné sieťovanie (Internal networking)

Je podobné sieťovaniu v moste, z technického hľadiska je dokonca jeho podmnožinou, pretože každý problém, ktorý sa dá vyriešiť pomocou vnútorného sieťovania, sa dá vyriešiť aj pomocou sieťovania v moste. Vnútorné sieťovanie má však oproti sieťovaniu v moste niektoré bezpečnostné výhody. V móde sieťovanie v moste všetky dáta prechádzajú fyzickým zariadením hostiteľského systému. Je teda možné pirátsky zaútočiť (napr. použitím Wiresharku) na hostiteľské rozhranie a vysledovať všetky dáta, ktoré cezeň idú. Ak uprednostňujete využívanie dvoch alebo viacerých virtuálnych strojov na vašom PC, kvôli utajeniu dát je výhodné používať mód vnútorné sieťovanie. Vytvorenie je automatické, každá interná sieť je identifikovaná len svojím názvom. Ak existuje viac aktívnych virtuálnych sieťových kárt s rovnakým interným sieťovým ID, podporný ovládač VirtualBox -u automaticky preberie úlohu switchu a vďaka jeho implementácii umožní podporu broadcastových aj multicatových frameov. Nastavenie je jednoduché:

  • Nastavenia
  • Sieť v poli pripojiť k vybrať vnútorná sieť – vybrať meno existujúcej vnútornej siete, alebo napísať nové meno do zoznamu

alebo

VBoxManage modifyvm "VM name" --nic<x> intnet;

alebo

VBoxManage modifyvm "VM name" --intnet<x> "network name";

ak nezadáte meno siete, sieťová karta bude priradená primárne sieti intnet.

Pokým nenakonfigurujete virtuálne sieťové karty na hosťovských OS, ktoré sa podieľajú na vnútornom sieťovaní použitím statických IP adries, môžete využiť služby DHCP servera, ktorý je zabudovaný vo VirtualBox -e, aby ste mohli spravovať IP adresy pre vnútornú sieť. Bezpečnostný prvok, ktorý ako jediný povoľuje implementýcia Lunixu pre vnútorné sieťovanie je, že všetky virtuálne stroje musia bežať pod rovnakým ID.

6. Adaptér len pre hostiteľa (host-only networking)

Tento mód bol po prvýkrát pridaný do VirtualBox -u 2.2. Predstavuje akýsi hybrid medzi sieťovaním v moste, s ktorým má spoločné to, že virtuálne stroje si môžu vymieňať dáta medzi sebou navzájom a taktiež aj s hostiteľským systémom akoby boli pripojené cez fyzický swirch a vnútorným sieťovaním, kde fyzické sieťové zariadenie nepotebuje byť prítomné a virtuálny stroj nemôže komunikovať s „vonkajším svetom“ bez toho, pokiaľ nie je pripojený na fyzické sieťové zariadenie. Ak je použitý mód adaptér len pre hostiteľa, VirtualBox si vytvára nové softwarové rozhranie na hostiteľskom systéme, čiže zatiaľ čo pri sieťovaní v moste slúži na pripojenie existujúce fyzické rozhranie, v móde adaptér le pre hostiteľa je vytvorené na hostiteľskom systéme nové rozhranie typu „loopback“ a zatiaľ čo pri vnútornom sieťovaní nemôže byť prenos dát medzi virtuálnymi strojmi „videný“, pri móde adaptér len pre hostiteľa môže byť prenos dát na rozhraní „loopback“ prerušený. tento mód sa používa konkrétne pre prekonfigurované virtuálne prístroje, kde úlohou viacerých virtuálnych strojov je vzájomná spolupráca. Napríklad jeden virtuálny stroj môže predstavovať web server a druhý databázu a keďže si majú navzájom vymieňať informácie, prístroj môže byť nastavený v móde adaptér len pre hostiteľa pre tieto dva virtuálne stroje. Druná sieť v móde sieťovanie v moste by spájala web server s „vonkajším svetom“, ale „vonkajší svet“ by sa nemohol pripojiť na databázu. Nastavenie módu možno vykonať dvoma spôsobmi:

  • Nastavenia
  • Sieť v poli pripojiť k vybrať adaptér len pre hostiteľa

alebo

VBoxManage modifyvm "VM name" --nic<x> hostonly;

Podobne ako pri vnútornom sieťovaní môžete použiť DHCP server, ktorý je súčasťou VirtualBox -u. Nakonfigurovať ho môžete nasledovne:

  • SúborNastaveniaSieť – vyberte sieť, potom pravým tlačidlom na Edit

alebo

VBoxManage dhcpserver;

7. UDP Tunnel networking

Tento sieťový mód umožňuje prepojiť virtuálne stroje bežiace na rôznych hostiteľských systémoch. Technicky je to zabezpečené encapsuláciou Ethernetových frameov posielaných alebo prijímaných hosťovskou sieťovou kartou vo forme UDP/IP datagramov a posielaných cez akúkoľvek sieť dostupnú hostiteľskému systému. UDP Tunnel mód má nasledovné parametre:

  • Odosielací UDP port (Source UDP port) – port na ktorom hostiteľ „počúva“. Datagramové packety prichádzajúce na tento port z akejkoľvek zdrojovej adresy budú poslané na hosťovskú sieťovú kartu.
  • Cieľová adresa (Destination address) – IP adresa cieľového hostiteľa, na ktorú sú posielané dáta
  • Cieľový UDP port (Destination UDP port) – port, na ktorý sú dáta posielané.
Ak chcete prepojiť dva virtuálne stroje na dvoch rôznych hosťovských systémoch, ich IP adresy musia byť swapované. Na samostatnom hostiteľskom systéme musia byť odosielací a cieľový port uvoľnené.

V nasledujúcom príklade používa hostiteľský systém 1 IP adresu 10.0.0.1 a hostiteľský systém 2 IP adresu 10.0.0.2. Konfigurácia je možná cez nasledovné príkazy:

VBoxManage modifyvm "VM 01 on host 1" --nic<x> generic;
VBoxManage modifyvm "VM 01 on host 1" --nicgenericdrv<x> UDPTunnel;
VBoxManage modifyvm "VM 01 on host 1" --nicproperty<x> dest=10.0.0.2;
VBoxManage modifyvm "VM 01 on host 1" --nicproperty<x> sport=10001;
VBoxManage modifyvm "VM 01 on host 1" --nicproperty<x> dport=10002;

na hostiteľskom systéme 1 a

VBoxManage modifyvm "VM 02 on host 2" --nic<y> generic;
VBoxManage modifyvm "VM 02 on host 2" --nicgenericdrv<y> UDPTunnel;
VBoxManage modifyvm "VM 02 on host 2" --nicproperty<y> dest=10.0.0.1;
VBoxManage modifyvm "VM 02 on host 2" --nicproperty<y> sport=10002;

na hostiteľskom systéme 2.

Taktieť môžete prepojiť dva virtuálne stroje na tom istom hostiteľskom systéme, nastaviac na oboch cieľovú adresu na 127.0.0.1. V takomto prípade sa systém bude správať, akoby bol nastavený na vnútorné sieťovanie.

8. Sieťovanie VDE (VDE networking)

Virtual Distributed Ethernet je flexibilný systém virtuálnej sieťovej infraštruktúry, bezpečne sa klenúci nad viacerými hostiteľskými systémami. Umožňuje L2/L3 switching, zahŕňajúc spanning-tree protokol, VLAN-ky a WAN emuláciu. Základnou stavebnou štruktúrou sú VDE switche, VDE plugy a VDE wiry, ktoré prepájajú switche. Má jediný parameter:

  • názov VDE sieťového switch socketu na ktorý je virtuálny stroj pripojený.

V nasledujúcom príklade je ukázané, ako je možné pripojiť virtuálny stroj k VDE switchu:

  • Vytvorte VDE switch:

vde_switch -s /tmp/switch1;

  • Nakonfigurujte ho:

VBoxManage modifyvm "VM name" --nic<x> generic;
VBoxManage modifyvm "VM name" --nicgenericdrv<x> VDE;

K pripojeniu na automaticky alokovaný port použite:

VBoxManage modifyvm "VM name" --nicproperty<x> network=/tmp/switch1;

K pripojeniu na konkrétny port použite:

VBoxManage modifyvm "VM name" --nicproperty<x> network=/tmp/switch1[<n>];

  • Pre VLAN-ku použite:

vde$ vlan/create <VLAN>;
vde$ port/setvlan <port> <VLAN>;

VDE je možné používať len pre Linuxovské alebo FreeBSD hostiteľské systémy. Je taktiež nutvé vopred nainštalovať na hostiteľský systém VDE software a VDE pligin knižnicu z VirtualSquare projektu. Len tak pre informáciu, VDE systém vyvinul Renzo Davoli, profesor na Univerzite v Bologni.

-- LucianGonda - 09 Dec 2011

Topic revision: r1 - 09 Dec 2011 - 22:23:08 - LucianGonda
 
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback