Virtuaalikoneen verkkoasetukset

Virtuaalikoneessa verkkojen hallintaan käytetään yksinomaan systemd:n systemd-network -moduulia. Verkon nimipalveluasetukset noudetaan systemd-resolved -moduulilla.

Virtuaalikoneen ja isännän välinen verkko

Virtuaalikoneen ja isäntäkoneen välisen verkon konfigurointiin on neljä vaihtoehtoa: bridged, host-only, NAT ja ei verkkoa. Virtuaalikoneelle voidaan konfiguroida tosin useita verkkoja, mutta tämä mahdollisuus sivutetaan tässä. Yleisesti, kukin hypervisor sisältää käyttöjärjestelmäajureita isäntäkoneen puolisen verkon tarjoamiseksi ja lisäksi emuloi jotain yleisistä verkkolaitteita virtuaalikoneen suuntaan. Virtuaalikone kytkeytyy verkkoon tällaisen laitteen geneerisiä ajureita käyttäen (Linuxissa esim. eth0 tai muu dynaamisesti generoitu e-alkuinen nimi).

Bridged

Bridged-verkko on siltaverkko, johon kytkeytyy virtuaalikoneen puolella virtuaaliverkkolaite ja isäntäjärjestelmässä hypervisorin ajurien hallinnoima vastinlaite. Kumpikin laite on verkossa merkitykseltään tasaveroinen ja verkko toimii symmetrisesti molempien laitteiden osalta. Isäntäkoneen puoleinen "dummy-laite" (esim. VMwaressa vmnet0) kytketään lisäksi verkkosiltaan ja samaan siltaan jokin isäntäkoneen muu verkkolaite. Dummy-laitteella ei ole tässä muuta tarkoitusta kuin mahdollistaa sillan muodostus kahden (mahdollisesti virtuaalisen) verkkolaitteen välillä.

Bridged-verkko

Tavoite bridged-verkolla on saada yhdistettyä virtuaalikoneen sisäinen verkko ulospäin esim. lähiverkkoon. Virtuaalikone näkyy tasavertaisena laitteena tällöin lähiverkossa kuten jokin lähiverkon kytkimeen kytketty fyysinen tietokone, ja yhteydenotto onnistuu molempiin suuntiin kaikkien verkon laitteiden välillä. Mikäli lähiverkon kautta voi yhdistää internetiin, virtuaalikoneet voivat hyödyntää tätä.

Käytä tätä verkkoa vain, jos haluat jakaa palveluita virtuaalikoneen sisältä ulospäin. Huomaa, että verkon jakaminen ulospäin voi vaatia hypervisorin isäntäpuolen verkkolaitteiden käyttöoikeuksien tarkempaa konfigurointia virtualisointia käyttävälle käyttäjälle. Mikäli käyttöoikeuksia ei konfiguroi oikein, virtuaalikoneen verkko ei välttämättä käynnisty lainkaan!

Host-only

Host-only -verkko on sisältää bridged-verkon tavoin virtuaalikoneen puolella virtuaaliverkkolaitteen ja isäntäjärjestelmässä hypervisorin ajurien hallinnoiman vastinlaitteen. Isäntäjärjestelmän laitetta ei kuitenkaan ole kytketty sillalla muihin verkkoihin. Lisäksi hypervisor tarjoaa virtuaalisen DHCP-palvelimen, joka määrittää yksityisen sisäverkon, jonka osoitteita myönnetään virtuaalikoneille ja isäntäpuolen vastinlaitteelle.

Host-only -verkko

Verkossa laitteet ovat tasavertaisia -- isäntäkoneesta pääsee yhdistämään virtuaalikoneeseen ja päinvastoin. Virtuaalikoneista ei kuitenkaan voi yhdistää isäntäkoneen kautta internetiin tai muihin verkkoihin. On isäntäkoneen konfiguraatiosta kiinni, mistä kaikkialta verkkoon pääsee vastinlaitteen kautta. Oletusarvoisesti verkko näkyy vain paikallisesti. Käytä tätä verkkoa, jos haluat määrittää internetistä irti olevia yksityisiä paikallisverkkoja.

NAT

NAT-verkko sisältää host only -verkon tavoin virtuaalikoneen puolella virtuaaliverkkolaitteen ja isäntäjärjestelmässä hypervisorin ajurien hallinnoiman vastinlaitteen. Lisäksi hypervisor tarjoaa virtuaalisen DHCP-palvelimen, joka määrittää yksityisen sisäverkon, jonka osoitteita myönnetään virtuaalikoneille ja isäntäpuolen vastinlaitteelle. Isäntäjärjestelmän laite on NAT-kytketty ulkoverkkoon.

NAT-verkko

NAT-kytkentä tarkoittaa käytännössä, että virtuaalikoneet voivat isäntäkoneeksi tekeytymällä yhdistää internetiin (NAT-kytkentä mankeloi IP-paketit näyttämään tulevan isäntäkoneelta). NAT-kytkentä järjestää myös vastauksena saapuvan verkkoliikenteen takaisin virtuaalikoneen suuntaan oikein reititettynä kullekin virtuaalikoneelle. NAT-kytkennän rajoitus on, että verkkoyhteydet internetiin on aloitettava virtuaalikoneen puolelta, sillä yhteyttä virtuaalikoneisiin ei voida avata internetistä, mutta kun yhteys on avattu, yhteys toimii molempiin suuntiin. Virtuaalikoneisiin voi kuitenkin ottaa yhteyden suoraan isäntäkoneesta.

Tämä on oletusarvoinen virtuaalikoneiden verkkotyyppi ja tarjoaa eräänlaisen alkeellisen palomuurin ulkomaailman ja virtuaalikoneen välillä. Suositeltava käyttää, mikäli verkkoasetuksien muokkaamiselle ei ole erityistä tarvetta.

Ei verkkoa

Käytä tätä vaihtoehtoa, jos haluat eristää virtuaalikoneen kokonaan isäntäkoneen verkoista. Oletusarvoisesti virtuaalikone on aina kytketty isäntäkoneen verkkoihin ja myös internetiin, mikäli isäntäkoneessa on saatavilla internet-yhteys.

VMwaren konfigurointi

VMwaren mukana toimitetaan ohjelma vmware-netcfg, jolla voi konfiguroida edellä kuvattuja verkkoja, mikäli niiden oletusasetukset eivät sovellu sellaisenaan. Kuvattu rakenne on VMwaren oletusarvoinen konfiguraatio. Ohjelmalla voi myös luoda uusia verkkoja edellisten lisäksi sekä esimerkiksi valita, mihin isäntäkoneen verkkolaitteeseen sillattu verkko kytketään. Ohjelman tarkempi käyttöohjeistus sivuutetaan tässä.

VMwaren isäntäpuolen verkkojen
konfigurointi

Virtuaalikoneen sisäiset verkot

Virtuaaliverkko isäntäkoneen suuntaan

Virtuaalikoneen päätoiminen verkko isäntäkoneelle konfiguroidaan oletusarvoisesti automaattisesti DHCP:tä ja IPv6-automaattiasetuksia käyttäen eikä vaadi erityistä manuaalista konfigurointia. Manuaalinen verkon konfigurointi on mahdollista, mutta sivuutetaan tässä.

Docker

Virtuaalikoneeseen asennetun Dockerin verkkoasetukset voi konfiguroida Dockerin yleisiä ohjeita käyttäen. Oletusarvoisesti Docker käyttää bridge-verkkokonfiguraatiota. Dockerin verkot näkyvät oletusarvoisesti vain virtuaalikoneen sisällä, mikäli verkkoja ei reititä virtuaalikoneen ja isäntäkoneen väliseen verkkoon. Tarkempi verkkokonfigurointi tämän toteuttamiseksi sivuutetaan tässä.

UTU-virtuaalikoneen siltaverkot br0 ja br1

UTU-virtuaalikoneeseen on määritetty lisäksi kaksi sillattua verkkoa, br0 ja br1, joiden käyttötarkoitus on spawn-container -ohjelman luomien konttien kytkeminen virtuaalikoneen verkkoon. Kukin spawn-container -ohjelmalla käynnistetty kontti voidaan erikseen konfiguroida kytkeytymään mihin tahansa tarjolla olevaan verkkoon (br0, br1, sekä br0 että br1 jne.). Filosofia verkkojen takana on kuvattu seuraavissa aliluvuissa.

Verkko br0

Verkko br0 on yksityinen sisäverkko, johon virtuaalikoneesta (esim. työpöytä) on pääsy osoitteen 10.10.10.10 kautta (dummy-laite br0master, jota kuuntelemassa DHCP-palvelin). Kun virtuaalikoneessa luodaan spawn-container -kontteja, kontit saavat dynaamisesti DHCP:llä osoitteita 10.10.10.100--10.10.10.200 ja kytkeytyvät tähän verkkoon. Verkko on filosofialtaan analoginen virtuaalikoneen NAT / host only -verkkojen kanssa. Verkko voidaan konfiguroida toimimaan jommalla kummalla tavalla.

br0-verkko

Verkko br1

Verkko br1 on sisäverkko, jonka idea on kytkeä verkkosillalla kontit isäntäkoneen johonkin ulkoverkkoon niin, että kontteihin voidaan ottaa yhteys virtuaalikoneen ulkopuolelta, esim. lähiverkosta. Tarkoitus on, että virtuaalikoneessa konttiin voidaan käynnistää turvallisesti palvelin ilman että palvelimen mahdollinen tietomurto vaarantaa suoraan isäntäkoneen tiedostot tai edes virtuaalikoneen tiedostoja, sillä kontin sisältä ei lähtökohtaisesti ole pääsyä kumpaankaan järjestelmään (ellei konttitoteutuksessa ilmene tietoturva-aukkoja tai väärin konfigurointia).

br1-verkko

Verkko br1 ei määritä DHCP:llä osoitteita, vaan siihen kytkettyjen konttien tulee käyttää joko kiinteitä IP-osoitteita tai isäntäkoneen / ulkopuolisen palvelun (esim. kodin reititin) tarjota vastaava osoitepalvelu. Esim. ulkoista reititintä käytettäessä voidaan sen hallintapaneelista havaita, mitkä osoitteet konteille myönnetään. Verkon br1master-verkkolaitetta ei välttämättä tarvita käytännössä, mutta laite on pitämässä verkkosiltaa ylhäällä oletusarvoisessa tilassa ja sitä kautta yksinkertaistaa verkon konfigurointia käyttäjäystävällisellä tavalla.

Huom! Myös jokin konteista voidaan valjastaa osoitepalvelimeksi. Varo tällöin häiriköimästä organisaation tietoverkkoja omalla osoitepalvelulla. Esimerkiksi Turun yliopiston verkossa omien osoitepalvelimien ajaminen on kielletty.

UTU VM Configurator

Opiskelijan oppaassa (yleinen) kuvattu UTU VM Configurator -ohjelma mahdollistaa myös br0- ja br1-verkkojen konfiguroinnin, mikä on kuvattu tässä. Ohjelman pikakäynnistin sijaitsee työpöydän System-valikossa kuvan osoittamalla tavalla:

Konfiguraattorin sijainti virtuaalikoneen
valikossa

Konfiguroinnin voi käyttää myös terminaalissa komennoilla configurator.sh bridge ja configurator.sh forwarding.

Ohjelman avaamisen jälkeen päävalikossa verkkoasetukset käsittävät valikon kaksi alinta valintakohtaa: bridge ja forwarding.

Konfiguraattorin
pääikkuna

Verkon br0 konfigurointi

Configurator-ohjelman asetuksella "forwarding" voidaan br0-verkon osalta säätää, kytketäänkö päälle NAT-ominaisuus, eli voidaanko br0-kytketyistä konteista ottaa yhteys internetiin niin, että yhteys avataan kontista käsin. Oletusarvoisesti kontit voivat ottaa yhteyksiä vain toisiinsa tai virtuaalikoneen 10.10.10.10-sisäosoitteeseen.

br0:n
konfigurointi

Verkko on em. säädöistä huolimatta aina eristetty niin, että kontteihin ei voi avata yhteyttä br0:n kautta internetistä. Mikäli yhteys on avattu kontista käsin, olemassaolevaa yhteyttä käyttäen voidaan kuitenkin kommunikoida myös internetistä konttiin päin. Verkon br0 tarkempi konfigurointi on saatavilla stardardilla tavalla edistyneille käyttäjille tiedostojen /etc/dnsmasq.conf ja /etc/systemd/network/ kautta.

Verkon br1 konfigurointi

Configurator-ohjelman asetuksella "Bridge" br1-verkkoon kytkettyjen konttien verkkoliikenne voidaan verkkosiltaa pitkin reitittää ulos virtuaalikoneesta. Voit valita mihin virtuaalikoneen puoleiseen verkkolaitteeseen liikenne kytketään tai poistaa sillan br1:n ja virtuaalikoneen verkkojen väliltä.

br1:n konfigurointi

Verkon br1 siltaaminen todennäköisesti edellyttää myös virtuaalikoneen oman verkon siltaamista isäntäkoneen verkkojen kanssa. Huomaa myös riittävien käyttöoikeuksia jakaminen hypervisorin käyttäjälle, jotta verkot voi sillata isäntäkoneen puolelle.

Koska br1-verkossa ei ole oletusarvoisesti DHCP-palvelinta, varmista että kontit saavat IP-osoitteensa jotain kautta sillatuista verkoista. Ole kuitenkin varovainen, ettei virtuaalikoneeseen konttiin mahdollisesti konfiguroimasi palvelin häiriköi julkisia tietoverkkoja.

USB-version verkot

Virtualisointialustan USB-versio ei käytä hypervisoria ja sitä kautta isäntäjärjestelmän ja virtuaalikoneen välisiä verkkoja ei ole saatavilla. Järjestelmä sen sijaan tarjoaa suoraan saataville tietokoneeseen kytketyt fyysiset verkkolaitteet. Järjestelmässä on ajurituki saatavilla seuraaville laitetyypeille:

  • langallisille Ethernet-laitteille (PCI, PCIe, PCMCIA, USB jne.)

  • langattomille WLAN/WiFi 802.11-laitteille (PCI, PCIe, PCMCIA, USB jne.)

  • USB-mokkuloille ja netin jakamiselle mobiililaitteesta

  • kapseloitu verkkojako Bluetoothin yli

  • sekalainen joukko muita verkkolaitteita

Yleisesti ottaen verkkoasetukset toimivat USB-versiossa vastaavasti kuin hypervisorin alla silloin kun jokainen isäntäjärjestelmän verkkolaite on jaettu Bridged-tilassa asianmukaisin käyttöoikeuksin virtuaalikoneelle. Virtuaalikoneessa verkkoja hallitaan yksinomaan systemd-networkd -moduulilla. USB-versiossa sen sijaan WLAN-verkkojen salasanojen helpon hallinnan mahdollistamiseksi muita kuin br0/br1-verkkoja hallitaan NetworkManager-ohjelmistolla. br0/br1-verkkojen hallinta on toteutettu systemd-networkd:llä.

Suurin ero virtuaalikoneen ja USB-version välillä ilmenee siinä, että laitteet ovat automaattisesti käytettävissä suoraan laitteeseen kytkemisen jälkeen, mikäli laitteelle on ajuritukea. Erityyppiset laitteet käyttävät hieman erilaisia nimeämiskäytäntöjä -- esim. WLAN-laitteiden laitetiedostot ovat nimeltään yleensä wl-alkuisia, USB-mokkulat u-alkuisia (myös muita vaihtoehtoja), langalliset verkot eth/en-alkuisia.

Opiskelijan oppaassa on otsikon Ongelmatilanteet alle listattu edullisia vaihtoehtoisia USB-kytkentäisiä verkkolaitteita, mikäli tietokoneen sisäänrakennettuihin verkkolaitteisiin ei ole saatavilla ajureita. Laitteita voi myös kytkeä muuten täysin toimivaan koneeseen, mikäli halutaan käyttää useita eri fyysisiä verkkoja.

Verkkojen vianetsintä

Vianetsintää varten verkkolaitteiden tietoja voi seurata erinäisillä käskyillä, joita listattu seuraavassa:

  • sudo udevadm monitor: seuraa laitteiden kytkemistapahtumia.

  • sudo watch -n1 dmesg|tail: kernelin pääloki.

  • sudo journalctl -ef: palveluhallinnan loki.

  • sudo watch -n1 lsmod: seuraa kernelin ladattuja moduuleja. Kaikkia ajureita ei kuitenkaan ole käännetty moduuleiksi, joten tulosteeseen ei listaudu kaikkia laitteita.

  • sudo watch -n1 ls /sys/class/net: seuraa laitetiedostojen listaa.

  • sudo networkctl: seuraa verkkolaitteiden statusta systemd-networkd:n kannalta.

  • nmtui: seuraa verkkolaitteiden statusta NetworkManagerin kannalta (vain USB-versio).

Networkctl-ohjelman esimerkkituloste
virtuaalikoneesta