Virtual Network Computing, ook bekend als VNC

ArticleCategory: [Choose a category for your article]

System Administration

AuthorImage:[Here we need a little image form you]

[Photo of the Author]

TranslationInfo:[Author and translation history]

original in en Georges Tarbouriech

en to nl Rano Kuhl

AboutTheAuthor:[A small biography about the author]

Georges is een ervaren Unix-gebruiker (op commerciële en vrij beschikbare Unix-systemen). VNC veranderde zijn leven ;-).

Abstract:[Here you write a little summary]

VNC is de droom die werkelijkheid is geworden voor de netwerkbeheerder. Je zou kunnen zeggen dat het een systeem is waarmee computers op afstand bekeken kunnen worden, maar het is veel meer dan dat. Bij het bezoeken van http://www.uk.research.att.com/ kun je deze software GRATIS downloaden. VNC is gedistribueerd onder de GPL en is beschikbaar voor meerdere platforms. Het programma is al naar verschillende besturingssystemen geporteerd en natuurlijk kun jij ook je steentje bijdragen. Laten we eens kijken wat VNC zoal aan mogelijkheden te bieden heeft.

ArticleIllustration:[This is the title picture for your article]

[Illustration]

ArticleBody:[The article body]

Inleiding

Begin 1999 nam AT&T de onderzoekslaboratoria van Olivetti over en zette de ontwikkeling van VNC voort. Zoals wordt verteld op de website van AT&T komt de naam VNC van de oorspronkelijke ontwikkeling van de ATM-netwerkcomputers (zogenaamde very thin clients die werken met Asynchronous Transfer Mode, een snel asynchroon universeel transportmechanisme) en "aangezien de VNC-viewer een uitsluitend softwarematige versie is van deze ATM-netwerkcomputer, waarmee naar behoefte werkstations kunnen worden aangemaakt of gewist, noemden we het systeem Virtual Network Computing".

Om VNC te gebruiken, heb je een TCP/IP-netwerk nodig, een VNC-server en een VNC-viewer om toegang te krijgen tot de machine die de VNC-server draait.
De op X gebaseerde VNC-server werkt volgens hetzelfde client-server-principe als X. In werkelijkheid heb je twee servers in één: een X-server en een VNC-server. Hierdoor is het mogelijk hetzelfde schermnummer te gebruiken voor zowel de X-server als de VNC-server. Om verbinding te maken met de VNC-server, moet je de computernaam en het schermnummer opgeven. Het commando heeft de volgende opbouw: "vncviewer computernaam:2". Voor de duidelijkheid, als je X-server schermnummer 2 heeft, dan zal de VNC-server ook schermnummer 2 hebben. Vanaf de client kun je met behulp van de viewer verbinding maken met de server door het invoeren van het schermnummer. Als een gebruiker op de server werkt op scherm 1 en jij maakt een verbinding met scherm 2, dan zal deze gebruiker niet eens merken dat je op zijn machine werkt. VNC is in staat het eerste vrij beschikbare schermnummer te vinden en de gebruiker hierover te informeren, maar niets weerhoudt die gebruiker ervan een ander schermnummer te gebruiken. Als de VNC-server je schermnummer 2 geeft, kun je een verbinding maken met bijvoorbeeld scherm nummer 3 of 4 door het gewenste nummer in te voeren bij het opstarten van de viewer.

Op machines die Windows draaien ligt de zaak anders, want je bent dan niet in staat om een nieuwe desktop te maken. De bestaande desktop is op afstand bedienbaar. Als we naar het vorige voorbeeld van de werkende gebruiker kijken en je maakt een verbinding naar deze machine, dan zal deze gebruiker alles kunnen zien wat jij aan het doen bent, net alsof zijn machine uit zichzelf werkt! Het standaard-schermnummer zal natuurlijk 0 zijn. Als je twee NT-machines met elkaar laat verbinden hoef je dit nummer niet eens in te voeren.

VNC is beschikbaar voor verschillende besturingssystemen, hoewel soms alleen als een client, oftewel viewer. Voor BeOS is bijvoorbeeld geen VNC-server beschikbaar. Veel Unices, MacOS, AmigaOS, ... kunnen VNC gebruiken. Op http://www.uk.research.att.com/vnc/platforms.html kun je zien welke versies er voor welke platforms zijn. Je kunt de broncode of de gecompileerde versie van VNC downloaden, afhankelijk van het platform waarop je werkt. De programma's zijn klein en gemakkelijk te installeren. Laten we nu eens kijken hoe VNC werkt.

Presentatie



De server

De huidige versie van VNC is 3.3.3, waarbij de versies per platform een afwijkend nummer hebben. Op Unix-versies (of computers die X gebruiken) krijg je een programma genaamd VNC-server en een ander genaamd Xvnc. VNC-server is een Perl-script dat je naar eigen behoeften kunt instellen. Dit script start Xvnc op. Het is niet aan te bevelen Xvnc direct op te starten. De programma's kunnen worden geïnstalleerd waar je maar wilt. Elke window manager kan worden gebruikt zodra je deze instelt als de standaardviewer in het xstartup-scriptje (kijk in de directory .vnc). Als je VNC-server voor de eerste keer opstart, word je om een wachtwoord gevraagd. Dit wachtwoord is nodig om een verbinding te maken naar deze server. Zoals elke X-server beschikt VNC-server over veel opties. Door het intikken van "Xvnc --help" krijg je een lijst met opties te zien. Als je deze opties gebruikt, zullen ze worden doorgestuurd van VNC-server naar Xvnc, vandaar het dat je het best deze eerste kunt gebruiken. Dit is voldoende om de VNC-server te draaien! Op Microsoft-computers ligt het iets anders. Op NT4.0 kun je een VNC-server draaien als een service. Op Windows 95 of 98 zul je het moeten starten via een pictogram of menu. Voor de op X gebaseerde servers kunnen veel instellingen worden gedefinieerd - je zult het bijbehorende menu moeten controleren. We zullen niet alle specificaties van de verschillende VNC-servers voor de vele ondersteunde platforms bespreken, want dat zou een compleet nieuw artikel vergen.

De client (de viewer)

De client is alleen een executable genaamd VNC-viewer. Om verbinding te maken met een VNC-server hoef je alleen maar VNC-viewer te starten en het schermnummer te geven. Als je bijvoorbeeld wilt verbinden met een server genaamd Linux op schermnummer 2, dan hoef je alleen maar "vncviewer linux:2" in te tikken. Hierop wordt het serverwachtwoord gevraagd waarna je op het bureaublad van de Linux-computer terechtkomt, net of je gewoon op die machine werkt. Als je als root bent ingelogd, krijg je volledig beheer over die computer. Je kunt dus maar beter weten wat je doet. Dit kan voor elke viewer, voor elk platform. In één woord: fantastisch!


De leuke kant


Op een lokaal (vanwege de snelheid) netwerk, laat VNC je nogal ongebruikelijke dingen doen. Alles lijkt mogelijk: je kunt elk type applicatie draaien op elk besturingssysteem. Als je bijvoorbeeld VNC-server draait op een Windows NT-computer en een viewer op BeOS, dan kun je gebruik maken van elke software die beschikbaar is op die NT-machine. Stel, je bent in het bezit van een Photoshop-licentie, dan kun je Photoshop draaien op je BeOS-machine net zoals je dat zou doen op de NT-computer. Op je BeOS-bureaublad verschijnt een schermpje met daarin het NT-bureaublad: je werkt dus op de NT-machine!

bewin.jpg
Photoshop in BeOS?

winlin.jpg
Of Gimp in Windows?

Nogmaals, dit kan worden gedaan vanaf elke machine die VNC-viewer draait.
Nog een voorbeeld: als je op een computer werkt die geen internetverbinding heeft, dan kun je een verbinding maken met een VNC-server die verbonden is met het internet en diens browser gebruiken om een URL te bezoeken. Waarschijnlijk kun je ook het mail-programma gebruiken om je mailbox te bekijken of om een e-mail te versturen.

linsgi.jpg
De VNC-viewer heeft geen internettoegang, maar toch...

Verder kun je een verbinding maken met een VNC-server en van daaruit een verbinding maken naar de een of andere computer in het netwerk, en (waarom ook niet) als je daar een nieuwe VNC-viewer draait, kun je ook deze machine met een VNC-server verbinden, en ga zo maar door! Als je een VNC-server op een Unix-machine draait, dan kan elke andere machine die VNC-viewer draait tegelijk verbinding maken met deze server, gebruikmakend van verschillende schermnummers. Dit werkt niet op Windows-machines, omdat je daar natuurlijk maar ��n scherm tot je beschikking hebt.

De serieuze kant

Dat betekent natuurlijk niet dat wat we hiervoor gezegd hebben, niet serieus is! Iedere systeembeheerder kent de kwaliteiten van een Windows NT-netwerk: je weet niet eens wie verbonden is met een server of wat hij aan het doen is... tenzij je de resource kit hebt gekocht, waarmee je in ieder geval een lijst kunt oproepen van alle processen die draaien op een specifieke machine (overigens zonder de mogelijkheid de verbinding te verbreken). Geen commentaar... Met VNC kun je de zaken omdraaien. Een voorbeeld: Je onderhoudt en ontwerpt verschillende Windows-applicaties (Mijn collega Javi zegt: als je arm bent heb je het niet voor het kiezen!). Voor elke nieuwe versie moet je de server en de clients updaten. De machines zijn allemaal in mindere of meerdere mate van je eigen kantoor verwijderd. Je kunt de applicatie niet updaten als deze op ��n of meer clients draait. Met VNC kun je de applicatie op elke client stoppen, de update installeren, controleren...zonder je kantoor te verlaten. Het is beter om dit te doen als niemand werkt, maar veel gebruikers vergeten de applicatie te sluiten na gebruik, waarna je zou moeten controleren of de applicatie nog steeds draait of niet. Zodra VNC is geïnstalleerd als een service op de werkstations, kun je VNC-server op afstand opstarten, een verbinding maken met de NT-server en doen wat je moet doen. Dat kan zijn het stopzetten van de applicatie, het installeren van de upgrade, (zelfs vanaf een andere NT-server dan degene waarop je aan het werk bent als deze is verbonden met de VNC-server), en het controleren of de upgrade goed werkt. Daarna kun je de VNC-server op die machine stoppen en hetzelfde werk verrichten op andere werkstations.

Dit zou niet mogelijk zijn met X-emulatie op Windows-computers, omdat de installatie gebonden is aan het besturingssysteem. Een ander verschil: Anders dan onder X11 wordt er geen informatie opgeslagen aan de kant van de viewer. Je kunt de verbinding met de VNC-server verbreken, verbinden met een andere machine, daarna weer verbinding maken met de VNC-server en uiteindelijk weer verder gaan met je werk!

Iets belangrijks: VNC heeft de mogelijkheid om met Ctrl-Alt-Del het NT-werkstation dat op afstand wordt bediend te ontkoppelen. (Dit was niet mogelijk bij vorige versies). Dit voorbeeld gaat ervan uit dat we werken vanaf een NT-server. Je kunt precies hetzelfde doen vanaf een Unix-werkstation dat VNC-viewer draait en verbonden is met een NT-server die VNC-server draait. Zo kun je op het hele netwerk beheren door (als je de rechten hebt om dit te doen) de aanwezige commando's te gebruiken om de VNC-servers op de bedienbare machines te starten. Verder betekent 'remote' overal. Dat betekent dat je dit ook thuis zou kunnen doen! Waarmee we terecht zijn gekomen bij de beveiliging.

Beveiliging

Het is helaas een feit dat elke communicatie-opdracht binnen een netwerk als een potentieel beveiligingslek kan worden beschouwd. Het enige wat je kunt doen is proberen het risico te verkleinen. Wees niet naïef: beveiliging is alleen maar een woord. Als iemand je vertelt dat zijn netwerk voor 100% beveiligd is, kun je hem maar beter niet geloven. Hackers zijn veel slimmer dan mensen denken: ook dat is een feit.

Om VNC te beveiligen moet je derhalve het netwerk beveiligen. Firewalls, SSL, SSH e.d. kunnen worden gebruikt om de beveiliging te verbeteren. Bij SSL en SSH heb je de mogelijkheid om het verkeer op twee manieren te versleutelen. We gaan SSL of SSH hier niet bespreken, want dat is een heel ander onderwerp. Als je meer hierover wilt weten kun je de SSH-website bekijken op http://www.ssh.fi/ of naar de open source-SSL surfen op http://www.openssl.org/. Extra's, patches en add-ons voor beveiliging zijn beschikbaar vanaf de website van AT&T. Hier vind je onder meer een manier om toegang te krijgen tot een server die achter een firewall zit. Er is ook een versie van VNC beschikbaar die gebruik maakt van SSLeay public key-encryptie. Een andere beveiligingsoptie is het geven van restricties op IP-adres. Natuurlijk zijn er nog veel meer mogelijkheden maar die zullen we niet allemaal noemen. Zie http://www.uk.research.att.com/vnc/extras.html voor meer informatie.

VNC heeft ook Java-implementatie. Dat betekent dat je een browser die Java ondersteunt kunt gebruiken als viewer, zodra je de juiste poort gebruikt (58**, waarbij ** het schermnummer is: 5802 luistert naar scherm 2). Het is het noemen waard, maar het is wel ontzettend traag en het zit vol met beveiligingslekken. Maar het bestaat en het zou getest moeten worden. Tot slot van het beveiligingshoofdstuk moet kort vermeld worden dat VNC is beslist niet kwetsbaarder is dan telnet of rlogin.

Conclusie

Als je VNC niet kent, is het het testen waard. We hopen dat we met dit artikel je interesse hebben gewekt. Waarschijnlijk is het een van de beste pakketten in deze categorie. Het is een licht pakket, erg snel (natuurlijk is dit wel afhankelijk van het netwerk of het type verbinding) en het is gratis! VNC is betrouwbaar en het enige probleem dat ik had met de laatste versie betrof de Windows-versie: als een gebruiker op afstand op het NT-werkstation de CapsLock aan laat staan, werkt het commando Ctrl-Alt-Del niet meer (mijn collega zei dat ik het wachtwoord in een editor moest zetten, dit kopiëren en plakken in het wachtwoordveld - deze tip werkt nog ook!). Dat is het enige minpunt dat ik kon vinden. Ik gebruik VNC op Solaris Sparc, Irix, Linux, BeOS, AmigaOS en NT. De minst ontwikkelde versie is die voor AmigaOS.

Wat je net hebt gelezen is maar een klein deel van de vele mogelijkheden die VNC te bieden heeft. VNC verschijnt al met sommige Linux-distributies, een teken dat de interesse voor deze software steeds groter wordt. Of je nu thuis met een klein netwerk werkt of met een groot netwerk op het bedrijf, probeer VNC gewoon eens uit. Je zult zien dat het geweldig is!