Zusammenfassung

  • RFC 5382 REQ-7 untersagt, dass verschiedene interne Endpunkte gleichzeitig dieselbe externe Adress-Port-Zuordnung für TCP verwenden.
  • Solange die Gegenstellen verschieden sind, kann ein NAT sie als versteckten Schlüssel nutzen. Treffen beide internen Endpunkte auf dieselbe Gegenstelle, werden die öffentlichen Vier-Tupel identisch. Aus Verdichtung wird eine Kollision im Namensraum.

Warum MUST NOT und nicht „bei Bedarf“?

Eine Kapazitätsoption ließe sich abstufen. Ein Betreiber könnte sie aktivieren, wenn Adressen knapp sind, und den höheren Fehleranteil akzeptieren. REQ-7 ist anders formuliert. Das Verbot schützt eine Voraussetzung, auf der TCP und die Rückübersetzung beruhen: Eine sichtbare Verbindung muss einem bestimmten internen Anspruch zugeordnet werden können.

Beim Port Overloading erhalten zwei verschiedene interne Adress-Port-Paare dieselbe öffentliche Adresse und denselben Port. Geht die erste Verbindung zu Server X und die zweite zu Server Y, kann die Übersetzungstabelle X und Y in den Suchschlüssel aufnehmen. Die öffentlichen Ports scheinen effizienter genutzt.

Wählen beide denselben Server und Dienst, verschwindet die Zusatzinformation. Öffentliche Quelle, öffentliches Ziel und Protokoll sind gleich. Der entfernte Host kann die beiden Verbindungen nicht unter verschiedenen Vier-Tupeln führen, und auch der NAT besitzt keinen sichtbaren Schlüssel mehr, der die Rückpakete eindeutig trennt.

Abschnitt 7.1 der RFC beschreibt genau diese Folge: Zwei interne Endpunkte, die eine Zuordnung teilen, können keine gleichzeitigen Verbindungen zu einem gemeinsamen externen Endpunkt aufbauen. Daher ist das Verbot keine Geschmacksfrage. Die Zuordnung muss im relevanten Zeitraum einen singulären Anspruch darstellen.

Derselbe Inhaber über mehrere Ziele ist nicht mehrere Inhaber

RFC 5382 verlangt zugleich endpoint-unabhängiges Mapping. Ein internes Adress-Port-Paar soll seine externe Zuordnung behalten können, wenn es mit mehreren Zielen kommuniziert. Das ist Wiederverwendung durch denselben Inhaber.

Port Overloading überträgt die Zuordnung gleichzeitig auf weitere interne Paare. Das ist Mitinhaberschaft. Im ersten Fall ändert sich der Kommunikationspartner, nicht die Quelle. Im zweiten Fall ändert sich die Quelle, während der öffentliche Name gleich bleibt.

Die Unterscheidung ist wichtig für Produktbeschreibungen. „Mapping reuse“ kann korrekt und erwünscht sein. Ohne Angabe des Subjekts sagt die Formulierung jedoch nicht, ob ein interner Endpunkt seine Zuordnung wiederverwendet oder ob mehrere Endpunkte sie teilen. Nur Letzteres ist REQ-7s Gegenstand.

Auch Filtering liegt auf einer anderen Achse. Es legt fest, welche externen Quellen durch eine vorhandene Zuordnung zurücksenden dürfen. Es beantwortet nicht, welcher interne Empfänger gemeint ist, wenn zwei dieselbe Zuordnung besitzen. Eine bestehende BTW-Analyse behandelt Mapping und Filter bei NAT64. Hier geht es um die Integrität des Namens vor jeder Zugriffsentscheidung.

Keine Variante von Simultaneous Open

RFC 5382 schützt außerdem TCP Simultaneous Open. Zwei Peers senden gleichzeitig SYN, die Segmente kreuzen sich, und eine vollständige TCP-Zustandsmaschine kann eine Verbindung herstellen. Manche NATs verwarfen den gültigen eingehenden SYN, weil sie nur den üblichen Client-Server-Ablauf modellierten. Diese Geschichte einschließlich des Sechs-Sekunden-Fensters besitzt bereits einen eigenen BTW-Beitrag.

Beim Port Overloading rufen zwei interne Clients einen dritten, gemeinsamen Dienst. Nicht Rollen oder gekreuzte SYNs kollidieren, sondern zwei Quellansprüche, die der Übersetzer auf denselben öffentlichen Namen abgebildet hat. Ein längeres Zustandsfenster löst das nicht.

Die Beweisführung muss deshalb getrennt bleiben. Simultaneous Open verlangt Paketfolge und TCP-Zustände. REQ-7 verlangt den Allokationsbeleg: internes Paar, externes Paar, entferntes Paar, Protokoll, Zeitpunkt, Algorithmusversion und Eigentümer der Übersetzungsstate. Ein Sammelbegriff wie „NAT-Kompatibilität“ wäre zu grob, um die richtige Regel zu reparieren.

Namensraumknappheit ist sichtbar zu behandeln

IPv4-Knappheit ist kein theoretisches Problem. Carrier teilen öffentliche Adressen, Portblöcke werden geplant, Tabellenkapazität kostet Speicher und Failover-Bandbreite. Ein Anbieter, der mehr Sessions pro Adresse verspricht, adressiert einen realen wirtschaftlichen Druck.

Doch Verdichtung ist nur dann Kapazität, wenn die Identität der aufgenommenen Arbeit erhalten bleibt. Ein TCP-Flow umfasst Endpunkte, Sequenzzustand und Rückweg. Die öffentliche Adresse und der Port sind eine zeitlich begrenzte Projektion dieses Flows. Sie müssen nicht dem Kunden gehören; sie müssen während der Zuordnung eindeutig nutzbar sein.

Bei Erschöpfung kann ein NAT eine neue Verbindung ablehnen. Das ist ein negatives, aber aussagekräftiges Ergebnis. Es legt den Engpass offen und schützt bestehende Zuordnungen. Eine überladene Zuordnung kann zunächst als erfolgreiche Aufnahme erscheinen und erst beim gemeinsamen Ziel scheitern. Damit wird ein Kapazitätsproblem in ein schwer erklärbares Identitätsproblem verwandelt.

Eine belastbare Planung misst Ablehnungen, Poolbelegung, Blockfragmentierung, Haltezeiten und Erweiterungsbedarf. Sie zählt nicht jede versteckte Mehrfachbelegung als gewonnene Session. Der Namensraum hat eine semantische Kapazität, nicht nur eine numerische.

Hairpinning bestätigt die Bedeutung des sichtbaren Namens

REQ-8 verlangt TCP-Hairpinning mit externer Quelladresse und externem Quellport. Zwei interne Anwendungen, die nur die öffentlichen Zuordnungen voneinander kennen, sollen kommunizieren können. Der zurückgebogene Pfad muss die Quelle zeigen, die der Empfänger als Peer erwartet.

Das ist eine eigene Anforderung, macht aber dieselbe Abhängigkeit sichtbar. Anwendungen binden Daten an eine Gegenstelle. Der externe Name darf auf dem internen Umweg nicht willkürlich ersetzt werden. Er ist Teil der Zuordnung, nicht bloß Routingdekoration.

Port Overloading schwächt diesen Namen, weil er nur zusammen mit einem unsichtbaren entfernten Schlüssel singulär ist. Ein solcher Name kann in einer lokalen Tabelle funktionieren, aber bei Zustandsverlust, Replikationslücke oder Zielkonvergenz seine Bedeutung verlieren. Die Forderung ist nicht, ihn für immer festzuschreiben, sondern seine Aussage für die zugesagte Lebensdauer zu bewahren.

Begrenzte Autorität von Fehlern und Hilfsfunktionen

REQ-9 empfiehlt, ICMP Destination Unreachable zu übersetzen. REQ-10 untersagt, allein wegen einer ICMP-Nachricht die Zuordnung oder TCP-Verbindung zu beenden. Eine Fehlermeldung ist Evidenz über einen Pfad; sie besitzt nicht automatisch Löschautorität.

Auch Inaktivität beweist keinen Tod. Die RFC nennt Mindestzeiten, wenn der NAT die Aktivität der Endpunkte nicht feststellen kann. Ein anderer BTW-Text analysiert die Unsicherheit stiller TCP-Verbindungen. Für REQ-7 genügt die engere Folgerung: Eine noch lebende Zuordnung wird durch Ruhe nicht zu einem Port, der gleichzeitig neu vergeben werden darf.

ALGs erhöhen die Buchführungspflicht. Wenn ein NAT TCP-Sequenznummern verändert, muss es SACK korrekt behandeln. Jede verborgene Transformation muss über spätere Pakete konsistent bleiben. Port Overloading würde davor schon die Grundfrage offenlassen: Zu welchem Inhaber und Sequenzraum gehört das Paket?

In allen Fällen muss die Befugnis zum Signal passen. ICMP darf melden, ein Timer darf eine Prüfung auslösen, ein ALG darf nach dokumentierter Regel übersetzen. Keines darf die Identität der Session aus Bequemlichkeit neu definieren.

Der reproduzierbare Konformitätsnachweis

Zwei unterschiedliche interne Paare verbinden sich mit demselben kontrollierten externen Listener. Die erste Verbindung und Zuordnung bleiben aktiv, während die zweite beginnt. Die übersetzten Quellen müssen verschieden sein. Ist keine konforme Zuordnung verfügbar, muss der zweite Versuch beobachtbar scheitern. Er darf nicht unter dem Namen des ersten zugelassen werden.

Der Test wird bei Portdruck, nach Policy-Wechseln und während Failover wiederholt. Zu speichern sind internes, externes und entferntes Tupel, Protokoll, Erzeugungs-, Aktualisierungs- und Löschzeit, Allokatorversion, Knoten und State-Epoche. SYN, SYN-ACK und ACK werden damit korreliert; eine separate Anwendungstransaktion belegt die Nutzwirkung.

Für Attribution gelten Zeitgrenzen. Ein öffentliches Paar kann nur innerhalb einer bekannten Zuordnungsperiode auf einen internen Anspruch verweisen. Braucht das Design zusätzlich den entfernten Peer, muss diese Einschränkung jede Auskunft begleiten. REQ-7 verhindert bei TCP die gleichzeitige Mitinhaberschaft, die diese Auskunft besonders fragil macht.

Auch der korrekte negative Ausgang gehört in den Bericht. Eine explizite Ablehnung unter Erschöpfung beweist, dass der Namensraum geschützt wurde. Wer sie aus Erfolgsmetriken entfernt, löscht den Investitionsbedarf aus der Entscheidungsvorlage.

Quellen