Question Comment deux ordinateurs peuvent-ils se connecter à la même adresse externe via NAT?


Si deux ordinateurs internes se connectent à la même adresse IP externe via un routeur NAT, comment le routeur peut-il acheminer le trafic vers le bon ordinateur interne? D'après ce que je comprends, NAT transmet les paquets entrants à l'ordinateur qui a récemment envoyé les paquets sortants à l'adresse IP de l'expéditeur [du paquet entrant]. Puisque les deux ordinateurs envoient à la même adresse, le routeur transfère-t-il le paquet aux deux? Si tel est le cas, le logiciel client a-t-il la responsabilité de déterminer quels paquets sont pertinents?

Est-il possible que les deux ordinateurs tentent de se connecter au même port?


13
2017-12-30 20:16


origine


Réponses:


Lorsque vous ouvrez un socket, vous devez vous adresser à un port du système de destination et ouvrir un port d'écoute conjugué sur votre propre système pour recevoir toute réponse. Vous devez envoyer au système de destination votre port d'écoute.

Avoir plusieurs systèmes utilisant le même modem

Lorsque vous démarrez un navigateur Web et accédez à www.google.com:80, votre navigateur obtient / recherche un port conjugué non-système gratuit à partir du système pour l'écouter. Disons que le port conjugué est 10000. Le port d'écoute est destiné à recevoir le flux http de google.

Ensuite, votre enfant assis à côté de vous navigue aussi sur www.google.com:80 et sa session google de la station de jeu ou de la xbox, quel que soit le port conjugué 10000, est également associée.

Vous êtes tous les deux assis derrière un modem câble et derrière votre modem câble se trouve votre routeur sans fil. Et vos deux systèmes se trouvent derrière le routeur sans fil - Tous placés dans cet ordre, selon la topologie du réseau.

Pour empêcher une collision d'adresse de port sur le routeur / modem

Disons que votre câblodistributeur DHCP attribue votre adresse ip4 modem 72.72.72.72. Mais votre routeur sans fil DHCP attribue 192.168.0.10 à votre système et 192.168.0.11 au système de votre enfant.

Lorsque la trame contenant les informations de vos ports d'écoute passe à travers votre routeur NAT, elle traduirait un ou les deux ports d'écoute. Disons le port 15000 pour votre page et le port 16000 pour la page de votre enfant.

Votre routeur sans fil envoie alors vos demandes au serveur Google à partir de 72.72.72.72:15000 et 72.72.72.72:16000.

Le serveur Google répond alors individuellement à 72.72.72.72:15000 et 72.72.72.72:16000 et lorsque votre routeur sans fil rencontre la réponse, il atteint le mappage qu'il a stocké et traduit 72.72.72.72:15000 à 192.168.0.10:10000 en atteignez votre système mais traduit 72.72.72.72:16000 à 192.168.0.11:10000 pour atteindre le système de votre enfant.

Serveurs Web / jeu / ftp / etc en cours d'exécution

Mais que se passe-t-il si vous avez un serveur Web ou un serveur FTP exécuté sur votre système. Que faire si vous avez deux systèmes et que les deux ont un serveur Web et que les deux serveurs Web écoutent sur le port 80?

Disons que les adresses IP locales enregistrées / assignées avec votre routeur sans fil de votre premier système de serveur Web sont 192.168.0.30 et que votre deuxième système de serveur Web est 192.168.0.40.

Le routeur sans fil aurait une page Web de configuration par défaut 192.168.0.1:80, à moins que vous ne l'ayez modifié. Il y aurait un onglet sur la page où vous pourriez définir / réserver des mappages de ports d’application.

Vous pouvez vous inscrire avec votre routeur sans fil pour réserver le mappage

192.168.0.30:80 => outgoing port 8080
192.168.0.40:80 => outgoing port 8088

Pour que vous ayez à téléphoner à vos amis, vos serveurs web / jeux sont adressables via 72,72,72,72:8080 et 72,72,72,72:8088 respectivement, où le routeur sans fil exclurait ses ports 8080 et 8088 de sa propre utilisation NAT dynamique.

Bien sûr, 72.72.72.72 est aussi bon que avant que votre fournisseur de services Internet DHCP décide de renouveler l’adresse IP4 de votre modem pour indiquer, 72.72.90.200. Après quoi vous devrez téléphoner / envoyer un email à vos amis et dire Hé, les adresses des serveurs ont changé à 72.72.90.200:8080 et 72.72.90.200:8088 respectivement. Ou vous pouvez vous abonner au service dns dynamique (ddns) pour utiliser un domaine nommé où le service ddns devra installer un simple utilitaire de pulsation sur votre système pour les aider à surveiller la variation d'adresse. La traduction DDNS est une question / stratégie distincte.

Modems NAT

Les nouveaux contrats avec les FAI vous fournissent un modem avec NAT. Si c'est le cas, vous devez éteindre soit celui de votre modem, soit celui de votre routeur sans fil. Vous ne devriez pas utiliser les deux - à quoi sert-il de traduire deux fois car NAT est simplement pour empêcher la collision d'adresses. Lorsque vous désactivez le NAT depuis votre routeur sans fil, il peut fonctionner comme un concentrateur et non plus comme un routeur, ce qui vous permet de le connecter au modem en utilisant l’un de ses connecteurs LAN au lieu de son connecteur WAN.


28
2017-12-31 12:09



Le routeur gère les ports "sources" distincts pour chaque ordinateur. Pendant que vous vous connectez au port 80 sur la "destination", le routeur peut attribuer le port source à un port de numéro élevé.

Wikipédia le résume comme

La traduction d'adresse réseau implique   réécrire la source et / ou   adresses IP de destination et généralement   également les numéros de port TCP / UDP de l'IP   les paquets lorsqu'ils passent par le NAT.   Les sommes de contrôle (IP et TCP / UDP) doivent   également être réécrit pour tenir compte de   les changements.


4
2017-12-30 20:21



Déjà de bonnes réponses sont fournies, mais voici un autre exemple:

    HOST A addr         HOST B addr
    10.1.0.2:4040       10.1.0.3:4040
-----------------------------------------
NAT 200.50.50.28:4040   200.50.50.28:4041 (what external host sees)

200.50.50.28 est l'adresse IP globale (Internet) du routeur.

Chaque numéro de port est unique dans la table NAT. Et bien sûr, le routeur fait tout le sale tâche de modifier les adresses source et de destination de manière transparente.


2
2017-12-30 20:57



Il utilise différents ports pour le trafic externe entrant, et le NAT achemine ensuite les paquets sur un port vers une adresse IP interne, et les paquets de l'autre port vers l'autre adresse IP interne ... La demande initiale de chaque ordinateur interne, lorsque il passe à travers le NAT à l’extérieur, établit le port qui sera utilisé pour le trafic entrant à partir de l’adresse IP externe et indique au serveur externe le port sur lequel le trafic sera renvoyé pour cette connexion.


1
2017-12-30 20:19



RFC3022 fournit beaucoup d'informations sur la façon dont cela fonctionne


1
2018-01-13 18:22