VirtualBoxi võrgud
Sissejuhatus
VirtualBox on üldotstarbeline x86 riistvarasüsteemi virtualiseerija, mis pakub ka erinevaid võrgu virtualiseerimise ja ühendamise võimalusi.
Käesolev wiki leht on loodud eesmärgiga anda ülevaatlikku informatsiooni VirtualBoxi võrkude võimaluste kohta.
Töö tegemisel on kasutatud VirtualBoxi kodulehelt võetud materjale 2. mai 2011 aasta seisuga. Värskeim versioon VirtualBoxist kannab hetkel (02.05.2011) versiooninumbrit "4.0.6"
Võrgud
VirtualBox virtuaalmasinatele saab ühendada virtuaalseid võrgukaarte, mille abil saavad külalisoperatsioonisüstemid peremeesoperatsioonisüsteemi kaudu hõlpsalt luua võrguühenduse internetiga.
VirtualBox võimaldab ühte virtuaalmasinasse ühendada kuni kaheksa PCI Ethernet kaarti. Igale kaardile on võimalik määrata:
- Riistvara mida virtualiseerida
- Virtualiseerimise režiimi.
Graafilises kasutajaliideses on võimalik seadistada nelja võrgukaarti. Kõigi kaheksa võrgukaardi seadistamiseks tuleb kasutada käsurea tööriista VBoxManage modifyvm.
Virtualiseeritav riistvara
VirtualBox suudab virtualiseerida kuute erinevat tüüpi võrguriistvara:
- AMD PCNet PCI II (Am79C970A)
- AMD PCNet FAST III (Am79C973, the default)
- Intel PRO/1000 MT Desktop (82540OEM)
- Intel PRO/1000 T Server (82543GC)
- Intel PRO/1000 MT Server (82545EM)
- Paravirtualized network adapter (virtio-net)
PCNet FAST III on vaikeseade, sest seda toetab enamik operatsioonisüsteeme. Samuti ka GNU GRUB boot manager. Erandina valitakse Intel PRO/1000 seeria adapterid külalisoperatsioonisüsteemidele, milles ei sisaldu draivereid PCNet kaartidele.
"Paravirtualized network adapter (virtio-net)" (paravirtualiseeritud võrguadapter) valikut kasutades ei virtualiseeri VirtualBox võrguriistvara, vaid eeldab, et selleks kasutatakse, erilist tarkvara liidest.
Võrgurežiimid
Igaüht kaheksast võrguadapterist saab konfigureerida iseseisvalt, et toimida ühes nendest režiimidest:
- Not attached (mitte ühendatud) - Selles režiimis annab VirtualBox külalisoperatsioonisüsteemile märku, et võrgukaart on olemas, kuid et puudub võrguühendus – just kui võrgkaabel ei oleks ühendatud.
- Network Address Translation (NAT)(Vaikeseade!) - Sobilik veebis käimiseks, failide allalaadimiseks, e-kirjade lugemiseks. Tegemist on virtuaalmasinaga, kus sisse lülitatud NAT käitub samamoodi nagu päris arvuti, mis on ühendatud internetti läbi ruuteri. Ruuteriks on antud juhul VirtualBoxi võrgumootor (network engine). Tuleb tähele panna, et Windowsis failide jagamisel esinevad teatud piirangud.
- Bridged networking (sillatud võrk) - See on mõeldud keerulisemate võrgutegevuste jaoks, nagu näiteks võrgu simuleerimised ja serveri kasutamine külalisoperatsioonisüsteemis. Kui võimaldatud, ühendub VirtualBox ühega installeeritud võrgukaartidest ning toimub otsene võrgupakettide vahetus.
- Internal networking (sisemine võrk) - Seda režiimi võib kasutada erinevate tarkvarapõhiste võrkude loomiseks, mis on nähtavad valitud virtuaalmasinatele, kuid mitte hostil töötavatele aplikatsioonidele või välismaailmale.
- Host-only networking - Režiim on mõeldud võrgu loomiseks, mis sisaldab hosti ja komplekti virtuaalmasinaid, ilma, et oleks vajalik hosti füüsiline võrguliides. Selle asemel luuakse hostil virtuaalne võrguliides, mis tagab ühenduvuse virtuaalmasinate ja hosti seas.
- VDE (Virtual Distributed Ethernet) networking - Seda võimalust saab kasutada, et ühenduda Virtual Distributed Ethernet switchiga Linuxi või FreeBSD hostis. See on teostatav ainult siis kui VDE tarkvara ja VDE plugin library(teegid) on installeeritud host süsteemile.
Enimkasutatavad võrgurežiimid
Network Address Translation (NAT)
NAT on sihtsaim viis, et pääseda ligi välisele võrgule virtuaalmasina kaudu. Tavaliselt ei ole vaja seadistada host-arvuti võrku ja külalissüsteemi. Seetõttu on tegemist VirtualBoxi vaikerežiimiga. Virtuaalmasin, millel on NAT võimaldatud käitub üsna sarnaselt tõelisele arvutile, mis ühendub internetiga kasutades ruuterit. „Ruuteriks“ on sellisel juhul VirtualBoxi võrgumootor, mis kaardistab liiklust nii virtuaalmasina suunas kui ka vastupidi. NAT režiimi negatiivne külg on see, et nagu ka privaatvõrgu puhul, virtuaalmasin on välisvõrkude jaoks nähtamatu ja kättesaamatu. Serveri käivitamine on võimalik ainult pordi edastamise teel (kirjeldatud allpool).
Võrgu raamistiku/struktuuri, mis saadetakse välja külalisoperatsioonisüsteemi poolt, võtab vastu VirtualBoxi NAT mootor, mis eraldab TCP/IP andmed ja saadab need uuesti kasutades hosti operatsioonisüsteemi. Hostil asuvatele aplikatsioonidele või teistele arvutitele, mis paiknevad samas võrgus nagu host, tundub, nagu andmed oleks saadetud VirtualBoxi aplikatsiooni poolt, kasutades hostile kuuluvat IP aadressi. VirtualBox ootab vastust saadetud pakettidelt ning saadab nad uuesti külalismasinale läbi privaatvõrgu. Virtuaalmasin saab oma võrguaadressi ja konfiguratsiooni privaatvõrgu DHCP serverilt, mis on integreeritud VirtualBoxi. IP aadress, mis määratakse virtuaalmasinale, on tavaliselt teises võrgus kui host. Kuna NATi kasutamiseks võib virtuaalmasinas üles seada rohkem kui ühe kaardi, siis esimene kaart on ühendatud privaatvõrguga 10.0.2.0, teine kaart võrguga 10.0.3.0 jne.
Pordi edastamine kasutades NATi
Kui virtuaalmasin on ühendatud privaatvõrguga ning nähtamatu hosti jaoks, siis võrguteenused külalisoperatsioonisüsteemil ei ole kättesaadavad host ja teiste arvutite jaoks mis asuvad samas võrgus. Siiski nagu füüsiline ruuter, suudab ka VirtualBox muuta valitud teenused võimalikuks välismaailma jaoks kasutades pordi edastust. See tähendab, et VirtualBox kuulab teatud hosti porte ning saadab edasi kõik paketid (mis saabuvad külalisoperatsioonisüsteemile), samale või teisele portile. Hostil OSile paigaldatud programmile või teistele füüsilistele (või virtuaalsetele) masinatele võrgus paistab nagu kõik teenused töötaksid hostil. Teenuseid on võimalik puhverdada kasutades käsurea tööriista VboxManage. On vaja teada milliseid porte külalisoperatsioonisüsteemil teenus kasutab ja otsustada milliseid porte kasutada hostil (tihti, kuid mitte alati, on mõistlik kasutada samu porte nii külalisOS-il kui hostil). Kasutada võib kõiki porte hostil, mis pole juba kasutuses mõne teenuse poolt.
Näiteks, et üles seada sissetulev NAT ühendus SSH serveriga külalisoperatsioonisüsteemis, tuleks kasutada järgmist käsklust:
VBoxManage modifyvm "VM name" --natpf1 "guestssh,tcp,,2222,,22"
Näite kohaselt kogu TCP liiklus, mis saabub portile “2222” edastatakse portile “22” külalisOS-il. Protokolli nimi “tcp” on atribuut, mis defineerib millist protokolli kasutatakse edastamiseks (võimalik kasutada ka udp). Nimi “guestssh” on puhtalt kirjeldav ning automaatsele-genereeritav. Number peale “--natpf” tähistab võrgukaarti.
Et eemaldada edastamine, kasuta käsklust:
VBoxManage modifyvm "VM name" --natpf1 delete "guestssh"
Kui mingil põhjusel külalisoperatsioonisüsteem kasutab staatiliselt määratud IP aadressit, on oluline edastamisel täpsustada külalisOS-i IP aadress:
VBoxManage modifyvm "VM name" --natpf1 "guestssh,tcp,,2222,10.0.2.19,22"
See näide on sarnane eelmisega, ainult et NAT mootorile on öeldud, et külalisoperatsioonisüsteemi võib leida aadressil 10.0.2.19.
Et edastada kogu sissetulev liiklus teatud hosti liideselt külalisOS-ile, täpsusta selle hosti liidese IP järgmiselt:
VBoxManage modifyvm "VM name" --natpf1 "guestssh,tcp,127.0.0.1,2222,,22"
PXE bootimine NAT-iga
NAT režiim toetab PXE bootimist. NAT DHCP server annab boot faili nime kujul “vmname.pxe”, kui kataloogis, kus hoitakse kasutaja “VirtualBox.xml” faili, eksisteerib “TFTP” kataloog.
NAT piirangud
NAT režiimis on olemas neli piirangut, millest kasutajad peavad teadlikud olema:
- ICMP protokolli piirangud - Mõned sagedalt kasutatavad võrgu debuggimise tööriistad (näiteks ping või tracerouting) toetuvad sõnumite saamisel/saatmisel ICMO protokollile. Kui ICMP toetus on paranenud VirtualBox versioonil 2.1 (ping peaks nüüd töötama), mõned teised tööriistad ei pruugi töötada usaldusväärselt.
- UDP broadcast ei ole usaldusväärne - Külalisoperatsioonisüsteem ei saa usaldusväärseid broadcaste, sest ressursside säästmise eesmärgil oodatakse vastust ainult teatud aja vältel peale andmete saatmist teatud pordile. Tulemusena ei tööta alati broadcastimisel põhinev nimeresolutsioon NetBios.
- Ei toetata protokolle nagu näiteks GRE - Teised protokollid peale TCP ja UDP ei ole toetatud. See tähedab, et ei ole võimalik kasutada mõndasid VPN tooteid (näiteks PPTP Microsoftilt). On siiski olemas ka teisi VPN tooteid, mis kasutavad TCP ja UDP protokolle.
- Hosti portide < 1024 edastamine on võimatu - Unix-põhistel hostidega (näiteks Linux, Solaris, Mac OS X) ei ole võimalik siduda porte mis on madalamad kui 1024. Üritades seda teha keeldub VM käivitamast.
Need piirangud ei mõjuta tavaliselt standartset võrgu kasutamist, kuid NAT olemasolu avaldab teatud mõju, mis võib segada ka normaalselt töötavaid protokolle. Üks näide on NFS, kus server on tihti konfigureeritud keelduma ühendustest, mis tulevad ebausaldusväärsetelt portidelt.
Bridged networking (sillatud võrk)
Sillatud võrgu puhul kasutab VirtualBox host süsteemi seadme draiverit, mis filtreerib andmeid füüsilisest võrgu adapterist. Seda draiverit nimetatakse „net filter“ draiveriks. See lubab VirtualBoxil võtta ja sisestada andmeid füüsilisse võrku, luues tarkvaraliselt uue võrguliidese. Kui külalisoperatsioonisüsteem kasutab sellist uut tarkvaraliidest, näib host süsteemile, nagu oleks külalisOS füüsiliselt ühendatud liidesega ning kasutab võrgukaablit: läbi selle liidese saab host saata ja saada andmeid külalisoperatsioonisüsteemilt. See tähendab, et on võimalik üles seada ruutimine või andmete vahetus külalisoperatsioonisüsteemi ja ülejäänud võrgu vahel. Et lubada sillatud võrk, peab avama sätete akna virtuaalmasinas, minema „Network“ (võrk) lehele ja validma lahtris „Attached to“ (ühendatud) valiku „Bridged network“ (sillutud võrk). Veel peab valima soovitud hosti lehe allosas, kus on loetletud süsteemi füüsilised võrguliidesed.
Olenevalt hosti operatsioonisüsteemist tuleb meeles pidada järgnevaid piiranguid:
- Sillatud võrgu kasutamisel on Macintoshi hostidel AirPorti (Mac`i juhtmevaba võrk) puhul piiratud funktsionaalsus. VirtualBox toetab AirPort kasutamisel ainult Ipv4. Ipv6 ja IPX jaoks peab valima juhtmega liidese.
- Juhtmevabade liideste kasutamisel sillatud võrgu jaoks on piiratud funktsionaalsus ka Linux hostidel. VirtualBox toetab juhtmevabalt ainult Ipv4. Teiste protokollide jaoks peab valima juhtmega liidese.
- Solarise hostid ei toeta juhtmevabu liideseid. IPFiltri kasutamine külalisOS-i liikluse filtreerimiseks ei ole seoses tehniliste piirangutega samuti täielikult toetatud.
Internal networking (sisemine võrk)
Internal Networking on sarnane sillatud võrguga, sest ka siin võib virtuaalmasin suhelda otse välismaailmaga. Siiski „välismaailm“ on piiratud ning koosneb teistest virtuaalmasinatest samas hostis, mis on ühendatud sama sisemisse võrku.
Kuigi tehniliselt kõik, mida on võimalik teha kasutades sisemist võrku, on tehtav ka kasutades sillatud võrku, on sisemisel võrgul turvalisuse koha pealt eeliseid. Sillatud võrgu režiimis läbib kogu liiklus host süsteemi füüsilist liidest. Seeläbi on võimalik lisada paketi nuhutaja(jälgija) hosti liidesele ning logida kogu liiklust. Kui mingil põhjusel eelistatakse, et kaks või enam virtuaalmasinat suhtleksid privaatselt samas masinas, peites andmeid nii host süsteemi kui kasutaja eest, siis sillatud võrk selleks ei sobi.
Sisemisi võrke luuakse automaatselt vajaduse tekkimisel. Igat sisemist võrku identifitseeritakse nime järgi. Kui aktiivseid virtuaalseid võrgukaarte sama sisemise ID-ga on rohkem kui üks, siis toimib VirtualBoxi tugidraiver automaatselt võrgu switchina.
Selleks, et ühendada virtuaalmasina võgukaart sisemise võrguga, peab seadistama selle võrgu režiimiks „internal networking“. Selle jaoks on kaks võimalust:
- Võib kasutada virtuaalmasina „Settings“ (sätteid) VirtualBoxi graafilises kasutajaliideses. „Networking“ (võrk) kategoorias peab valima „Internal Networking“ (sisemine võrk). Samuti peab valima olemasoleva sisemise võrgu nime rippmenüüst või sisestama lahtrisse uue nime.
- Või käsurealt:
VBoxManage modifyvm "VM name" --nic<x> intnet
Soovi korral võib täpsustada võrgu nime käsklusega:
VBoxManage modifyvm "VM name" --intnet<x> "network name"
Kui võrgu nime ei täpsustata, ühendatakse võrgukaart vaikimisi innet võrguga.
Kui (virtuaalseid) võrgukaarte ei konfigureerita kasutama külalisoperatsioonisüsteemis staatilisi IP aadresse, siis on soovitatav kasutada sisemise võrgu IP aadressite haldamiseks DHCP serverit.
Host-only networking
Host-only networking on režiim, mis oli lisatud VirtualBoxi 2.2 versioonile. Sellest võib mõelda kui sillatud ja sisemise võrgu hübriidist: nagu sillatud võrgus, kus virtuaalmasinad saavad suhelda üksteise ja hostiga justkui nad oleksid ühendatud füüsilise ethernet switchiga. Sarnaselt sisemise võrguga, ei ole füüsilise võrguliidese olemasolu oluline ja virtuaalmasinad ei saa suhelda maailmaga väljaspool hosti, sest nad pole ühendatud füüsilise võrguliidesega.
Host-only võrgu kasutamisel, loob VirtualBox uue tarkvaraliidese hostile, mis seejärel ilmneb olemasoleva võrguliidese kõrvale. Teisisõnu, kui sillatud võrgu puhul kasutatakse olemasolevat füüsilist liidest, et ühendada virtuaalmasinat, siis host-only võrgu puhul luuakse hostil uus „loopback“ liides. Samuti kui sisemise võrgu puhul liiklus virtuaalmasinate vahel ei ole nähtav, siis liiklus „loopback“ liidesel võib olla püütud.
Host-only võrk on eriti kasulik eelkonfigureeritud virtuaalseadmetel, kus mitmed virtuaalmasinad on toodud kokku ja peavad tegema koostööd.
Et muuta virtuaalmasina virtuaalvõrgu liides „host-only“ režiimi:
- Kasutades kasutajaliidest tuleb minna „Network“ (võrk) lehele virtuaalmasina sätetes ja valida „host-only networking“
- Käsurealt tuleks sisestada:
VBoxManage modifyvm "VM name" --nic<x> hostonly
IP aadressid võib määrata kasutades DHCP serverit või staatiliselt.
Autor:Allar Adoberg
Originaaltekst : VirtualBoxi koduleht