original in en Georges Tarbouriech
en to de Harald Radke
George arbeitet schon seit langer Zeit mit Unix, sowohl mit kommerziellen, als auch freien Derivaten. VNC hat sein Leben zutiefst verändert (-:
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.
Die Serverseite
VNC gibt es zur Zeit als Version 3.3.3, wobei die Release Nummer von Plattform zu Plattform unterschiedlich ist.
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!
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!
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.
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.
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.
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.
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...