Virtual Network Computing, ou 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 fr Georges Tarbouriech

AboutTheAuthor:[A small biography about the author]

Georges est un vieil utilisateur d'Unix (commercial et libre). VNC a changé sa vie:-).

Abstract:[Here you write a little summary]

VNC est le rêve de l'administrateur réseau devenu réalité.
Nous pourrions dire qu'il s'agit d'un système d'affichage distant, mais c'est beaucoup plus que ça.
Visiter http://www.uk.research.att.com vous permet de télécharger cet extraordinaire logiciel GRATUITEMENT. VNC est distribué sous licence GPL et il est disponible pour un grand nombre de plate-formes.
Vous pouvez bien évidemment contribuer et de nombreux ports sur différents OS ont été réalisés par des personnes étrangères au projet.
Nous allons essayer de découvrir les multiples facettes de VNC.

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

[Illustration]

ArticleBody:[The article body]

Introduction

Début 1999 AT&T a racheté Olivetti Research Laboratory et continué le développement de VNC.
Comme expliqué sur le site d'AT&T, le nom VNC vient du développement de "clients fin", c'est-à-dire des network computers (NC) fonctionnant selon la technologie ATM (Asynchronous Transfer Mode) et "puisque le client VNC (viewer) est une version logicielle de ce NC ATM, permettant ainsi la création ou la suppression de stations de travail à la volée, nous avons baptisé ce système Virtual Network Computing (Réseau virtuel)".
Pour utiliser VNC, vous avez besoin d'une connexion TCP/IP, d'un serveur VNC (vncserver) et d'un client VNC (vncviewer) pour vous connecter à la machine sur laquelle le serveur VNC est actif.
Le serveur VNC basé sur X fonctionne selon l'architecture client-serveur du même X. En fait vous obtenez deux serveurs en un: un serveur X et un serveur VNC. Cela vous permet de conserver le même numéro d'affichage pour le serveur X et le serveur VNC. Pour vous connecter sur un serveur VNC, vous devez donner le nom de la machine et le numéro d'affichage. La commande est du style "vncviewer nomdemachine:2". En clair, si votre serveur X possède 2 comme numéro d'affichage, le serveur VNC portera également le numéro 2. Côté client, le viewer, vous pouvez alors vous connecter au serveur en utilisant ce numéro d'affichage. Si un utilisateur travaille sur l'affichage numéro 1 du serveur et que vous vous connectiez sur l'affichage numéro 2, il ne remarquera même pas que vous travaillez sur sa machine.
VNC est capable de trouver le premier numéro d'affichage disponible et vous en informe, mais rien ne vous empêche d'utiliser un autre numéro. Si vncserver vous propose le numéro d'affichage 2, vous pouvez quand même vous connecter sur l'affichage numéro 3, 4... à partir du moment où vous spécifiez ce numéro au lancement de vncviewer.
Sur des machines sous Windows ce sera différent puisque vous ne pourrez pas créer un nouvel affichage. Le bureau existant sera rendu disponible à distance. Si nous reprenons l'exemple de l'utilisateur travaillant sur sa machine, il pourra voir tout ce que vous faites, comme si son ordinateur fonctionnait tout seul!
Bien sûr, le numéro d'affichage par défaut sera 0. Si vous connectez deux machines NT entre elles, vous n'avez même pas besoin de spécifier ce numéro.
VNC existe pour de nombreux OS différents, parfois uniquement en tant que client, autrement dit, seul le viewer est disponible. C'est le cas de BeOS. De nombreux Unices, MacOS, AmigaOS... peuvent utiliser VNC. Pour voir tout ce qui est disponible rendez-vous à http://www.uk.research.att.com/vnc/platforms.html
Selon la plate-forme, VNC existe sous forme de code source ou de binaire. Les programmes sont de petite taille et très faciles à installer.
Comment ça marche?

Présentation

Côté serveur

La version actuelle de VNC est la 3.3.3 avec des numéros de révision différents en fonction du système.
Sur les machines Unix (ou qui utilisent X) vous obtenez un programme nommé vncserver et un autre appelé Xvnc. Vncserver est un script Perl que vous pouvez modifier selon vos besoins. Il sert à lancer Xvnc. Il vaut mieux éviter de lancer directement Xvnc.
Ces programmes peuvent être installés où bon vous semble tant que leur répertoire figure dans votre chemin d'accès.
N'importe quel gestionnaire de fenêtres (window manager) peut être utilisé si vous le définissez comme celui par défaut dans le script xstartup (qui se trouve dans le répertoire .vnc).
Au premier lancement de vncserver un mot de passe vous sera réclamé. Ce mot de passe sera nécessaire pour vous connecter à ce serveur.
Vncserver propose de nombreuses options comme tout serveur X. Si vous tapez Xvnc --help vous obtiendrez une liste complète de ces options. Si vous utilisez ces arguments, vncserver les passera à Xvnc, d'où l'utilisation préférentielle du premier.
C'est tout ce qui est nécessaire à l'usage du serveur VNC!
Sur les machines équipées de produits Microsoft, c'est un peu différent. Si vous utilisez NT4.0 vous pouvez lancer vncserver en tant que service, c'est d'ailleurs le mode recommandé. Sous Windows 95 ou 98 vous devrez le lancer à partir de l'icône ou du menu.
Comme pour les serveurs basés sur X, vous pouvez définir de nombreux paramètres. Promenez-vous simplement dans le menu proposé.
Nous ne mentionnerons pas toutes les particularités des différents serveurs VNC pour toutes les plate-formes supportées parce qu'il nous faudrait un article entier.

Côté client (le viewer)

Le client se compose d'un simple exécutable nommé vncviewer.
Pour vous connecter sur un serveur VNC, il suffit de lancer vncviewer en précisant le numéro d'affichage. Par exemple si vous souhaitez vous connecter sur un serveur nommé linux sur l'affichage numéro 2, vous devez seulement taper "vncviewer linux:2". Le mot de passe du serveur vous est alors réclamé et vous vous retrouvez sur le bureau de la machine linux comme si vous travailliez dessus. Si vous êtes root, vous pouvez administrer entièrement la machine. Enfin, soyez prudents, il vaut mieux savoir ce que vous faites!
Ceci s'applique à chaque client sur chaque plate-forme. Un seul mot: fantastique!


Le côté amusant


Sur un réseau local (à cause de la vitesse), VNC permet de faire des choses plutôt inhabituelles.
Tout semble possible: vous pouvez lancer n'importe quel type d'application sur n'importe quel OS.
Par exemple, si vncserver est actif sur une machine sous Windows NT et que vous lanciez vncviewer sur une machine sous BeOS, vous pouvez utiliser tous les logiciels disponibles sur l'ordinateur NT.
Si vous avez une licence Photoshop, vous pouvez lancer Photoshop sur la machine BeOS comme vous le feriez sur la machine NT. Cela signifie qu'une fenêtre représentant le bureau NT s'ouvre sur votre écran BeOS: vous travaillez sur la station NT!

bewin.jpg
Photoshop sous BeOS!

winlin.jpg
Ou Gimp sous Windows?

Encore une fois, ceci est réalisable à partir de toute station possédant un client VNC.
Un autre exemple: si vous travaillez sur une machine sans accès à l'Internet, vous pouvez vous connecter sur un serveur VNC ayant un accès vers le monde extérieur et utiliser son navigateur pour visiter une URL. Evidemment vous pouvez aussi utiliser son logiciel de courrier pour vérifier sa boîte aux lettres ou envoyer un message.

linsgi.jpg
Le client VNC n'a pas d'accès à l'Internet, pourtant...

Encore plus fort, vous pouvez vous connecter à un serveur VNC et depuis ce serveur vous connecter sur une autre machine du réseau, et pourquoi pas, lancer un nouveau client VNC sur cette machine et vous connecter sur un autre serveur VNC, et ainsi de suite!
Si vous lancer un serveur VNC sur une machine Unix, de nombreux clients utilisant vncviewer peuvent se connecter simultanément à ce serveur avec des numéros d'affichage différents. Ceci ne fonctionnera pas sur les machines Windows puisqu'un seul affichage est disponible.

Le côté sérieux

Bon, ça ne veut pas dire que ce qui précède n'était pas sérieux!
Par exemple, tout SysAdmin apprécie l'administration de Windows NT: vous ne pouvez pas savoir qui est connecté à un serveur, et bien sûr qui fait quoi... à moins d'avoir acheté le kit de ressources techniques, celui-ci permettant au moins de connaître la liste des processus sur un ordinateur donné (mais sans pour autant pouvoir "tuer" la plupart de ces processus). Sans commentaires!
Vnc permet de contourner cette extraordinaire "fonctionnalité".
Prenons un exemple.
Vous développez et maintenez différentes applications sous Windows (Mon compère Javi dit toujours: quand on est pauvre, on ne choisit pas!). Chaque nouvelle version réclame une mise à jour sur le serveur et les clients. Les machines sont plus ou moins éloignées de votre bureau.
Bien sûr, vous ne pouvez pas mettre à jour si l'application est en service sur un ou plusieurs clients.
Avec VNC, vous pouvez arrêter l'application sur chaque client, installer l'évolution, vérifier son fonctionnement... sans quitter votre bureau. Il vaut mieux faire ce genre de choses lorsque personne ne travaille, mais de nombreux utilisateurs oublient de fermer l'application après usage, par conséquent vous devez vérifier si l'application est en service ou pas.
Si VNC est installé en tant que service sur les stations, vous pouvez démarrer vncserver à distance depuis le serveur NT, vous connecter sur les stations et faire ce que vous devez. Autrement dit, vous pouvez fermer les applications en cours, installer l'évolution, (y compris depuis un autre serveur que celui sur lequel vous travaillez et qui est connecté au serveur VNC), et vérifier son fonctionnement. Vous pouvez alors arrêter le serveur VNC sur la machine éloignée et recommencer l'opération sur un autre client.
Cette opération ne serait pas possible de cette manière avec une émulation X sur les stations Windows, puisque même le logiciel d'installation est propriétaire. Une autre différence si nous comparons à X: aucun état n'est enregistré côté client. Vous pouvez vous déconnecter du serveur VNC, aller sur une autre machine et vous connecter de nouveau au serveur VNC pour continuer votre travail!
Chose importante: VNC autorise l'envoi d'une séquence Ctrl-Alt-Del pour déverrouiller la station NT éloignée. (Ce n'était pas possible dans les versions antérieures).
Cet exemple suppose que nous travaillions depuis un serveur NT. Vous pouvez faire exactement la même chose depuis une station Unix, sur laquelle le client VNC est connecté au serveur NT où VNCserver est actif.
De toute évidence vous pouvez administrer votre réseau de cette manière, en utilisant les "remote commands" (si elles existent) pour lancer les serveurs VNC sur les stations éloignées et si bien sûr vous avez les droits pour ce faire.
Si nous allons plus loin, "éloignées" signifie n'importe où. C'est-à-dire que vous pourriez faire cela depuis chez vous!
Cela nous amène tout droit à la sécurité.

Sécurité

Tout type de communication au sein d'un réseau peut être considéré comme un trou de sécurité potentiel.
C'est un fait! La seule chose que vous puissiez faire est d'essayer de limiter le risque.
Ne vous laissez pas berner: sécurité n'est qu'un mot. Si quelqu'un vous dit que son réseau est sûr à 100%, ne le croyez pas! Les "pirates" sont beaucoup plus malins qu'on ne le croit: c'est un autre fait.
Par conséquent, si vous voulez sécuriser VNC, c'est votre réseau que vous devez sécuriser. Un firewall, SSL, SSH... peuvent être utilisés pour améliorer la sécurité.
SSL et SSH permettent de crypter le trafic de deux manières différentes. Nous n'aborderons pas SSL ou SSH puisqu'il s'agit d'un tout autre sujet. Si vous voulez en savoir plus, vous pouvez visiter le site de SSH http://www.ssh.fi ou celui du SSL open source http://www.openssl.org

Additif pour la version française
Notre doulce France étant toujours à la pointe du progrés, le cryptage est longtemps resté considéré comme une forme d'espionnage!!! Pour savoir où nous en sommes, n'hésitez pas à visiter: http://ccweb.in2p3.fr/secur/ssf/
Fin d'additif

Extras, patches, add-ons concernant la sécurité (pas seulement) sont disponibles sur le site d'AT&T.
Parmi ceux-ci vous trouverez un moyen d'accèder à un serveur derrière un firewall.
Une version de VNC utilisant un cryptage par clé publique SSLeay est également disponible.
Un autre moyen de limiter les connexions par adresse IP est proposé: il utilise TCP wrapper.
Il en existe bien d'autres et nous ne pouvons les citer tous. Vous pouvez les découvrir sur http://www.uk.research.att.com/vnc/extras.html
VNC existe aussi en version Java. Cela signifie que vous pouvez utiliser un navigateur compatible Java en tant que client VNC à partir du moment où vous sélectionnez le bon port (58**, où ** est le numéro d'affichage: ex. 5802 correspond à l'affichage numéro 2). Ce devait être signalé, même si c'est horriblement lent sans parler du problème de sécurité. Mais cette version existe et elle mérite d'être essayée.
Pour clore le chapitre sur la sécurité, en bref, tel quel, VNC n'est pas pire au plan de la sécurité que telnet ou rlogin.

C'est tout fini

Si vous ne connaissez pas VNC, il vaut la peine d'être essayé. Nous espérons que cet article aura pu rendre VNC attractif. C'est certainement l'un des logiciels les plus extraordinaires dans cette catégorie.
Il est de petite taille, plutôt rapide (bien sûr, ça dépend du réseau ou du type de connexion) et il est GRATUIT!
Il est très fiable, et le seul problème que j'ai rencontré avec la dernière mouture concerne la version Windows: si l'utilisateur d'une station NT éloignée a laissé le verrouillage des majuscules enclenché, la séquence d'envoi du Ctrl-Alt-Del semble ne pas fonctionner (mon confrère suggère d'écrire le mot de passe dans un éditeur, de le copier et de le coller dans le champ du mot de passe... et ça marche!). C'est tout ce que j'ai été capable de trouver! Pourtant j'utilise VNC sous Solaris Sparc, Irix, Linux, BeOS, AmigaOS et NT. Le moins abouti est certainement la version AmigaOS mais personne n'est à blâmer dans la mesure où cette machine n'a plus évolué depuis si longtemps...
De plus, ce que vous venez de lire ne représente qu'une petite partie des immenses possibilités de VNC.
VNC commence à apparaître dans certaines distributions Linux, ce qui est une marque de son intérêt.
Si vous avez un petit réseau chez vous ou un gros au travail, essayez VNC. C'est génial!

Quand je vous disais que nous vivions une époque formidable...