dimanche 30 décembre 2007
XDMCP couplé à un VPN
Par Jezz, dimanche 30 décembre 2007 à 19:49 :: General
Vous connaissez ma mefiance envers les soi-disantes révolutions qui ne font que reinventer la roue. J'ai lu récement cet article. J'ai donc décidé, de faire quelque chose :
- de plus puissant
- en quelques heures
- fonctionnant avec des technologies d'il y a 20 ans
- portable sous Windows, Mac, Linux, BSD, SGI, etc...
- nécéssitant seulement un client lèger
Bref, j'ai décider que de taper
echo "XDMCP = true" >> /etc/kde/kdm/kdmrc
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 authorisé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. Quand on veut la mettre en place sur des machines distante,s on se retrouve souvent confronté à des problèmes de NAT, les serveurs X étant souvent des machine de bureau. On peut contourner le problème en utilisant des tunnels. Les tunnels posent des problèmes de DNS et d'allocation de ports si on l'utilise intensivement. Il faut mieux utiliser un VPN. J'ai personnellement choisi OpenVPN car c'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 ca, vous pouvez éxé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 connection est compressée par le VPN[1]. Par conséquent, vous n'utilisez pas beaucoup plus de bande passante qu'une simple connexion web.
On voudrait maintenant passer à l'étape supérieure: avoir l'ensemble de sa session à distance. XDMCP sert justement à ca. Avec XDMCP, on va 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'authoriser tous les hôtes à se connecter (dans le fichier Xacces). Dans le cas d'un hôte ne possèdant pas de carte graphique, on supprimera les connexions locales de manière à tranformer {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écéssaire). Ca fonctionne sous Windows (OpenVPN et X sont portés). Vous pouvez encore éxécuter des applications locales [2]. C'est utilisable quotidiennement si vous avez une connexion internet haut débit. Et j'aurais pu faire ca il y a 20 ans[3] [4].
Ceci est actuellement installé sur sysmic.org. Une kubuntu avec un kdm en XDMCP est installé dans un chroot[5].
J'aimerais que quelqu'un teste ceci sur un terminal embarqué du type téléphone Nokia. Je cherche des volontaires...
Notes
[1] Utilisation de lzo sous OpenVpn
[2] En les lancant d'une autre session et en exportant correctement DISPLAY
[3] XDMCP à été inventé en 1989
[4] à l'exception qu'à l'époque les connexions haut débit était plutôt rares
[5] Histoire que le serveur de base reste propre. De plus, ca pourrait permettre de donner le choix entre plusieurs distributions
Why this patch is dirty?