Wie funktioniert NAT mit eingehenden UDP-Paketen von unbekannter IP?


8

Entschuldigung im Voraus für die relativ noob Frage und ob dies hier nicht zum Thema gehört (ich bin nicht sicher ...)

Die Situation ist, dass ich einen UDP-Client und -Server an denselben Port gebunden habe.

Nach meinem Verständnis von NAT führen UDP-Pakete, die vom Client an einen bestimmten Endpunkt gesendet werden, zu einem temporären Eintrag in die NAT-Tabelle, der den Quellport dem Zielendpunkt zuordnet. (Ist das richtig?)

Bedeutet dies auch, dass ein noch unbekannter Endpunkt eine UDP-Kommunikation mit meinem Server zu demselben Port initiiert, über den das UDP-Paket geleitet wird? Gibt es einen Grund, warum NAT dies verhindern würde? Ist NAT überhaupt daran beteiligt, diese eingehenden Pakete zu blockieren / zuzulassen?


1
Hallo Sentinel, willkommen bei NESE. Die Antwort hängt davon ab, welcher NAT-Typ konfiguriert ist. Es handelt sich anscheinend um eine dynamische PAT (obwohl verschiedene Anbieter dies als unterschiedliche Dinge bezeichnen ). Diese Antwort auf eine andere Frage und Antwort enthält weitere Details dazu, warum Dynamic PAT unidirektional ist und es dem "noch unbekannten" Endpunkt nicht ermöglicht, eine Verbindung zu Ihrem Server (TCP oder UDP) herzustellen. Insbesondere die dritte Abbildung scheint für Ihre Frage relevant zu sein.
Eddie

@Eddie Vielen Dank für Ihre hilfreichen Informationen. Ich denke, für diejenigen, die in Zukunft hier ankommen könnten, wäre es eine gute Idee, dies als Antwort hinzuzufügen.
Sentinel

Wenn Sie der Meinung sind, dass dies eine angemessenere Antwort wäre als die veröffentlichten, kann ich eine weitere Antwort schreiben. Deine Wahl =).
Eddie

1
Eddie schrieb Die Antwort hängt davon ab, welcher NAT-Typ konfiguriert ist : @Sentinel Einige NAT- Typen sind in Wikipedia aufgeführt: en.wikipedia.org/wiki/… Es ist offensichtlich, dass ein "Vollkegel-NAT" anders reagiert als ein "Symmetric NAT" hier.
Martin Rosenau

@ MartinRosenau Danke. Es sieht so aus, als würde ich viel Zeit damit verbringen, NATs zu studieren. Ich finde es wunderbar, dass Programme wie BitTorrent in diesem Minenfeld der Netzwerk-Tricks überhaupt funktionieren.
Sentinel

Antworten:


6

Das übliche NAT erstellt Zuordnungen für jedes Paar kommunizierender Hosts als 5-Tupel (Protokoll, interne Adresse, interner Port, externe Adresse, externer Port). Normalerweise wird dieser Eintrag durch das erste ausgehende Paket zur Tabelle hinzugefügt.

Wenn der noch unbekannte externe Host ein UDP-Paket sendet, gibt es keinen Eintrag in der Tabelle, und das NAT-Gerät verwirft es daher normalerweise, abhängig von seinen Funktionen und seiner Konfiguration.

Diese Art von NAT wird normalerweise als "Überlastungs-NAT" oder "Portadressübersetzung" bezeichnet, um sie von anderen Varianten zu unterscheiden. Eine gute Beschreibung ist http://www.ciscozine.com/nat-and-pat-a-complete-explanation/

Wenn Sie eingehende Pakete auf Ihrem Server akzeptieren möchten, müssen Sie auf dem NAT-Gerät einen statischen Eintrag für diesen Server an diesem Port einrichten. Tatsächlich bedeutet dies, dass Einträge durch eingehende Pakete zur NAT-Tabelle hinzugefügt werden können.

Die Details sind geräte- und softwareabhängig.


OK, ich verstehe, danke. Ich werde dies für eine Weile positiv bewerten, bevor ich es später als akzeptierte Antwort markiere, um andere Meinungen zu berücksichtigen, falls es welche gibt. Ich bin überrascht, dass so viel P2P-Software auf UDP-Erkennung beruht, aber abgesehen von UPnP
Sentinel

3

Wie Jonathanjo betont, besteht ein UDP-NAPT-Tabelleneintrag aus mehr als nur einer UDP-Portnummer (bei NAPT gibt es separate Tabellen für UDP, TCP und ICMP, und der UDP-Port 12345 unterscheidet sich vom TCP-Port 12345, während ICMP dies nicht tut Verwenden Sie keine Ports, sondern verwenden Sie eine Abfrage-ID anstelle der Portnummer.

Ohne die spezifische externe IP-Adresse in einem NAPT-Tabelleneintrag geht das NAPT-Gerät davon aus, dass das Paket für sich selbst bestimmt ist, da es das Gerät ist, das tatsächlich mit der eingehenden IP-Adresse adressiert wird. Wenn auf dem NAPT-Gerät selbst der UDP-Port nicht geöffnet ist, sollte das Paket verworfen werden. Dies hängt jedoch vom Betriebssystem des NAPT-Geräts und seiner Konfiguration ab.

Dies ist ein wichtiger Grund dafür, dass NAPT keine Sicherheit ist. Sie brauchen auch wirklich eine Firewall. Die Firewall blockiert standardmäßig alle Verbindungen von außen, um das NAPT-Gerät selbst zu schützen. Wenn das NAPT-Gerät gefährdet ist, hat es vollen Zugriff auf das interne Netzwerk, und ein Angreifer hat dann vollen Zugriff auf das interne Netzwerk, selbst wenn es sich um ein privat adressiertes Netzwerk handelt.


Könnten Sie mit einer Sache helfen? Warum führt die Portweiterleitung (statisches Pat, statisches Napt?) Bei typischen Heimroutern nicht dazu, dass ausgehender Datenverkehr nach dieser Regel initiiert wird? Es scheint, dass sie die Regel ignorieren und trotzdem dynamische Einträge vornehmen. Ist das die Norm?
Sentinel

1
Die Portweiterleitung ist eine Regel für von außen initiierten Datenverkehr, damit externe Hosts eine Verbindung zu einem in der Regel angegebenen internen Host herstellen können, nicht für von innen initiierten Datenverkehr. Dies ist im Grunde ein statischer Eintrag in der NAPT-Tabelle für eines der drei Protokolle, die NAPT (TCP, UDP, ICMP) verwenden können. Siehe RFC 2663, Terminologie und Überlegungen zu IP Network Address Translator (NAT) .
Ron Maupin
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.