Port NAT de perforation UDP

8

Je viens de lire un article sur le processus de "perforation" avec le protocole UDP. Je comprends comment c'est fait, mais j'ai une dernière question pour clarifier les choses. Nous avons le serveur et le client de rendez-vous A, B.

Le client A a déjà percé un trou pour le client B. Le client B reçoit l'IP NAT et le port NAT du serveur de rendez-vous et commence à envoyer des données au même port que le serveur de rendez-vous. Disons que je connais un deuxième port que le NAT a ouvert pour les connexions UDP. Puis-je également envoyer mes paquets via ce deuxième port? Ou le port est-il distingué pour chaque connexion UDP sortante? Si oui, comment se fait-il que nous puissions utiliser le même port pour le client B et le serveur de rendez-vous? Le NAT n'ouvrirait-il pas un nouveau port lorsque le client A perce le trou et que le client B devait savoir quel nouveau port le NAT a ouvert pour cette connexion spécifique?

J'espère que ma question est quelque peu compréhensible.

Tagaeyan Tagan
la source

Réponses:

6

Le périphérique NAT conservera une table avec les connexions actuellement ouvertes afin qu'il puisse envoyer des paquets de retour à l'hôte interne qui a ouvert la connexion. Une entrée dans la table d'état pourrait ressembler à ceci:

IP source interne | Port S interne | Port S externe | IP de destination | Port D
192.168.1.12 10123 10123 203.0.113.1 5555

Lorsqu'un paquet est reçu (du côté externe) , le dispositif NAT vérifiera la source IP , Port Source et Destination Port du paquet et de le comparer à Destination IP, D-Portet les External S-Portchamps dans sa table de connexion. Lorsqu'il trouve une correspondance, il transmet le paquet à Internal Source IPon Internal S-Port.

La perforation UDP dépend du fait que les ports source internes et externes sont identiques. C'est normalement le cas sauf si vous avez un deuxième hôte interne qui utilise le même port source pour se connecter à la même combinaison destination / port D externe.

Lorsque nous supposons que les ports S internes et externes sont les mêmes, les deux clients A, B peuvent communiquer leur port source au serveur de rendez-vous qui relaiera ensuite les informations respectivement à l'autre client.

Sebastian Wiesinger
la source