Vous savez tous qu'il est possible à des clients graphiques de se connecter à un serveur X distant en exportant correctement la variable d'environnement DISPLAY et en ajoutant le bon cookie à la liste des cookies autorisés à se connecter. Cette technique est portable sous Windows avec le serveur X de MinGw. Elle est très rapide à mettre en place sur des réseaux locaux. Néanmoins, si vous souhaitez la mettre en place sur des machines distantes, vous vous retrouverez surement confronté à des problèmes de NAT, les serveurs X étant souvent des machines de bureau. Il est possible de contourner le problème en utilisant des tunnels. Les tunnels posent des problèmes de DNS et d'allocation de ports si on les utilises intensivement. Je conseille donc d'utiliser un VPN. J'ai personnellement choisi OpenVPN car il est portable et simple à mettre en place.

Une fois votre VPN installé, vous pouvez executer n'importe quelle application sur une machine distante et l'utiliser comme si elle était éxecutée en local. Mieux que ça, vous pouvez exécuter des applications de plusieurs machines distantes simultanément. De plus, les informations transmises sont des instructions X. Cela signifie que du texte à afficher est transféré comme une chaîne de caractères et non comme du graphisme, comme pour VNC. De plus, la connexion peut être compressée par le VPN[1]. Par conséquent, vous n'utiliserez pas beaucoup plus de bande passante qu'une simple connexion web.

On aimerions maintenant passer à l'étape supérieure: avoir l'ensemble de sa session à distance. XDMCP sert justement à ça. Avec XDMCP, nous allons demander à la machine distante de se connecter sur notre serveur X. {k,g,x}dm gèrent XDMCP. Il suffit d'ajouter XDMCP = true à leur fichier de configuration et d'autoriser tous les hôtes à se connecter (dans le fichier Xaccess). Dans le cas d'un hôte ne possédant pas de carte graphique, on supprimera les connexions locales de manière à transformer {k,g,x}dm en simple service réseau. On démarre ensuite un serveur X ainsi:

 X -query 192.168.2.1 -from {votre IP}

Remarquez que le serveur XDMCP doit pouvoir résoudre un reverse DNS sur cette IP

Et vous obtenez un serveur X avec une fenêtre de login sur votre hôte distant. Vous avez maintenant un système complet, avec un client léger (seul un serveur X est nécessaire). La technique fonctionne sous Windows (OpenVPN et X sont portés). Vous pouvez encore exécuter des applications locales [2]. C'est utilisable quotidiennement si vous avez une connexion internet haut débit. Et surtout, il n'y a rien de neuf ni d'innovant: XDMCP à été inventé en 1989.

Cette configuration est actuellement installé sur sysmic.org. Une Kubuntu avec un kdm en XDMCP est installé dans un chroot[3].

J'aimerais que quelqu'un teste ceci sur un terminal embarqué du type téléphone Nokia. Je cherche des volontaires...

Je fini tout de même sur quelques précisions:

 * Cette technique ne permet pas de prendre la main sur une session déjà ouverte, elle permet d'obtenir une nouvelle session. Il est possible d'utiliser Xephyr comme proxy pour obtenir quelque chose d'approchant.
 * Les ressources graphique de votre serveur X seront utiliser. Dans le cas d'une application 3D et d'un serveur X léger, cela peut poser des problèmes. Je n'ai pas testé, mais la aussi Xephyr peut peut-être résoudre le problème.

Notes

[1] Utilisation de lzo sous OpenVpn

[2] En les lançant d'une autre session et en exportant correctement DISPLAY

[3] Histoire que le serveur de base reste propre. De plus, ça pourrait permettre de donner le choix entre plusieurs distributions