Dans la série sur le montage d’un hébergeur, et un peu partout, je parle de NAT. Beaucoup savent plus ou moins vaguement ce que c’est. Allons-y donc. (L’illustration est signée nurdcartoon ! Un grand merci à Pascal et désolé d’avoir du réduire l’image pour la faire rentrer)
Network Address Translation, non, il ne s’agit pas de téléporter des IP mais de les transformer. De transformer par exemple les adresses d’un petit réseau local numérotées dans le bloc 192.168.0.0/24 en une seule et unique IP publique attribuée par le FAI pour que tous les ordinateurs du réseau puissent avoir accès à l’exterieur.
Pourquoi le FAI ne donne pas plusieurs adresses ? D’une part parceque ca fait un sacré boulot de suivi, d’autre part parce qu’on manque globalement d’adresses sur l’ensemble du réseau et enfin parce que la moyenne des clients d’aujourd’hui n’a pas besoin de plus d’une IP. Notez que notre FDN national fourni des IP par bloc sur simple demande justifiée et argumentée et sans surcout (ben oui, les IP, ça ne s’achète pas, en vrai, ça se demande poliment)
L’autre vrai fausse bonne raison de faire du NAT, c’est la sécurité. Lorsqu’une machine dispose d’une IP routable, elle est directement exposée à tout ce qui arrive de l’extérieur. Si d’aventure un logiciel fonctionne sur la machine et agit comme un serveur avec un port ouvert, il est potentiellement exploitable de l’extérieur pour compromettre la machine.
Le NAT déporte le problème sur l’équipement à qui l’adresse IP publique est attribuée, généralement, votre machinbox. Lorsqu’un paquet arrive de l’extérieur vers cette IP sans correspondre à un flux de données qui a été démarré par un ordinateur situé dans notre réseau, la machinbox réponds « va te faire voir » voir ne répond pas du tout.
C’est une vrai fausse sécurisation, parce que lors de l’inévitable passage à IPv6, ça va faire tout drôle à beaucoup de gens de se retrouver en frontal avec la jungle d’internet sans aucune protection en amont. C’est d’ailleurs un sujet donnant lieu à des débats assez poilu … « faut-il instaurer un NAT IPv6 ? » ou encore « est-il de la responsabilité du FAI de s’assurer que rien de méchant n’arrive jusqu’à l’ordinateur du client ? ». Pour ma part, comme avec les enfants, répétition / pédagogie, mais éviter au maximum les mesures coercitives, même si « c’est pour votre bien ».
Lorsqu’on veut distribuer du contenu depuis chez soi derrière sa machinbox, on est mal, dans la mesure ou par défaut on ne peut faire que des connexions qui démarrent de chez soi, exit donc les gens qui viennent consulter votre site, votre machinbox les renverra dans leur pénates à grands coups de pieds dans l’arrière train. On a, en plus, souvent des problèmes de performances, la machinbox n’étant pas toujours capable de suivre la cadence lorsqu’on établi trop de connexions en même temps (cas du peer2peer, par exemple)
Heureusement (chez les 3 plus gros en tout cas), vous pouvez paramétrer la machinbox pour l’obliger à transmettre ce qui vient de dehors, c’est à dire récupérer une connexion entrante sur l’IP publique pour la faire atterrir sur une machine qui a une IP privée sur le réseau local. Ça ne règle pas le problème de perf, mais au moins, vous êtes joignable.
Il ne faut pas oublier que dans notre ami TCP (le protocole situé au dessus d’IP, utilisé par une grosse partie des applications sur le réseau), il y a un nombre de ports limités disponibles (plus de 65000 tout de même, il y a de quoi voir venir), mais surtout, qu’un port précis correspond généralement à quelque chose. Le web d’aujourd’hui utilise le 80 pour les transmissions de données en clair et le 443 pour les transmissions chiffrées, mais ce n’est qu’une convention, vous pouvez parfaitement accéder à un site tournant sur un serveur situé sur un autre port en utilisant une URL précisant le port : http://www.lesite.com:80/
Du coup, puisque vous n’avez qu’une adresse IP publique, vous n’avez qu’un seul port 80 publique, impossible donc de le répartir directement entre deux machines différentes chez vous, à moins de vouloir expliquer à vos visiteurs qu’il faut taper http://www.monpetitchezmoi.com:8081/ dans leur navigateur.
Vous allez donc expliquer à votre machinbox que « le port 80 de ton IP publique, tu va le renvoyer vers le port 80 de l’IP 192.168.0.10 ». Cette IP est celle de votre machine (« ipconfig » dans cmd sous windows pour connaitre l’IP réelle de sa machine, « ifconfig » sous FreeBSD ou Linux)
Que va faire la machinbox ? Elle va attendre sagement les paquets qui vont arriver, et lorsqu’un paquet dira qu’il veut accéder au port 80 de l’IP publique en TCP, elle va tout simplement changer l’adresse IP de destination pour y mettre l’adresse de la machine locale et envoyer le paquet en l’état sur le réseau local. Lorsque votre machine va répondre, elle va indiquer son IP privée comme source du paquet, la machinbox va donc remettre l’IP publique à la place avant de renvoyer le paquet sur Internet pour que le demandeur de la connexion s’y retrouve.
Histoire d’être complètement exhaustif, elle va aussi toucher au port source du paquet pour s’y retrouver elle-même, mais ça n’a pas grand intérêt ici.
Vous voilà paré pour que l’extérieur puisse communiquer avec votre ordinateur. Du coup, vous avez une nouvelle obligation, celle de tenir à jour le logiciel utilisé sur votre ordinateur et répondant au port que vous avez ouvert sur votre machinbox, car si il y a une faille de sécurité dans le soft en question, tôt ou tard, elle sera exploitée
Nous reviendront à notre série hébergement avec un billet généraliste à propos de l’ensemble des composantes logicielles impliquées.
Laisser un commentaire