web-dev-qa-db-fra.com

Qu'est-ce que la redirection de port et à quoi sert-elle?

Il y a beaucoup de questions sur 'port forwarding' , mais il ne semble pas qu'il y en ait une qui indique clairement de quoi il s'agit et à quoi il sert. Alors:

  1. Qu'est-ce que la redirection de port?

  2. À quoi sert-il et pourquoi en aurais-je besoin?

205
James Mertz

Les bases

Pour vraiment expliquer le transfert de port, vous devez d’abord comprendre un peu plus ce que fait votre routeur . Votre fournisseur de services Internet attribue une adresse one / 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. Donc comment ça fonctionne?

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

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

Votre routeur domestique possède une fonction appelée traduction d'adresse réseau ou NAT intégrée. À l'intérieur de votre réseau, les ordinateurs ont des adresses telles que 192.168.1.100. Toutes les adresses de la plage 192.168. * (Ou de la 10. *) sont des adresses " private " ou " reserved ". Ces adresses sont officiellement attribuées par l'IANA pour être utilisées à l'intérieur de réseaux privés. Votre routeur attribue automatiquement une telle adresse à chaque ordinateur connecté via DHCP . Ces adresses indiquent comment les ordinateurs de votre réseau communiquent avec le routeur et entre eux.

Votre routeur possède une interface réseau distincte qui le connecte à Internet. Cette interface a une adresse très différente qui est attribuée par votre fournisseur de services Internet. 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 non routables adresses IP privées, ce qui signifie que s'ils envoient des paquets directement à Internet, ceux-ci seront automatiquement supprimés (les paquets avec des adresses privées ne sont pas autorisés à naviguer sur Internet pour des raisons de stabilité ). Mais votre routeur a une adresse routable. La traduction d'adresses réseau, comme son nom l'indique, traduit entre ces deux types d'adresses, permettant ainsi à plusieurs ordinateurs de votre réseau d'apparaître sur Internet sous la forme d'un ordinateur avec une seule adresse.

Les détails

Bien que cela puisse paraître compliqué, la façon dont votre routeur le fait est en fait assez simple. Chaque fois qu'un ordinateur de votre réseau veut se connecter à un ordinateur sur Internet, il envoie la demande de connexion au routeur (il sait l'envoyer au routeur car son paramètre Default Gateway est défini sur celui du routeur. adresse). Le routeur accepte ensuite cette demande de connexion (une "demande SYN" dans TCP/IP), modifie l'adresse source (l'adresse de réponse ou l'adresse de retour) et la modifie de l'adresse IP privée de l'ordinateur à l'adresse IP publique du serveur. routeur, de sorte que la réponse soit envoyée au routeur. Il note ensuite dans une base de données (appelée la table NAT table} _) que la connexion a été établie pour qu'il s'en souvienne ultérieurement.

Lorsque la réponse revient de l'ordinateur distant (un "SYN-ACK"), le routeur consulte sa table NAT et constate qu'une connexion à cet hôte sur ce port a déjà été initiée par un ordinateur privé sous. votre réseau, remplace l'adresse de destination par l'adresse privée de l'ordinateur et la transfère à l'intérieur de votre réseau. De cette manière, les paquets peuvent continuer à transiter entre les réseaux, le routeur modifiant de manière transparente les adresses pour que cela fonctionne. Lorsque la connexion est terminée, le routeur la supprime simplement de la table NAT.

Ou pensez de cette façon

C’est peut-être un peu plus facile à visualiser avec une métaphore - disons que vous êtes un transitaire américain qui travaille avec des clients chinois. Ils ont besoin d’envoyer des colis à de nombreux clients aux États-Unis, mais il est plus facile, pour des raisons douanières et administratives, d’envoyer des colis au même endroit. Ainsi, un paquet vous est envoyé par l’un de vos clients en Chine (le réseau privé, dans cet exemple) avec une destination réelle quelque part aux États-Unis (Internet). Vous modifiez l’étiquette d’adresse de la boîte à l’adresse américaine (publique) et vous modifiez l’adresse de retour à votre propre adresse publique (car elle ne peut pas être renvoyée directement en Chine sans déranger le client) et vous la remettez au service postal. . Si le client retourne le produit, il vient à vous. Vous la consultez dans vos archives et vous voyez de quelle compagnie en Chine elle provient, et vous changez la destination en cette compagnie (son adresse privée) et l'adresse de retour en votre adresse privée, afin qu'ils puissent vous renvoyer un remplaçant.

Cela fonctionne très bien, mais il y a un petit problème. Que se passe-t-il si un client doit envoyer quelque chose à l'entreprise, disons un mandat-poste en paiement de quelque chose? Ou bien, disons qu'un ordinateur sur Internet établit une connexion avec le routeur (une requête SYN), par exemple sur un serveur Web se trouvant sur le réseau. La lettre/le paquet ne contient que l'adresse publique du routeur, le routeur ne sait donc pas où l'envoyer! il peut être destiné à l'un des ordinateurs du réseau privé ou à aucun d'entre eux. Vous avez peut-être rencontré ce problème lorsque vous appelez le téléphone de votre domicile. Ce n'est pas un problème, mais lorsque vous appelez, il est impossible pour cette personne de savoir à qui l'appel est destiné, de sorte que la mauvaise personne peut répondre.

Bien qu'il soit assez facile pour les humains de résoudre ce problème, c'est beaucoup plus compliqué pour les ordinateurs, car tous les ordinateurs de votre réseau ne connaissent pas tous les autres ordinateurs.

Et finalement nous arrivons à la redirection de port

La façon dont nous réglons ce problème est la redirection de port: c'est un moyen d'indiquer à votre routeur à quel ordinateur les connexions entrantes du réseau doivent être dirigées. Nous avons trois façons différentes de le faire:

  • Faux-DMZ : beaucoup de routeurs ont une fonctionnalité appelée DMZ. Cela signifie Zone démilitarisée, qui est une sorte de configuration de sécurité réseau. Le DMZ sur les routeurs domestiques est souvent appelé faux DMZ car il ne possède pas les fonctionnalités d'un DMZ réel. Ce qu'il fait est le type le plus simple de traitement de connexion entrante: toutes les demandes de connexion entrantes seront envoyées à une demande spécifiée à l'intérieur de votre réseau. C'est simple: vous tapez une adresse IP dans la configuration de votre routeur et toutes les connexions entrantes y vont. Toutefois, cela ne fonctionne pas toujours, car plusieurs ordinateurs peuvent devoir accepter les connexions entrantes. Pour cela, nous avons ...
  • Transfert de port : Toutes les demandes de connexion réseau incluent un "port". Le port est simplement un numéro, et cela explique en partie comment un ordinateur sait en quoi consiste le paquet. IANA a spécifié que le port 80 est utilisé pour HTTP. Cela signifie qu'un paquet entrant portant le numéro de port 80 doit être une requête destinée à un serveur Web. La redirection de port sur votre routeur vous permet de saisir un numéro de port (ou éventuellement une plage ou une combinaison de chiffres, en fonction du routeur), ainsi qu'une adresse IP. Toutes les connexions entrantes avec un numéro de port correspondant seront transférées vers l'ordinateur interne avec cette adresse.
  • Transfert de port UPnP : Le transfert UPnP fonctionne exactement de la même manière que le transfert de port, mais au lieu de le configurer, le logiciel installé sur un ordinateur du réseau configure automatiquement le routeur pour qu'il transfère le trafic sur un port donné.

Un exemple

Regardons un exemple d'utilisation. Un grand nombre de jeux vidéo multijoueurs (par exemple, Counter Strike) vous permettent de faire fonctionner un serveur de jeux sur votre ordinateur auquel d'autres personnes peuvent se connecter pour pouvoir jouer avec vous. Votre ordinateur ne connaît pas toutes les personnes qui souhaitent jouer. Il ne peut donc pas s'y connecter. Ils doivent envoyer de nouvelles demandes de connexion à votre ordinateur à partir d'Internet.

Si vous n’avez rien configuré sur le routeur, celui-ci recevra ces demandes de connexion, mais il ne sait pas quel ordinateur du réseau dispose du serveur de jeu. Il ne les ignore donc pas (ou, plus précisément, il envoie un paquet indiquant qu’il ne peut pas se connecter). Heureusement, vous connaissez le numéro de port qui sera utilisé pour les demandes de connexion du serveur de jeu. Ainsi, sur le routeur, vous définissez un port de transfert avec le numéro de port attendu par le serveur de jeu (par exemple, 27015) et l'adresse IP de l'ordinateur avec le serveur de jeu (par exemple, 192.168.1.105).
Le routeur saura transférer les demandes de connexion entrantes à 192.168.1.105 sur le réseau et les ordinateurs extérieurs pourront se connecter.

Un autre exemple serait un réseau local avec deux machines, où la seconde avec l'adresse IP 192.168.1.10 héberge un site Web utilisant Apache. Par conséquent, le routeur doit transmettre les demandes entrantes du port 80 à cette machine. À l'aide de la redirection de port, les deux machines peuvent fonctionner simultanément sur le même réseau.

 Port forwarding example graph

Les jeux vidéo sont peut-être l’endroit le plus couramment utilisé par les utilisateurs quotidiens, bien que la plupart des jeux modernes utilisent le protocole UPnP afin que vous n’ayez pas à le faire manuellement (à la place, c’est totalement automatique). Vous devrez le faire chaque fois que vous voulez pouvoir vous connecter directement à quelque chose de votre réseau (plutôt que par un intermédiaire sur Internet). Cela peut inclure l’exécution de votre propre serveur Web ou la connexion via le protocole de bureau à distance à l’un de vos ordinateurs.

Une note sur la sécurité

L'un des avantages de NAT est qu'il offre une sécurité intégrée sans effort. Beaucoup de gens se promènent sur Internet à la recherche de machines vulnérables ... et le font en essayant d'ouvrir des connexions avec différents ports. Ce sont des connexions entrantes, ainsi, comme indiqué ci-dessus, le routeur les abandonnera. 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 vulnérable) qu’un ordinateur exécutant un système d’exploitation complet avec de nombreux logiciels. Vous devez donc garder à l’esprit que, si vous détruisez un ordinateur de votre réseau (en le définissant comme destination DMZ, _), vous perdez cette couche de sécurité pour cet ordinateur. Internet, vous devez donc le sécuriser comme s'il était directement connecté. Bien sûr, chaque fois que vous transférez un port, l'ordinateur du destinataire devient vulnérable sur ce port spécifique. Veillez donc à utiliser un logiciel à jour, correctement configuré.

309
jcrawfordor