Qu'est-ce que le renvoi de port et à quoi sert-il?

Il y a beaucoup de questions sur le «renvoi de ports», mais il ne semble pas y en avoir une qui indique clairement ce qu'elle est et pour quoi elle sert. Alors:

  1. Qu'est-ce que Port Forwarding?

  2. À quoi sert-il, et pourquoi j'en avais besoin?

    Les bases

    Pour vraiment expliquer le renvoi de port, vous devez d'abord comprendre un peu plus sur ce que votre routeur fait. Votre fournisseur de services Internet attribue une adresse IP à votre connexion Internet. Tous les ordinateurs sur Internet ont besoin d'une adresse IP unique, mais vous avez plusieurs ordinateurs dans votre maison et une seule adresse. Alors, comment ça marche?

    Si vous savez ce que c'est et que vous voulez simplement savoir comment le faire : http://portforward.com/ a un mode d'emploi avec des captures d'écran pour des centaines de routeurs différents. La documentation est cachée derrière une page d'annonces pour leur outil portconfig automatique. (Cliquez simplement sur un peu et vous le trouverez.)

    NAT – Qu'est-ce que c'est? Pourquoi l'utilisons-nous?

    Votre routeur domestique a une fonction appelée Network Address Translation, ou NAT, intégré. À l'intérieur de votre réseau, les ordinateurs ont des adresses comme 192.168.1.100. Toutes les adresses dans la gamme 192.168. * (Ou dans la gamme 10. *) sont des adresses " privées " ou " réservées " . Ces adresses sont officiellement attribuées par IANA pour être utilisées dans des réseaux privés. Votre routeur attribue automatiquement une telle adresse à chaque ordinateur connecté via DHCP . Ces adresses sont la façon dont les ordinateurs de votre réseau communiquent avec le routeur et les uns avec les autres.

    Votre routeur possède une interface réseau distincte qui la connecte à Internet. Cette interface possède une adresse très différente attribuée par votre FAI. C'est l'adresse que j'ai mentionnée précédemment, et votre routeur l'utilise pour communiquer avec d'autres ordinateurs sur Internet. Les ordinateurs à l'intérieur de votre réseau ont des adresses IP privées non routables , ce qui signifie que s'ils envoient des paquets directement à Internet, les paquets seront automatiquement abandonnés (les paquets avec des adresses privées ne sont pas autorisés à traverser Internet pour des raisons de stabilité). Mais votre routeur possède une adresse routable . La traduction d'adresses réseau, comme son nom l'indique, se traduit par ces deux types d'adresses, ce qui permet à plusieurs ordinateurs de votre réseau d'apparaître sur Internet comme un ordinateur avec une seule adresse.

    Les détails

    Bien que cela puisse sembler compliqué, il est vraiment très simple de savoir comment votre routeur le fait. Chaque fois qu'un ordinateur à l'intérieur de votre réseau veut se connecter à un ordinateur sur Internet, il envoie la demande de connexion au routeur (il le sait envoyer au routeur car son paramètre de passerelle par défaut est défini sur l'adresse du routeur). Le routeur prend ensuite cette requête de connexion (une "requête SYN" dans TCP / IP) et modifie l'adresse source (l'adresse "réponse" ou "retour") et la modifie depuis l'IP privée de l'ordinateur vers l'adresse IP publique de la Routeur, afin que la réponse soit envoyée au routeur. Il prend alors note dans une base de données (appelée la table NAT ) que la connexion a été lancée, de sorte qu'elle la rappelle plus tard.

    Lorsque la réponse revient à partir de l'ordinateur distant (un "SYN-ACK"), le routeur se penche sur sa table NAT et voit qu'une connexion à cet hôte sur ce port a été précédemment lancée par un ordinateur privé sur votre réseau, modifie la destination Adresse à l'adresse privée de l'ordinateur et l'envoie dans votre réseau. De cette façon, les paquets peuvent continuer à transiter entre les réseaux, le routeur change de manière transparente les adresses afin qu'il fonctionne. Lorsque la connexion est terminée, le routeur la supprime simplement de la table NAT.

    Ou pensez-y de cette façon

    Cela pourrait être un peu plus facile à visualiser avec une métaphore – disons que vous êtes un transitaire aux États-Unis travaillant avec des clients chinois. Ils doivent envoyer des paquets à de nombreux clients aux États-Unis, mais il est plus facile pour les raisons de douane et de papier d'envoyer uniquement des paquets à un seul endroit. Ainsi, un paquet vous vient d'un de vos clients en Chine (le réseau privé, dans cet exemple) avec une destination actuelle quelque part aux États-Unis (l'Internet). Vous modifiez l'adresse sur la boîte à l'adresse américaine (publique), et vous modifiez l'adresse de retour dans votre propre adresse publique (car elle ne peut être retournée directement à la Chine sans gêner le client) et la remettre au service postal . Si le client renvoie le produit, il vous appartient. Vous le regardez dans vos dossiers et vous voyez dans quelle entreprise en Chine il est venu et changez la destination vers cette entreprise (son adresse privée) et l'adresse de retour à votre adresse privée, afin qu'ils puissent vous renvoyer un remplacement.

    Cela fonctionne très bien, mais il y a un problème. Qu'arrive-t-il si un client doit envoyer quelque chose à l'entreprise, disons-nous un mandat en paiement pour quelque chose? Ou, disons qu'un ordinateur sur Internet déclenche une connexion avec le routeur (une requête SYN), dire à un serveur Web qui se trouve dans le réseau. La lettre / le paquet n'a que l'adresse publique du routeur, donc le routeur ne sait vraiment pas où l'envoyer! Il pourrait être destiné à n'importe lequel des ordinateurs sur le réseau privé, ou pour aucun d'eux. Vous avez peut-être éprouvé ce problème lorsque vous appelez le téléphone à domicile de quelqu'un. Quand ils vous appellent, ce n'est pas un problème, mais lorsque vous les appelez, il n'y a aucun moyen de savoir qui est l'appel, donc la mauvaise personne pourrait répondre.

    Bien qu'il soit assez facile pour les humains de régler, il est beaucoup plus difficile pour les ordinateurs, car tous les ordinateurs de votre réseau ne connaissent pas tous les autres ordinateurs.

    Et enfin, nous arrivons à Port Forwarding

    Port Forwarding est la façon dont nous résolvons ce problème: c'est un moyen de dire à votre routeur quel ordinateur à l'intérieur des connexions entrantes du réseau doit être dirigé. Nous avons trois façons différentes de faire ceci:

    • Faux-DMZ: beaucoup de routeurs ont une fonctionnalité appelée DMZ. Il s'agit de la zone démilitarisée, qui est une sorte de configuration de sécurité réseau. La DMZ sur les routeurs maison est souvent appelée faux-DMZ car elle manque des caractéristiques d'une DMZ réelle. Ce qu'il fait, c'est le type le plus simple de gestion des connexions entrantes: toutes les demandes de connexion entrantes seront envoyées à l'un spécifié dans votre réseau. Il est simple – vous tapez une adresse IP dans la configuration de votre routeur, et toutes les connexions entrantes vont là. Cela ne fonctionne pas toujours, cependant, car vous pourriez avoir plusieurs ordinateurs qui doivent accepter les connexions entrantes. Pour cela, nous avons …
    • Renvoi de port: toutes les demandes de connexion réseau incluent un "port". Le port est juste un nombre, et c'est une partie de la façon dont un ordinateur sait quel est le paquet. IANA a précisé que Port 80 est utilisé pour HTTP. Cela signifie qu'un paquet entrant qui indique que le port numéro 80 doit être une requête destinée à un serveur Web. Le renvoi de port sur votre routeur vous permet d'entrer un numéro de port (ou éventuellement une gamme ou une combinaison de nombres, selon le routeur) et une adresse IP. Toutes les connexions entrantes avec un numéro de port correspondant seront transmises à l'ordinateur interne avec cette adresse.
    • Le port UPnP se transmet: le renvoi UPnP fonctionne de la même manière que le renvoi de port, mais au lieu de le configurer, le logiciel sur un ordinateur à l'intérieur du réseau définit automatiquement le routeur pour transférer le trafic sur un port donné.

    Un exemple

    Examinons un exemple d'utilisation. Beaucoup de jeux vidéo multijoueurs (par exemple, Counter Strike) vous permettent d'exécuter un serveur de jeu sur votre ordinateur auquel d'autres personnes peuvent se connecter afin de pouvoir jouer avec vous. Votre ordinateur ne connaît pas toutes les personnes qui souhaitent jouer, de sorte qu'il ne peut pas se connecter à eux-même, ils doivent envoyer de nouvelles demandes de connexion à votre ordinateur depuis Internet.

    Si vous n'aviez rien configuré sur le routeur, il recevrait ces requêtes de connexion, mais il ne saurait pas quel ordinateur à l'intérieur du réseau possédait le serveur de jeu, donc il serait simplement ignorer (ou plus précisément, il enverrait Retourner un paquet indiquant qu'il ne peut pas se connecter). Heureusement, vous connaissez le numéro de port qui sera sur les demandes de connexion pour le serveur de jeu. Ainsi, sur le routeur, vous définissez un port vers l'avant avec le numéro de port que le serveur de jeu attend (par exemple, 27015) et l'adresse IP de l'ordinateur avec le serveur de jeu (par exemple 192.168.1.105).
    Le routeur saura transmettre les requêtes de connexion entrantes au 192.168.1.105 à l'intérieur du réseau, et les ordinateurs à l'extérieur pourront se connecter.

    Un autre exemple serait un réseau local avec deux machines, où la seconde avec IP 192.168.1.10 héberge un site Web utilisant Apache. Par conséquent, le routeur doit transmettre les requêtes reçues du port 80 à cette machine. En utilisant le renvoi de port, les deux machines peuvent s'exécuter simultanément sur le même réseau.

    Exemple de transfert de port

    Les jeux vidéo sont peut-être l'endroit le plus commun que les utilisateurs quotidiens rencontreront le renvoi de port, bien que la plupart des jeux modernes utilisent UPnP afin que vous ne devez pas le faire manuellement (au lieu de cela, c'est entièrement automatique). Vous devrez le faire chaque fois que vous souhaitez vous connecter directement à quelque chose dans votre réseau (plutôt que par l'entremise d'un intermédiaire sur Internet). Cela pourrait inclure l'exécution de votre propre serveur Web ou la connexion via Remote Desktop Protocol à l'un de vos ordinateurs.

    Une note sur la sécurité

    L'une des bonnes choses à propos de NAT est qu'il fournit une sécurité intégrée sans effort, intégrée. Beaucoup de gens errent dans Internet à la recherche de machines vulnérables … et ils le font en essayant d'ouvrir des connexions avec différents ports. Ce sont des connexions entrantes, donc, comme discuté ci-dessus, le routeur les déposera. Cela signifie que dans une configuration NAT, seul le routeur lui-même est vulnérable aux attaques impliquant des connexions entrantes. C'est une bonne chose, car le routeur est beaucoup plus simple (et donc moins susceptible d'être vulnérable) qu'un ordinateur exécutant un système d'exploitation complet avec beaucoup de logiciels. Vous devriez garder à l'esprit, par conséquent, que par DMZing un ordinateur à l'intérieur de votre réseau (en le définissant comme la destination DMZ), vous perdez cette couche de sécurité pour cet ordinateur: il est maintenant complètement ouvert aux connexions entrantes d'Internet, donc vous devez Assurez-le comme s'il était directement connecté. Bien sûr, chaque fois que vous transférez un port, l'ordinateur à l'extrémité réceptrice devient vulnérable sur ce port spécifique. Assurez-vous donc d'exécuter un logiciel à jour bien configuré.