Home » Comment ça marche, Internet

Les machinbox et le NAT

2 septembre 2010 11 commentaires
tags : , , ,
Download PDF

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.

11 Comments »

  • Daygi said:

    Moi qui cherchais des infos sur le NAT, justement. J’ai tout compris.

    Merci.

  • Bruno (author) said:

    De rien. Mais si ca s’trouve, j’ai tout faux aussi, hein …

  • Conorta said:

    Vouas avez parlez IPv6 et de NAT. Je suis certain que vous avez un billet conséquent sur l’IPv6.
    Mais ne peut-on pas imaginer que ces machinbox en IPv6 seront toutes gavés d’un firewall ?

  • Bruno (author) said:

    En fait non, pas de billet IPv6 vraiment bien fourni, il faut que j’y pense :)

    On peut imaginer, mais avec la généralisation des débits élevés, on va se retrouver avec le même problème que le NAT actuellement en v4, la bidulebox suivra pas. En tout cas, les cas de FAI fournissant du v6 aujourd’hui ne montrent pas vraiment d’envies de s’intéresser à la sécurité :)

  • Elessar said:

    Pour la vraie fausse bonne raison de la sécurité, elle est fausse tout simplement parce qu’un NAT n’apporte pour cela rien de plus qu’un pare-feu qui bloquerait tout en entrée.

    Donc, retirez le NAT : pour avoir la même sécurité, il suffit de mettre un pare-feu qui bloque tout en entrée, et déblocable à la main.

  • Bruno (author) said:

    Il est vrai. Maintenant, quand madame Michu pense qu’un firewall ca a rapport avec un traitement de texte, je prefere que son PC soit derriere un NAT ..

    Quand on voit en prime les alertes du firewall windows pour ouvrir les ports demandés par les applis, on se dit pareil :)

  • Elessar said:

    @Bruno : Et si l’ordinateur de Mme Michu était derrière un pare-feu, hein ? Genre un pare-feu dans le modem-routeur ?

  • Bruno (author) said:

    Faut creuser les avantages reels .. Tu veux faire un article ? :)

  • kankan said:

    Si on veut « protéger » le client en IPv6, le plus simple est en effet un firewall débrayable dans la *box (tout ouvrir, tout ouvrir vers une machine, ouvrir juste un port vers une machine). C’est largement faisable, et ça évitera d’avoir des poubelles trainer sur le réseau.

    Mais sinon, le seul FAI grand-public ayant déployé IPv6 a grande échelle donne par défaut une IP (v4) publique au PC connecté sur la machinbox (ils appellent ça « mode bridge »), sans firewall possible, alors le firewall pour IPv6, c’est pas spécialement urgent.
    Dans le cas d’utilisateurs grand-public, le NAT c’est pas plus mal (justement quand les utilisateurs de ladite box cochent la case « réseau privé » sur la fenêtre en parfaite ignorance, ce qui ouvre leur PC aux 4 vents). Mais sur le long terme, il vaut mieux faire de l’éducation plutôt que des firewalls et du NAT à l’insu du plein gré de l’utilisateur…

  • jerome said:

    Honnêtement je suis plutôt pour l’éducation et la répétition (j’aimerais d’ailleurs réutiliser des partis de ce blog pour un projet éducation civique dans les collèges, il me semble avoir vu CC-BY trainer dans un coin a moins que je me goure)

    Cela dit il faut gérer l’urgence et le NAT aujourd’hui y réponds parfaitement, le firewall devrait être la réponse lors du passage à ipv6, et l’éducation nationale dans une ou deux décades…

    Si l’auteur pouvait me préciser la licence d’exploitation de ces textes et en son absence prendre contact avec moi pour décider d’un accord d’utilisation.

    A y est je viens de trouver la mention CC-BY, votre nom sera donc cité publié et crié sur les toits :) (j’évaluerais le coût d’un bandeau aérien avec dispertion de tracs ^^ )

  • kaiyou ' s blog » De la publicité pour Free said:

    […] ce billet aussi bien que de la machine qui vous propose mon blog ou des machines de Google (ce n’est probablement pas le cas de vos machines, puisque les fournisseurs d’accès ont trouvé pratique de ne numéroter sur l’Internet […]

Leave your response!

Add your comment below, or trackback from your own site. You can also subscribe to these comments via RSS.

Be nice. Keep it clean. Stay on topic. No spam.

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

This is a Gravatar-enabled weblog. To get your own globally-recognized-avatar, please register at Gravatar.


8 − quatre =