Virtual Network Computing, auch bekannt 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 de Harald Radke

AboutTheAuthor:[A small biography about the author]

George arbeitet schon seit langer Zeit mit Unix, sowohl mit kommerziellen, als auch freien Derivaten. VNC hat sein Leben zutiefst verändert (-:

Abstract:[Here you write a little summary]

VNC ist der wahrgewordene Traum eines jeden Netzwerk Administrators.
Man könnte VNC als Remote Display System (Darstellung der Bildschirmausgabe eines Rechners auf einem anderen im Netz) bezeichnen, es ist aber viel mehr als das.
Unter http://www.uk.research.att.com kann dieses großartige Programm kostenlos heruntergeladen werden. VNC ist unter der GPL lizensiert und ist für viele verschiedene Plattformen zu haben.
Natürlich kann jeder an der Software mitarbeiten, viele Portierungen auf verschiedene Betriebssysteme sind so erst möglich geworden.
Es folgt ein Einblick in die vielen Möglichkeiten, die VNC bietet.

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

[Illustration]

ArticleBody:[The article body]

Einleitung

Zu Beginn des Jahres 1999 erwarb AT&T das Olivetti Forschungslabor und führte die Arbeit an VNC fort.
Der AT&T Website zufolge entsprang der Name VNC der Entwicklung von of very-thin-client ATM network computers und "da dieser VNC Viewer eine rein softwaremäßige Realisierung solch eines ATM Netzwerk Rechners war und so nach belieben Workstations erzeugt oder entfernt werden konnten, nannten wir das System Virtual Network Computing".

Für den Einsatz von VNC wird eine TCP/IP Netzwerkverbindung, ein VNC Server und VNC Viewer benötigt. Letzterer baut die Verbindung zum Rechner auf, auf dem der VNC Server läuft.
VNC Server, die auf X basieren, arbeiten nach dem Client-Server Modell, genau wie X. Tatsächlich sind es zwei Server in einem einzigen: ein X Server und ein VNC Server. Dadurch kann die gleiche Display Nummer für beide Server verwendet werden. Für die Verbindung zu einem VNC Sever muss der Rechnername und die Display Nummer angegeben werden. Der Befehl schaut ungefähr so aus: vncviwer machinename:2. Anders ausgedrückt: hat der X Server die Display Nummer 2, so gilt dies auch für den VNC Server. Über diese Nummer kann also auf der Benutzerseite mit dem VNC Viewer eine Verbindung zum Server aufgebaut werden. Sollte ein Benutzer auf dem Serverrechner auf Display Nummer 1 arbeiten, so bekommt er es gar nicht mit, dass eine weitere Verbindung existiert.

VNC ist in der Lage, die erste verfügbare Display Nummer zu finden und dem Benutzer mitzuteilen. Diesem steht es jedoch frei, einen anderen Display zu wählen. Liefert vncserver die Nummer 2, so kann man eine Verbindung zur Nummer 3,4,... aufbauen, solange man den jeweiligen Wert beim Aufruf des Viewers angibt.
Unter Windows sieht das schon ein wenig anders aus, da man hier keinen neuen Desktop erzeugen kann. Vielmehr wird der bestehende Desktop über das Netz zur Verfügung gestellt. In diesem Fall nun kann ein Benutzer, der gerade am Server arbeitet, jede Aktion verfolgen, die man mittels VNC durchführt! Der Standardwert der Display Nummer ist natürlich 0. Bei einer Verbindung zwischen zwei NT Rechnern muss diese Nummer nicht einmal angegeben werden.
VNC gibt es für viele verschiedene Betriebssysteme, manchmal nur als Clientversion, also der Viewer. Für BeOS zum Beispiel gibt es keinen VNC Server. Unter vielen Unix Derivaten, MacOS, AmigaOS, uvm. kann man auf VNC zurückgreifen. Eine Liste der unterstützten Plattformen ist unter http://www.uk.research.att.com/vnc/platforms.html zu finden.
Abhängig von der Zielplattform gibt es VNC als Quelltext- oder Binärpaket. Die Programme sind klein und einfach zu installieren.
Nun ein Blick auf die Funktionsweise von VNC.

Vorstellung

Die Serverseite

VNC gibt es zur Zeit als Version 3.3.3, wobei die Release Nummer von Plattform zu Plattform unterschiedlich ist.
Unter Unix (bzw. Plattformen, die X verwenden) sind es zwei Programme, Xvnc und vncserver. Letzteres ist ein Perl Skript, welches den jeweiligen Bedürfnissen angepasst werden kann. Dieses Skript startet Xvnc. Man sollte Xvnc nicht direkt aufrufen.
Diese beiden Programme können in jedem beliebigen Verzeichnis installiert werden, vorausgesetzt, es ist im Suchpfad für ausführbare Programme enthalten. Jeder Window Manager kann verwendet werden. Er muss nur entsprechend im xstartup Skript des Viewers (im Verzeichnis .vnc) eingetragen werden.
Wird vncserver das erste Mal aufgerufen, muss ein Passwort eingegeben werden. Nur mit diesem Passwort kann eine Verbindung zum Server aufgebaut werden.

vncserver bietet, ähnlich wie jeder X Server, eine Vielzahl von Optionen. Diese werden mit Xnc --help angezeigt. Alle verwendeten Optionen werden von vncserver an Xvnc durchgereicht, weshalb der Server über das Skript aufgerufen werden sollte.
Das war schon alles, was zum Start des VNC Servers getan werden muss!
Unter Windows ist dies ein wenig anders. Windows NT 4.0 erlaubt die Ausführung von vncserver als Service. Dagegen muss es unter Windows 95/98 vom Desktop oder Menü aus gestartet werden.
Auch hier gibt es wieder eine Menge möglicher Einstellungen, alle im entsprechenden Menü zu finden.
Weiter wird auf die Details der verschiedenen vncserver Versionen für all die Plattformen nicht eingegangen, würde dies allein schon genug Stoff für einen eigenen Artikel bieten.

Die Clientseite - der Viewer

Hier handelt es sich um ein einzelnes Programm, genannt vncviewer
Für einen Verbindungsaufbau mit einem VNC Server muss eine entsprechende Display Nummer beim Programmaufruf angegeben werden. Soll beispielsweise zu einem Server namens linux und dem Display Nummer 2 Kontakt hergestellt werden, lautet das Kommando vncviewer linux:2. Danach wird man nach dem Passwort des Servers gefragt und man hat Zugang zum Desktop, genauso, als säße man direkt vor ihm. Logged man sich als root ein, hat man vollen Zugriff auf den Rechner. Allerdings sollte man dann genau wissen, was man tut !
Dies kann man mit jedem Viewer für jede Plattform machen, einfach phantastisch!

Der spaßige Aspekt

In einem lokalen Netzwerk (der Geschwindigkeit wegen), kann man mit VNC so manche exotische Dinge machen.
Alles scheint möglich: Jede Art von Programm kann unter jedem Betriebssystem gestartet werden.
Verwendet man zum Beispiel vncserver auf einem Windows NT Rechner und startet den Viewer unter BeOS, kann man auf jede beliebige NT Anwendung zugreifen.
Angenommen, man besitzt eine Photoshop Lizenz, so kann man Photoshop auf dem BeOS Rechner starten, genau wie man es auf dem NT Rechner tun würde. Es wird ein Fenster auf dem BeOS Desktop geöffnet, welches den NT Desktop darstellt: man arbeitet auf dem NT Rechner!

bewin.jpg
Photoshop unter BeOS!

winlin.jpg
Oder Gimp unter Windows?

Nochmal: Man kann dies von jedem Rechner aus machen, der einen VNC Viewer bereitstellt.
Ein anderes Beispiel: Angenommen, der Rechner, auf dem man arbeitet, hat keine Internetverbindung. Man kann nun eine Verbindung zu einem VNC Server mit Internetanschluß aufbauen und einen Browser, der auf diesem installiert ist, zum Surfen benutzen. Genauso kann man das jeweilige Mailprogramm benutzen, um das eigene Postfach zu überprüfen oder eine Nachricht zu verschicken.

linsgi.jpg
Der Rechner mit vncviewer hat keinen Internetanschluß, und doch...

Geht man noch einen Schritt weiter, so kann man sich mit einem VNC Server verbinden, von dort eine Verbindung zu einem belieben Rechner im Netz aufnehmen und - warum auch nicht? - auf diesem einen weiteren VNC Viewer starten und einen anderen VNC Server kontaktieren, usw!
Läft vncserver auf einem Unix Rechner, können mehrere andere Rechner diesen mittels des Viewers gleichzeitg kontaktierern, wenn sie unterschiedliche Display Nummern verwenden. Dies geht unter Windows nicht, da es nur einen Display gibt.

Mal etwas ernsthafter...

Das heißt nun nicht, dass das, was vorhin gesagt wurde, nicht ernst gemeint war!
Beispielsweise kennt jeder System Administrator die Verwaltung von NT: Man weiß nicht, wer zu einem Server eine Verbindung aufgebaut hat, und (natürlich) hat man keinen Überblick, wer was tut... außer, man hat das Resource Kit, welches einem zumindest eine Liste der laufenden Prozesse auf dem angegebenen Rechner liefert (nicht, dass man allzuviele von diesen zur Not abschießen könnte). Ohne Worte!
Mit VNC kann man dieses "Feature" umgehe.

Ein Beispiel:
Angenommen, man ist für die Entwicklung und Pflege verschiedener Windows Anwendungen zuständig (Mein Freund Javi sagt immer: ein armer Mann hat keine Wahl!). Jede neue Version macht ein Update auf dem Server und den Clients notwendig. Die Rechner sind dabei unterschiedlich weit vom eigenen Büro entfernt. Und sicherlich kann man das Programm nicht updaten, wenn es auf einem oder mehreren Rechnern gerade läuft.
Mittels VNC kann man das Programm auf jedem Rechner beenden, das Update installieren und überprüfen...ohne das Büro zu verlassen. Natürlich ist es besser, wenn das Programm nicht aktiv ist, allerdings vergessen viele Benutzer einfach, ein Programm zu beenden, wenn sie fertig sind. Dies muss jeweils getestet werden.
Sobald VNC als Dienst auf den Clients installiert ist, kann man vom NT Server aus vncserver starten, sich mit den Rechnern verbinden und seinen Arbeit machen. Dies heißt dann, das Programm zu beenden, das Update zu installieren und zu schauen, ob es einwandfrei arbeitet. Dies geht selbst von einem anderen NT Server als dem, an dem man gerade arbeitet, und zu dem man mittels vncserver eine Verbindung hat. Danach kann man den VNC Server auf dem Client beenden und das Ganze auf dem nächsten Rechner wiederholen.

Dies wäre beispielsweise mit einer X Emulation auf den Windows Rechnern nicht machbar, da selbst das Installationsprogramm propritär ist. Ausserdem werden, im Gegensatz zu X11, keine Zustandswerte auf der Viewerseite gehalten. Man kann die Verbindung zum VNC Server abbrechen, sich einem anderen Rechner zuwenden, sich wieder mit dem ersten verbinden und weiterarbeiten!
Ein wichtiger Punkt: VNC gestattet es, ein Ctrl-Alt-Del an den NT Rechner, mit dem man verbunden ist, zu senden (das war mit älteren Versionen nicht möglich).
Dieses Beispiel ging davon aus, dass man von einem NT Server aus operierte. Aber genauso gut hätte es eine Unix Workstation getan, auf der der Viewer liefe und die mit vncserver auf dem NT Server verbunden wäre.
Offensichtlich kann man das ganze Netzwerk auf diese Weise verwalten, indem Fernbefehle (falls vorhanden) verwendet werden, um auf den jeweiligen entfernten Rechnern den VNC Server zu starten, falls man dazu authorisiert ist.
Dabei bedeutet "entfernt" im Endeffekt "irgendwo". Man könnte dies also auch von daheim erledigen(!), was zur Frage der Sicherheit führt.

Sicherheit

Kommunikation in einem Netzwerk kann als mögliches Sicherheitsproblem betrachtet werden.
Tatsache! Alles was man tun kann, ist, das Riskio zu minimieren. Man mache sich keine Illusionen, Sicherheit ist nichts weiter als ein Wort. Man sollte niemandem Glauben schenken, der einem einreden will, dass sein Netzwerk 100% sicher ist. Es ist nämlich eine weitere Tatsache, dass Cracker viel kleverer sind, als die meisten Leute glauben.
Die Folge ist, dass man das eigene Netzwerk sicher machen muss, will man VNC sicher machen. Firewalls, SSL, SSH, uvm. können dabei die Sicherheit erhöhen.

SSL und SSH dienen der Verschlüsselung von Netzverkehr. Beide Systeme bieten reichlich Material für eingeständige Artikel und werden deshalb hier nicht näher beleuchtet. Der interessierte Leser findet auf den Web Seiten von SSH (http://www.ssh.fi) und Open Source SSL (http://www.openssl.org) weitere Informationen.
Sicherheitsbezogene Programme, Patches, usw. sind auf den Seiten von AT&T zu finden. Unter anderem wird dort beschrieben, wie man einen Server kontaktieren kann, der hinter einer Firewall liegt.
Darüberhinaus existiert eun Verson von VNC, die SSLeay Public Key Verschlüsselung verwendet.
Eine weitere Schutzmaßnahme stellt die Einschränkung von Verbindungen in Abhängigkeit von der IP Adresse dar. Es gibt noch viel, viel mehr, was man tun kann, einiges davon ist unter http://www.uk.research.att.com/vnc/extras.html zu finden.

Es gibt auch eine Java Implmentierung von VNC. Das heißt, man kann einen java-fähigen Browser als Viewer verwenden, falls man den richtigen Port benutzt (58XX, wobei XX führ die Display Nummer steht: z.B. steht 5802 für die Display Nummer 2). Dies wurde nur der Vollständigkeit halber erwähnt. Diese Version ist furchtbar langsam und sollte recht kritisch unter dem Aspekt der Sicherheit betrachtet werden. Aber, es gibt sie und verdient es doch, einmal ausprobiert zu werden.
Um das Thema Sicherheit zu beenden: VNC ist kein größeres Sicherheitsrisiko, als telnet oder rlogin.

Zum Schluß

Für wen VNC noch neu ist, der sollte es mal testen. Vielleicht wurde der ein oder andere Leser ja neugierig. VNC ist möglicherweise eines der besten Programme in diesem Bereich.
Es ist klein, schnell (natürlich abhängig vom Netzwerk und der Art der Verbindung) und es ist frei erhältlich!
VNC ist recht zuverlässig, das einzige Problem, was mit der neuesten Version auftrat, betrifft die Windows Version: Hat der Benutzer CapsLock aktiviert, scheint Ctrl-Alt-Del nicht zu funktionieren (mein Kollege schlug vor, das Passwort in einen Editor zu schreiben, es zu kopieren und dann in das Passwortfeld einzufügen...und es funktionierte!). Das war alles, was auffiel! Trotzdem benutze ich VNC unrer Solaris Sparc, Irix, Linux, BeOS, AmigaOS und NT. Die Version, die am weitesten zurückliegt, ist die für AmigaOS.

Dieser Artikel konnte nur einen kleinen Ausschnitt der umfangreichen Möglichkeiten präsentieren, die VNC zu bieten hat.
So langsam ist VNC auch in einigen Linux Distributionen zu finden, ein Indiz dafür, dass das Interesse an diesem Programm zunimmt.
Wer daheim ein kleines Netzwerk sein eigen nennt, sollte ruhig mal VNC ausprobieren, es ist großartig!

Als ich Euch sagte, wir leben in einer großartigen Zeit...