ephemeral Port

Ephemeral Ports, deutsch flüchtige Ports, sind die Portnummern, die ein Betriebssystem für die Dauer einer ausgehenden Verbindung selbst vergibt. Sie bezeichnen nicht den Dienst, der angesprochen wird, sondern den Rückweg zur anfragenden Anwendung.

Warum es sie gibt

Eine Verbindung wird durch vier Angaben eindeutig bestimmt: Quelladresse, Quellport, Zieladresse, Zielport. Der Zielport ist festgelegt, weil er den Dienst benennt — wer eine Webseite abruft, wendet sich an Port 443.

Der Quellport ist dagegen frei und muss nur eines leisten: Er muss die Verbindung von allen anderen desselben Rechners unterscheidbar machen. Deshalb vergibt das Betriebssystem ihn selbst, aus einem dafür reservierten Bereich, und gibt ihn nach Ende der Verbindung wieder frei. Daher der Name.

Zehn gleichzeitig geöffnete Verbindungen zum gleichen Server unterscheiden sich damit allein im Quellport.

Die Bereiche

Die Vergabestelle empfiehlt den Bereich 49152 bis 65535. Die Systeme halten sich unterschiedlich daran:

SystemBereichAnzahl
Empfehlung der IANA49152–6553516.384
Windows (seit Vista)49152–6553516.384
Linux (Standard)32768–6099928.232
macOS, FreeBSD49152–6553516.384

Der Bereich lässt sich auf allen Systemen verschieben. Wer das tut, sollte prüfen, ob Dienste auf hohen Portnummern lauschen, die dann in den Vergabebereich fallen — genau dafür gibt es unter Linux eine Ausschlussliste.

TIME_WAIT: der Grund für Portmangel

Ein Port wird nach dem Verbindungsende nicht sofort wieder frei. Die beendende Seite hält ihn in einem Wartezustand, üblicherweise 60 Sekunden lang. Der Sinn: Verspätete Pakete der alten Verbindung sollen nicht einer neuen zugeordnet werden, die dieselbe Portnummer bekommen hat.

Für die meisten Anwendungen ist das unsichtbar. Problematisch wird es bei Programmen, die viele kurzlebige Verbindungen aufbauen — Lastgeneratoren, Übertragungsjobs, Proxys. Bei 16.000 Ports und 60 Sekunden Wartezeit ist die Grenze bei etwa 270 Verbindungen je Sekunde erreicht, dauerhaft. Danach meldet das System, dass keine Adresse mehr zugewiesen werden kann — ein Fehlerbild, das nach einem Netzproblem aussieht und keines ist.

Abhilfe schafft nicht ein größerer Bereich allein, sondern das Wiederverwenden bestehender Verbindungen, statt für jede Anfrage eine neue aufzubauen.

Portmangel unter CGNAT

Beim Anschluss hinter einem Carrier-Grade-NAT verschärft sich dieselbe Rechnung, weil nicht mehr der eigene Rechner das Limit setzt, sondern die geteilte öffentliche Adresse.

Teilt ein Anbieter eine Adresse auf 64 Anschlüsse auf, bleiben je Anschluss rund 1.000 Portnummern. Das klingt reichlich, ist es aber nicht: Ein moderner Browser baut pro Seite mehrere Verbindungen auf, dazu kommen Mobilgeräte, Fernseher und Hintergrunddienste im Haushalt — und jede beendete Verbindung bleibt noch eine Weile belegt.

Das zugehörige Fehlerbild ist unverwechselbar und wird selten richtig gedeutet: Einzelne Seiten laden nicht oder nur teilweise, ein Neuladen hilft, andere Dienste laufen gleichzeitig störungsfrei, und eine Geschwindigkeitsmessung zeigt nichts Auffälliges. Betroffen sind zuerst Haushalte mit vielen Geräten.

Die Verwechslung bei der Portfreigabe

Hier liegt die häufigste Verständnislücke. Eine Portfreigabe betrifft eingehende Verbindungen und braucht einen festen Zielport, damit der Router weiß, wohin er sie schicken soll.

Flüchtige Ports betreffen die ausgehende Richtung und wechseln bei jeder Verbindung. Sie lassen sich nicht freigeben, und es ist auch nicht nötig: Die Antwort auf eine ausgehende Verbindung wird vom Router zugeordnet, weil er sich ihren Aufbau gemerkt hat.

Daraus folgt die Antwort auf eine wiederkehrende Frage: Für eine Anwendung, die nur Verbindungen nach außen aufbaut, braucht es keine Freigabe. Erforderlich wird sie erst, wenn von außen jemand den ersten Schritt macht.

Stolperstellen

Eine Firewall, die hohe Ports sperrt, bricht ausgehende Verbindungen. Die Antwortpakete gehen an den flüchtigen Port zurück; wird dieser Bereich eingehend blockiert, ohne bestehende Verbindungen zu berücksichtigen, funktioniert nichts mehr. Regeln müssen den Verbindungszustand auswerten, nicht nur Portnummern.

Ein Proxy oder Lastverteiler ist ein Engpass. Baut er alle Verbindungen zu den Zielsystemen unter seiner eigenen Adresse auf, teilen sich sämtliche Nutzer dessen Portvorrat — dieselbe Rechnung wie bei CGNAT, nur im eigenen Haus.

Zwei Systeme hinter einem NAT können denselben Quellport wählen. Das NAT-Gerät muss dann einen umschreiben; geht ihm dabei der Vorrat aus, scheitern Verbindungen ohne erkennbares Muster.

Protokolle mit zweitem Kanal brauchen Mitlesen. Verfahren, die Portnummern innerhalb der Verbindung aushandeln, funktionieren hinter NAT nur, wenn das Gerät den Datenstrom mitliest — der Grund, aus dem passive statt aktiver Übertragung empfohlen wird.

Abgrenzung

Die gut bekannten Ports von 0 bis 1023 sind den verbreiteten Diensten zugewiesen, die registrierten Ports von 1024 bis 49151 auf Antrag vergeben. Der Bereich darüber ist für die flüchtige Vergabe vorgesehen.

NAT schreibt den flüchtigen Quellport um und verwaltet dafür eine eigene Tabelle.

CGNAT ist die Ausprägung, in der der Portvorrat zur knappen Größe wird.

Die Portfreigabe betrifft die eingehende Richtung und damit feste Zielports.

Weblinks

Erstellt: · Überarbeitet: