VNC en Windows XP SP2

Binnen VRVS (Virtual Room Videoconferencing System) wordt gebruik gemaakt van VNC voor het delen van je desktop (als je dat wilt natuurlijk en normaal gesproken zul je anderen alleen laten kijken). Het heeft me heel lang (veel te lang) gekost om dat ook voor mijn laptop hier thuis achter mijn ADSL-modem voor elkaar te krijgen. Reden te meer om even op te schrijven hoe ik het uiteindelijk voor elkaar gekregen heb.
Omdat VNC in verschillende smaken verkrijgbaar is, heb ik er maar even een wiki-pagina van gemaakt, dan kunnen daar ook nieuwe implementaties van VNC toegevoegd worden.

VNC heel kort door de bocht
Het idee achter VNC is heel eenvoudig, daardoor krachtig, maar ook potentieel gevaarlijk: op de ene computer installeer je een programma dat als server dienst doet. Op de andere computer een progamma dat client is. Met de client maak je verbinding met de server door het invoeren van het adres van die server en (zéér aan te raden) het wachtwoord dat ingesteld is.
Het resultaat is dat er op de computer met de client een venster geopend wordt waar je de desktop van de computer met de server ziet. Dan zijn er twee opties:
1) alleen kijken; hierbij mag je zien wat er op de andere computer gebeurt, maar kun je niet zelf actie ondernemen.
2) besturen van de computer; hierbij heb je de volledige controle over de computer aan de andere kant, je kunt dus op icoontjes op het werkblad klikken en programma’s opstarten. Alles wat je zou kunnen doen als je achter die computer zelf zou zitten.

In die tweede optie schuilt natuurlijk ook het risico van VNC: iemand zou (als hij/zij het wachtwoord kent) op die manier jouw computer vanaf afstand kunnen overnemen.
Een reden overigens waarom ik zonder te testen bij voorbaat verwacht dat de Fontys-firewall dat verkeer tegen houdt. Iets waar ik ook niet veel tegenin kan brengen, want je moet inderdaad wel goed weten wat je doet.

Poorten
VNC maakt standaard gebruik van poort 5900 voor de communicatie tussen de client en de server. Maak je gebruik van NAT, bijvoorbeeld thuis in combinatie met een ADSL-modem, en je wilt van buiten je eigen thuisnetwerk een VNC-server binnen dat netwerk bereiken, dan zul je port-forwarding moeten gebruiken om het verkeer dat vanaf het internet komt op de juiste plaats intern te laten aankomen.

Stel je hebt een server draaien op een computer met intern IP-nummer 10.0.0.4 dan moet je in de ‘virtual server’ sectie van je ADSL-modem aangeven dat het verkeer op de externe poort 5900 doorgestuurd wordt naar poort 5900 op de interne computer met IP-nummer 10.0.0.4

Overigens hoef je dat poortnummer niet in te geven in de VNC-client. Als je daar bijvoorbeeld vanaf het internet als adres het externe IP-nummer (dus het IP-nummer dat jij van de ADSL-provider gekregen hebt) invoert, dan probeert de VNC-client automatisch via poort 5900 verbinding te krijgen.

Naast poort 5900 is ook poort 5800 een ‘standaard’ poort. VNC heeft namelijk in de meeste (alle?) implementaties een handigheidje aan boord waardoor het mogelijk is met de server verbinding te maken zonder eerst de client te downloaden en te installeren. De server start dan een ingebouwde webserver die luistert naar poort 5800 (systeembeheerders zullen nu helemaal huiveren ;-) ) Als je dan in een browser invoert http://MIJN_URL:5800/ (waarbij MIJN_URL vervangen is door het externe IP-nummer of domeinnaam) dan wordt er in de browser een java-applicatie gestart die als viewer dienst doet.
Daarvoor moet je wel vooraf in de ADSL-router aangegeven hebben dat ook poort 5800 doorgestuurd wordt naar de computer met de VNC-server én in de configuratie-opties van de VNC-server moet het starten van de ingebouwde webserver aangevinkt staan.

VNC in VRVS
Binnen VRVS hoeft alleen de persoon die zijn werkblad wil laten zien aan de andere deelnemers beschikking te hebben over de VNC-server. Alle andere deelnemers kunnen meekijken via de JAVA-client die hierboven beschreven wordt. In VRVS kan maar één persoon tegelijkertijd zijn/haar werkblad delen.

vnc in vrvs - Klik voor grotere versie

Die gebruiker moet dan natuurlijk eerst een VNC-server installeren en starten.

vnc in vrvs - Klik voor grotere versie

Ik heb hier UltraVNC gebruikt. Een VNC server/client-combinatie die alleen voor Windows beschikbaar is, maar waar je (met een paar beperkingen) er voor kunt kiezen om slechts één venster te delen in plaats van meteen je hele desktop. Maar elke andere VNC-server op elk van de ondersteunde besturingssystemen zou hier werken.

Als je dat gedaan hebt moet je in VRVS naar het tabblad sharing gaan en daar op de knop SHARE te klikken. Er verschijnt dan een popupvenster waarin het wachtwoord van de server moet worden ingevoerd. Ook kan er daar voor gekozen worden om de gebruikers alleen te laten meekijken (Broadcast only) of dat de deelnemers aan het overleg ook dingen kunnen wijzigen (Full control). Broadcast only is in de meeste gevallen de aan te bevelen keuze, tenzij je bijvoorbeeld een van de andere deelnemers op jouw computer wilt laten werken.

vnc in vrvs - Klik voor grotere versie

Het wachtwoord dat je hier invult is het wachtwoord dat je ook bij je VNC-server hebt ingegeven. De andere gebruikers hoeven dat wachtwoord niet te kennen.

Als het goed gegaan is, verandert de status nu en zie je dat jij je desktop deelt. Als iemand anders dat doet, zie je hier wie dat is.

vnc in vrvs - Klik voor grotere versie

De andere deelnemers zullen dan zien dat er een werkblad gedeeld is en kunnen dan zolang dat zo is, niet ook hun eigen werkblad delen. Er kan er maar één tegelijkertijd gedeeld worden.
Een deelnemer hoeft maar op de knop naast de mededeling te klikken om het java-venster met een voorbeeld te laten openen.
Ook in het tabblad Main kun je nu zien dat er een desktop gedeeld wordt:

vnc in vrvs - Klik voor grotere versie

Ik kan niet laten zien hoe het er in VRVS uitziet als iemand anders zijn desktop deelt, want op dit moment is er niemand beschikbaar om zijn desktop te delen. Het is niet mogelijk om met twee computers achter dezelfde ADSL-router (als die NAT gebruikt) op deze maniers (via VRVS) desktops te delen. VRVS zal ook voor de andere computer , ook als je daar als een andere VRVS ingelogd bent en/of daar geen VNC-server hebt draaien, aangeven dat jij degene bent die zijn desktop deelt.

Windows XP SP2 en VNC
Hoewel het eigenlijk allemaal heel simpel lijkt, heeft het lang geduurd voordat het lukte. Het probleem was dat ik de server niet kon laten delen. Iedere keer als ik bij VRVS probeerde aan te geven dat ik mijn werkblad wilde delen, kreeg ik de foutmelding dat het wachtwoord dat ik invoerde onjuist was. Terwijl ik 200% zeker was dat het het juiste wachtwoord was.

In de firewall van SP2 was de VNC-server als uitzondering aangegeven zodat verkeer van buiten de computer mogelijk zou moeten zijn. Maar het werkte niet.
Het probleem is opgelost sinds ik bij de Windows Firewall expliciet nog eens heb aangegeven dat poort 5800 en poort 5900 noodzakelijk zijn en dat verkeer voor die poorten door de firewall van Windows XP moet kunnen. Blijkbaar was het alleen opnemen van de applicatie zelf in die lijst met uitzonderingen (applicaties die door de firewall mogen) niet voldoende.

Ik merk trouwens ook dat ik wel heel veel woorden en zijpaden nodig heb om dit uit te leggen, ik moet toch maar eens kijken of ik wat tijd kan vinden om dit in Captivate vast te leggen zodat jullie het gewoon stap voor stap kunnen zien.