torstai 9. marraskuuta 2017

Hyper-V ja VirtualBox käyttö rinnakkain

Joskus tulee eteen tilanne jossa olisi tarvetta käyttää kahta virtualisointijärjestelmää rinnakkain. Jokin aika sitten luokassa oleva Hyper-V ympäristö alkoi hidastua niin merkittävällä tavalla että päätimme siirtyä VirtualBox ympäristöön. Pikaisella silmäyksellä hidastuminen liittyi Defenderiin joka kuormitti kiintolevyjä todella ankarasti. Koska emme halunneet lähteä selvittämään kuormituksen syyte sen kummemmin, päätimme kokeilla virtuaalikoneiden suorituskykyä VirtualBox ympäristössä. Ihme ja kumma…VirtualBoxin puolella ongelmaa ei esiintynyt.

Hyper-V ja sen hypervisor…ongelma ja ratkaisu

Lähtökohtaisesti Hyper-V ja VirtualBox ympäristön yhtäaikainen käyttö ei ole mahdollista koska Hyper-V hypervisor varaa järjestelmän täysin omaan käyttöönsä. Vaihtoehtoina ovat A) koko Hyper-V ominaisuuden poistaminen Windowsista tai B) Hyper-V:n hypervisorin sammuttaminen.

Kyseisiä ohjelmia ei siis voida käyttää yhtä aikaa, vaan vähintään on varmistettava että Hyper-V:n hypervisor ei ole käynnissä kun VirtualBox ohjelmaa käytetään. VirtualBox virtuaalkoneen käynnistäminen aiheuttaa BSOD virheen mikäli Hyper-V:n hypervisor on tällöin käynnissä.

Tilan voi tarkastaa esim. Järjestelmätiedot (msinfo32.exe) ohjelman avulla. Kyseinen ohjelma  ilmoittaa Hyper-V ominaisuuden tilasta hieman hämäävästi.

Alla näkyvässä kuvassa Hyper-V ominaisuutta ole asennettu tai ainakaan Hyper-V:n hypervisor ei ole käytössä.

VirtualBox9

Tämän kuvan mukaisessa tilanteessa Hyper-V on käytössä.

VirtualBox10

Hyper-V:n pois asentaminen tietysti ratkaisee ongelman. Jos molempia virtualisointijärjestelmiä halutaan käyttää kuitenkin yhtä aikaa, on tämä liian työläs järjestely. Onneksi Hyper-V:n hypervisorin voi sammuttaa ilman ko. ominaisuuden täydellistä poistamista.

Järjestelmänvalvojan komentokehotteessa annettu komento:bcdedit /set hypervisorlaunchtype off   sammuttaa hypervisorin (uudelleen käynnistyksen jälkeen).

VirtualBox3

Komento bcdedit /set hypervisorlaunchtype auto käynnistää sen uudelleen (uudelleen käynnistyksen jälkeen).

VirtualBox4

Edellä mainituista komennoista voidaan esim. tehdä työpöydälle pikakuvakkeet jotka viittaavat PowerShell skriptiin tai komentojonoon jossa em. komennot ovat kirjattuna. Kyseiseen skriptiin tai komentojonoon lisättävä komento C:\windows\system32\shutdown -r -t 2 käynnistää työaseman automaattisesti uudelleen. On huomattava että pikakuvakkeen ominaisuuksista voidaan asettaa päälle sen suorittaminen järjestelmän valvojan oikeuksin.

VirtualBox5

Hyper-V:n poistaminen ei onnistu ?

Jos Hyper-V:ä halutaan luopua kokonaan, voidaan se asentaa samoin tein pois. Esimerkiksi PowerShell komento Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All poistaa Hyper-V ominaisuuden käytöstä.

VirtualBox6

Vaan entäpä jos poistaminen ei onnistukaan? On kuitenkin olemassa tilanne jossa ominaisuuden pois asentaminen ei onnistu. Nimittäin jos Device Guard ominaisuus on käytössä, ei Hyper-V:n suostu poistumaan järjestelmästä. Device Guard nimittäin käyttää toiminnassaan Hyper-V:n virtualisointi ominaisuuksia. Device Guard ominaisuus sisältyy ainoastaan Windows 10 Enterprise ja Education versioihin.

Device Guard ominaisuuden tilan voi tarkistaa esim. Järjestelmätiedot (msinfo32.exe) ohjelman System Summary kohdasta.

VirtualBox7

Mikäli Device Guard on päällä, täytyy tietysti TARKKAAN selvittää voiko/kannattaako/saako sitä kytkeä pois päältä. Jos ko. ominaisuus kuitenkin halutaan kytkeä pois päältä, voidaan se tehdä esim. paikallista ryhmäkäytäntöeditoria käyttäen (gpedit.msc), asettamalla asetus Turn on Virtualization Based Security tilaan Disabled.

VirtualBox8

Kyseisen ominaisuuden käytöstä poistamisen jälkeen myös Hyper-V:n pois asentaminen onnistuu.

PS: Alkuperäinen ongelma Defenderin kuormittamasta kiintolevystä jäi hieman vaivaamaan…varsinkin kun kyseistä ongelmaa ei esiinny VirtualBox työasemissa. Pitänee palata vielä tutkimaan asiaa.


perjantai 3. marraskuuta 2017

VyOS virtuaalireititin

Yleistä

Asennusympäristöjen testaamiseen tarkoitetut ja yleensä virtuaaliseen ympäristöön asennetut palvelimet ja työasemat halutaan mitä todennäköisimmin pitää erillään tuotantoympäristöstä. Asennuspalvelin ympäristöissä käytetään tyypillisesti DHCP, PXE, WDS, SCCM, yms. järjestelmiä joiden aikaansaama verkkoliikenne ja palvelut sotkevat tuotantoverkkoa tehokkaalla tavalla. Testaamisen kannalta olisi kuitenkin hyödyllistä mikäli asennuspalvelimet olisi tarvittaessa helppo yhdistää internetiin. VirtualBox ympäristössä voidaan käyttää NAT tyyppistä verkkoliitäntää joka erottaa testiympäristön tuotantoympäristöstä. Hyper-V ympäristössä tämän tyyppistä ratkaisua ei kuitenkaan ole.

HUOM: VirtualBox ohjelmassa on käytettävissä myös NatNetwork tyyppinen verkkoratkaisu jolla VirtualBox ohjelmisto voidaan korvata. VirtualBox:n NatNetwork toteutuksessa on käytettävissä myös sisäänrakennettu DHCP palvelin. Kyseisessä verkossa .1 osoitteeseen päättyvää ip-osoitetta voidaan käyttää reitittimenä (192.168.1.1) , .2 päättyvää osoitetta DNS-palvelimena (esim. 192.168.1.2) ja .3 päättyvää osoitetta DHCP palvelimen osoitteena (esim. 192.168.1.3).

Tässä esimerkissä käytetään kuitenkin VirtualBox ympäristöä jossa sisäverkkoon liitetty verkkosovitin (eth0) on kytketty VirtualBoxissa internal verkkoon ja ulkoverkkoon liitetty sovitin (eth1) on liitetty bridged verkkoon.

Virtuaaliympäristön yhdistämiseen voidaan kuitenkin käyttää esim. VyOS Virtual Router tuotetta joka on ohjelmistopohjainen (Debian Linux) reititin. Virtuaalikoneissa voidaan siis käyttää sisäiseen virtuaalikytkimeen liitettyä verkkokorttia josta ulospäin lähtevän liikenteen VyOS tarvittaessa reitittää ulkoverkkoon. Virtuaalikoneen verkkoasetukset määritetään siten että reitittimen ip viittaa VyOS reitittimen sisäverkkoon liitettyyn ip-osoitteeseen.

Virtuaalikone VyOS:a varten

VyOS reitittimellä ei ole suuria vaatimuksia virtuaalikoneelle. Työmuistin suositeltu minimimäärä on 512 Mt. Kiintolevyn suositeltu koko on 2 Gt. Virtuaalikone kannattaa luoda ensimmäisen sukupolven tyyppiseksi. VyOS virtuaalikoneeseen lisätään tarvittava määrä virtuaalisia verkkokortteja. Esimerkkiympäristössä on käytössä 2 verkkokorttia joista ensimmäinen (eth0) on yhteydessä ulkoverkkoon  ja toinen (eth1) sisäverkkoon (testausympäristö). Jos verkkoja on enemmän, luodaan jokaista verkkoa varten oma verkkokorttinsa. VyOs ympäristön virtuaalisia verkkokortteja on siis yksi per jokainen sisäverkko sekä lisäksi ulkoverkkoa (internet) varten omansa. Esimerkissä sisäverkkoja on 1 kpl joten verkkokortteja tarvitaan 2 kpl.

VyOS reitittimen asentaminen ja suomalaisen näppäimistön määrittäminen käyttöön

  1. VyOS virtuaalikoneen käynnistyttyä, järjestelmään voidaan kirjauta tunnuksella vyos ja salasanalla vyos

  2. Seuraavaksi aloitetaan järjestelmän määrittäminen käyttöön. Anna komento install system.

    Käyttöön määrittäminen voidaan itse asiassa aloittaa joko install image tai install system komennoilla. Install system komento jäljittelee perinteistä fyysiselle työasemalle asennettua Linux palvelinta kun taas install image komento asentaa VyOS:n virtuaalikiintolevyllä olevaan hakemistoon. Myöhemmin samalle massamuistilaitteelle voidaan asentaa uusia VyOS versiota. Install image komento mahdollistaa VyOS palauttamisen aiempaan versioon.

  3. Vastaa kysymykseen Would you like to continue [Yes]: Enter

  4. Vastaa kysymykseen Partition (Auto/Parted/Skip): Enter

  5. Install the image on? [sda] : Enter

  6. Continue (Yes/No): Yes

  7. How big of a root partition should i create? (1000MB – 3221MB) [3221] MB: Enter

  8. What would you like to name this image? [1.1.5]: Enter

  9. Which one should i copy to sda? [/config/config.boot]: Enter

  10. Enter password for user `vyos´: määritä haluamasi salasana

  11. Retype password for user ‘vyos’: anna salasana uudelleen

  12. Which drive should GRUB modify the boot partition on? [sda]: Enter

  13. Sammuta VyOs komennolla poweroff ja ota asennusmedia pois käytöstä
VyOS reittimen määrittäminen ja NAT:n asettaminen käyttöön

VyOS ympäristö määritetään seuraavaksi reitittämään testiympäristössä olevat palvelimet internetiin. VyOs määritetään lisäksi käyttämään NAT VLAN 10 tyyppisesti.
  1. Käynnistä VyOS uudestaan ja anna komento configure siirtyäksesi määritys tilaan

  2. Tarkasta käyttöönotetut verkkokortit komennolla: show interfaces ethernet
clip_image0017
  1. Määritä ulkoiseen verkkoon kytketty verkkokortti (eth0) käyttämään joko dhcp tai ulkoisen verkon kiinteää ip:ä.
    DHCP asetetaan käyttöön komennolla: set interfaces ethernet eth0 address dhcp
    Kiinteä ip-osoite asetetaan käyttöön komennolla: set interfaces ethernet eth0 address ‘ip-osoite’/maski

    Jos kiinteä ip-asetus otetaan käyttöön, voidaan ulkoverkon reittimen ip-osoite asettaa käyttöön komennolla: set system gateway-address ulkoisen reittimen ip
  2. Jos määrittelit edellisessä kohdassa käyttöön kiinteän ulkoverkon ip-osoitteen, suoritetaan seuraavaksi ulkoverkon reitittimen ip-osoitteen määritys. set system gateway-address *ulkoverkossa toimiva reititin* (joka voi siis olla esim DSL purkki).

  3. Lisäksi voidaan asettaa käyttöön DNS forwarding (ei välttämätöntä):
    • set service dns forwarding cache-size 0
    • set service dns forwarding listen-on eth1
    • set service dns forwarding name-server 8.8.8.8
    • set service dns forwarding name-server 8.8.4.4
Määrityksen jälkeen VyOS reitittimen sisäverkkoon kytketyn verkkosovittimen ip-osoite (tässä tapauksessa 192.168.1.1) voidaan määrittää virtuaalikoneissa DNS palvelimeksi.

Jos em. asetusta ei määritetä, voidaan virtuaalikoneissa tietysti käyttää myös esim. Googlen DNS palvelimia (8.8.8.8 ja 8.8.4.4).
  1. Anna ulkoverkkoon kytketylle verkkokortille (eth0) kuvaus komennolla set interfaces ethernet eth0 description OUTSIDE

  2. Määritä sisäiseen testiverkkoon kytketty verkkokortti (eth1) käyttämään sisäisen verkon ip-numeroa ja aliverkonpeitettä (tässä esimerkissä 192.168.1.1/24): set interfaces ethernet eth1 address 192.168.1.1/24

  3. Anna sisäverkkoon kytketylle verkkokortille (eth1) kuvaus komennolla set interfaces ethernet eth1 description INSIDE

  4. Tarkasta verkkokorttien tilanne komennolla: show interfaces ethernet

  5. Otetaan käyttöön NAT:
    • set nat source rule 10 outbound-interface eth0
    • set nat source rule 10 source address 192.168.1.0/24
    • set nat source rule 10 translation address masquerade

  6. Aseta VyOS hostname komennolla: set system host-name *haluttu nimi tähän* esim VyOS-Router

  7. Aseta aikavyöhyke komennolla: set system time-zone Europe/Helsinki

  8. Aseta muutokset käyttöön komennolla: commit

  9. Tallenna muutokset komennolla: save ja poistu muokkaustilasta komennolla: exit

  10. Voit tarkastaa määritykset komennolla: show configuration

clip_image00290

Sisäverkon laitteet voidaan nyt määrittää käyttämään VyOS reititintä asettamalla reitittimen ip-osoitteeksi VyOS:n sisäverkkoon kytketyn verkkokortin (eth1) osoite 192.168.1.1
Jos määriteltiin käyttöön myös DNS-forwarding, voidaan VyOS reitittimen sisäverkkoon kytketyn verkkokortin ip-osoite (eth1) määrittää DNS palvelimen osoitteeksi.

clip_image00390

Asetusten asettaminen skriptillä / leikepöydän avulla

Jos VyOS virtuaalikonetta joutuu asentamaan (esim. koulussa) useampaan työasemaan, on ei asetuksia kannata määrittää käsin (työlästä). Tässä tilanteessa voi asetukset joko A) asettaa esim. sh skriptin avulla jonka voi siirtää VyOS ympäristöön PuTTY ohjelmalla tai B) tai käyttää ns. clonehelper skriptiä. Skripti määrittää kloonattujen virtuaalikoneiden verkkokorttien MAC-osoitteet kloonattuun VyOS koneeseen. Valitettavasti B) vaihtoehto ei ainakaan tällä hetkellä ole käytettävissä koska nettisivu clonehelper skriptiin on poissa käytöstä.

Asetukset voi kuitenkin helposti asettaa PuTTY ohjelmalla SSH yhteyden yli…varsinkin jos asetuksen on jo valmiiksi kirjattu ylös. SSH palvelimen saa VyOS:a käyttöön antamalla määritystilassa (configure) komennon set service ssh. Tämän jälkeen voidaan muodostaa yhteys VyOS:n ja leikepöydän avulla liittää määritykset suoraan config/config.boot tiedostoon.

On myös mahdollista määrittää VyOS, skriptissä olevien komentojen avulla.

1. luodaan esim. asetukset.sh niminen tiedosto ja avataan ko. tiedosto nano asetukset.sh

2. liitetään komennot PuTTY ohjelman avulla komennot em. tiedostoon.

3. tallennetaan tiedosto ja suljetaan Nano

4. annetaan asetukset.sh tiedostolle suoritusoikeudet sudo chmod u+x

5. suoritetaan tiedosto sudo ./asetukset.sh

Valmiin skriptin voi ladat TÄÄLTÄ

Ohjeet ja latauslinkit

VyOS reitittimen voit ladata TÄÄLTÄ

Lisätietoa ja oppaan löydät TÄÄLTÄ

HUOM

Tarvittaessa (esim. jos halutaan vaihtaa dhcp:ä kiinteään ip-osoite määrityksen) ip-osoitteet voidaan määrittää suoraan esim. nano ohjelmalla  /config/config.boot. määritystiedostoon. Asetuksia voidaan muuttaa esim. nano ohjelmalla. Komento sudo nano config/config.boot avaa tiedoston nano ohjelmaan.
Jos asetukset määritetään config.boot tiedostoon, tulevat asetukset voimaan vasta VyOS:n uudelleen käynnistyksen jälkeen. On siis tärkeää että VyOs käynnistetään uudelleen config.boot tiedoston määrittämisen jälkeen.

HUOM

Jos asetukset määritetään suoraan config.boot tiedostoon tulee huomata että commit ja save komentoja ei tarvita vaan asetukset tulevat käyttöön seuraavassa bootissa. Itseasiassa save komento jopa pilaa config.boot tiedoston muokkauksen koska se kirjoittaa muistissa olevat asetukset takaisin config.boot tiedostoon nollaten näin tehdyt muokkaukset.

Tarvittaessa VyOS ympäristössä voidaan ottaa käyttöön suomalainen näppäimistö asettelu.

  1. Otetaan ensin käyttöön suomalainen näppäimistö komennolla set console keymap

  2. Please select the model of the keyboard of this machine: Enter

  3. Please select the layout matching the keyboard for this machine: Other –> Finland

  4. Configure keyboard-configuration: Finland

  5. Configuring keybaord-configuration: The default for the keyboard layout

  6. Configuring keybaoard-configuration: No compose key

  7. Käynnistetään VyOS uudelleen: reboot