VirtualBox webserver

Het komt niet vaak voor maar heel soms zie ik voordelen aan Windows boven Linux. Ieder voordeel heb zijn nadeel en bij Windows zijn de nadelen vaak groter dan de voordelen maar ik had er vandaag weer 1 te pakken.

Als ik op Windows in VirtualBox een Linux webserver installeer met een NAT adapter dan kan ik eenvoudig host port 80 naar guest port 80 forwarden en klaar is kees. Ik heb een Windows platform met een zinvolle webserver. Combineer dit met OpenSSH en het forwarden van port 22 en we kunnen onze webserver remote voorzien van onze prachtige website. Natuurlijk is het geen veilig idee dat een gebruiker zomaar een proces kan laten binden aan een default port maar het scheelt weer een stapje als dit gewenst is.

Op mijn Ubuntu host gaat dit ietsje moeilijker. Ik kan tegen Virtualbox zeggen dat port 22 of 80 ge-forward moet worden naar een virtuele server. Virtualbox zal mij niet vertellen dat het niet lukt om port 80 of 22 te binden maar Linux zal nooit toelaten dat een proces in userspace zich bind aan een portnummer onder de 1024. Natuurlijk kan ik kiezen voor een hostport 8080 of 2222 maar dat zal het niet makkelijk maken om te browsen naar website. http://bs012.nl is al een moeilijk adres voor veel studenten laat staan dat ik http://bs012.nl:8080 moet doorgeven. Ik denk niet dat lessen van 30 minuten dan nog enige inhoud kunnen hebben.

Kortom: "Hoe zorg ik ervoor dat een Linux host het toe staat dat een virtuele machine http verzoeken afhandelt?"

Stap 1: start een VM vanaf de commandline
Behalve de gebruikersvriendelijke grafische interface VirtualBox komt iedere VirtualBox installatie ook met een krachtige commandlinetool: vboxmanage.
Om een Virtuele machine "OpenSuSE" te starten vanaf de commandline kun je intypen:

vboxmanage startvm OpenSuSE

Stap 2: de directory ~/.VirtualBox kopiëren of koppelen.
Het zou makkelijk zijn als je dit vooraf kan laten gaan door sudo zodat de betreffende machine een proces van root is en zich daarmee kan binden aan de gewenste port. Maar daar zijn we nog net niet. De instellingen van de virtuele machine en de machine zelf staan in de directory ~/.VirtualBox van de ingelogde gebruiker. Om de machine OpenSuSE ook beschikbaar te maken voor root zal er een copy van deze directory in de home directory van root moeten komen. Ik kies ervoor om dit met een link op te lossen.

ln -s /home/ger/.VirtualBox /root/.VirtualBox

Klaar. Nu kunnen we onze virtuele machine starten vanaf de commandline met het commando:

sudo vboxmanage startvm OpenSuSE


Comments