Warum funktioniert STUN nicht mit symmetrischem NAT?

7

Ich habe diese Zeile aus Wikipedia gelesen .

" STUN funktioniert mit drei Arten von NAT: Vollkegel-NAT, Restricted-Cone-NAT und Port-Restricted-Cone-NAT . Bei eingeschränkten Cone- oder Port-Restricted-Cone-NATs muss der Client vor dem NAT ein Paket an den Endpunkt senden Pakete vom Endpunkt bis zum Client zulassen. STUN funktioniert nicht mit symmetrischem NAT "

Kann jemand erklären warum?

Kristen
quelle

Antworten:

6

Da STUN (externer Server) nicht wissen kann, welcher Port dem Client vom NAT-Gerät zugewiesen wird. In symmetrischem NAT erhält der Client für jede Verbindung einen eindeutigen Port (IP: Port in Poolsituation)

Pyatka
quelle
13

Angenommen, wir haben einen STUN-Server an der Adresse stun_addrund einen Server an der Adresse srv_addr. Die Verwendung von STUN sieht normalerweise folgendermaßen aus:

  1. Der Client stellt über das stun_addrNAT-Gerät eine Verbindung zum STUN-Server her . Das NAT-Gerät übersetzt die Quelladresse innatted_addr_1
  2. Der STUN-Server teilt dem Client die Adresse mit, von der er die Verbindung erhalten hat natted_addr_1
  3. Der Client kontaktiert den Server srv_addrüber das NAT-Gerät und weist das externe System an, natted_addr_1es zu verwenden, wenn es den Client erreichen möchte
  4. Externes System sendet etwas an den Client mit natted_addr_1

Dies funktioniert nur, wenn das NAT-Gerät natted_addr_1sowohl für die Kommunikation mit dem STUN-Server als auch mit dem anderen externen System verwendet. Insbesondere funktioniert es nur, wenn das NAT-Gerät die in Schritt 4 eintreffenden Pakete an den Client übermittelt.

Ein symmetrisches NAT-Gerät verwendet in den Schritten 1 und 3 eine andere Übersetzung, da die Zieladresse des Datenverkehrs unterschiedlich ist. In Schritt 3 wird die Quelladresse in den Paketen zum Server in eine andere Adresse übersetzt natted_addr_2.

Das NAT-Gerät kennt nur diese Kombinationen von Quell- und Zieladressen und lässt diese nur wieder zu:

  • Von stun_addrbisnatted_addr_1
  • Von srv_addrbisnatted_addr_2

Leider wurde der Server zur Verwendung aufgefordert, natted_addr_1aber Pakete von srv_addrbestimmt bis natted_addr_1werden vom NAT-Gerät aufgrund der vorhandenen Einschränkung NAT-Adresse: Port abgelehnt.

Um genauer zu sein, sollte 'Adresse' in dieser Antwort durch 'Adresse / Port' ersetzt werden, da NAT-Geräte mit der Kombination aus IP-Adresse und Portnummern arbeiten.

Gerben
quelle
Tolle Erklärung. Dies hat mir geholfen zu verstehen, warum STUN für symmetrische NATs nicht funktioniert. Was ich immer noch zu kämpfen habe, ist, dass in der Welt von WebRTC Kandidaten, die über STUN für eine Adresse oder einen Port generiert wurden, den Konus NAT einschränken, erfolgreich sind. In all diesen Fällen scheint das Stanzen von UDP-Löchern fehlzuschlagen. Ist mein Verständnis richtig?
Ternary
Das klingt für mich nach einer neuen Frage. Da die Terminologie für verschiedene NAT-Typen verwirrend sein kann, können Sie auf der Website eine neue Frage mit etwas mehr Kontext stellen, wenn Sie möchten.
Gerben