Wie wird mit der Erschöpfung der NAT-Ports umgegangen?

Wie wird mit der Erschöpfung der NAT-Ports umgegangen?

"Port Address Translation (PAT) löst Konflikte, die entstehen, wenn mehrere Hosts dieselbe Quellportnummer verwenden, um gleichzeitig verschiedene externe Verbindungen herzustellen. PAT kann der Verbindung dann eine Portnummer aus einemPool verfügbarer Ports, indem Sie diese Portnummer in das Quellportfeld einfügen."

https://en.wikipedia.org/wiki/Netzwerkadressenübersetzung

Was wäre, wenn wir Dutzende hochgradig skalierbare Server hätten, die Tausende von Anfragen akzeptieren? Die Port-Erschöpfung scheint eine sehr grundlegende Grenze (64k) zu sein, die wir leicht erreichen werden.

Wie geht die Industrie mit solchen Szenarien um?

Antwort1

Letztendlich läuft NAT wirklich nur auf eine Nachschlagetabelle auf dem NAT-Gerät hinaus, die die Zuordnungen dafür enthält, welche Verbindungen wohin gehen. Diese Tabelleneinträge werden jedoch auf einempro SitzungBasis.

Beispiel: Wenn ich einen Host habe bei10.10.10.10, die mit einem Server im Internet kommunizieren möchten unter8.8.8.8, über mein Internet-Gateway, dessen öffentliche IP ist1.1.1.1, wenn diese Kommunikation stattfindet, erstellt mein Internet-Gateway möglicherweise ein Eintragspaar, das ungefähr so ​​aussieht:

Quelle Sport Ziel Dport Aktionen
10.10.10.10 20000 8.8.8.8 80 SNAT 10.10.10.10:20000 --> 1.1.1.1:40000
8.8.8.8 80 1.1.1.1 40000 DNAT 1.1.1.1:40000 --> 10.10.10.10:20000

Auch wenn es den Anschein haben mag,1.1.1.1:40000ist jetzt für diese Sitzung belegt und lässt jetzt ~63999 Ports übrig. Das ist nicht ganz richtig. Da diese Einträge pro Sitzung erfolgen, wäre es vollkommen vernünftig, wenn nachfolgende Kommunikationen stattfinden und die Tabelle wie folgt aufgebaut wäre:

Quelle Sport Ziel Dport Aktionen
10.10.10.10 20000 8.8.8.8 80 SNAT 10.10.10.10:20000 --> 1.1.1.1:40000
8.8.8.8 80 1.1.1.1 40000 DNAT 1.1.1.1:40000 --> 10.10.10.10:20000
10.10.10.10 20001 8.8.8.8 81 SNAT 10.10.10.10:20001 --> 1.1.1.1:40000
8.8.8.8 81 1.1.1.1 40000 DNAT 1.1.1.1:40000 --> 10.10.10.10:20001
10.10.10.10 20002 8.8.4.4 80 SNAT 10.10.10.10:20002 --> 1.1.1.1:40000
8.8.4.4 80 1.1.1.1 40000 DNAT 1.1.1.1:40000 --> 10.10.10.10:20002
10.10.10.10 20003 8.8.4.4 81 SNAT 10.10.10.10:20003 --> 1.1.1.1:40000
8.8.4.4 81 1.1.1.1 40000 DNAT 1.1.1.1:40000 --> 10.10.10.10:20003

Auf der öffentlichen Schnittstelle (wo Sie sich normalerweise über eine NAT-Erschöpfung Sorgen machen würden) können wir sehen, dass es effektiv 4 Sitzungen gibt:

1.1.1.1:40000 --> 8.8.8.8:80
1.1.1.1:40000 --> 8.8.8.8:81
1.1.1.1:40000 --> 8.8.4.4:80
1.1.1.1:40000 --> 8.8.4.4:81

Diese 4 Sitzungen belegen jedoch nicht insgesamt 4 Ports, und das NAT-Gerät weiß genau, wohin der Datenverkehr dieser 4 Sitzungen geleitet werden soll.

Obwohl es so aussieht, als gäbe es ein Portlimit von 64 KB, sind es in Wirklichkeit eher 64 KB pro Ziel-Socket (mit einigen Einschränkungen). Nicht unerschöpflich, aber sicherlich skalierbarer als flache 64 KB.

verwandte Informationen