Generiere zufällige TCP- oder UDP-Portnummern in beliebigen Bereichen und überspringe automatisch wohlbekannte und häufig gebundene Dienst-Ports, damit deine lokalen Dienste nicht kollidieren.
Eine Portnummer, die sonst niemand auf deinem Rechner haben will. Wähle, wie viele Ports du brauchst und aus welchem Bereich gezogen wird. Ports von wohlbekannten Diensten werden standardmäßig übersprungen, sodass die Zahlen, die du erhältst, kaum mit etwas bereits Laufendem kollidieren.
–
Eine Portnummer wählen, die nicht kollidiert
Wie der Portraum aufgeteilt ist
Ein TCP- oder UDP-Port ist eine 16-Bit-Zahl, also läuft der nutzbare Bereich von 0 bis 65535. IANA teilt diesen Raum in drei Teile. Die Ports 0 bis 1023 sind die System- oder wohlbekannten Ports, reserviert für Standarddienste wie HTTP auf 80 und SSH auf 22; das Binden eines davon erfordert auf Unix-artigen Systemen normalerweise Root oder eine explizite Berechtigung. Die Ports 1024 bis 49151 sind registrierte Ports, auf Anfrage bestimmten Anwendungen zugewiesen — PostgreSQL auf 5432 und MySQL auf 3306 leben hier. Die Ports 49152 bis 65535 sind der dynamische oder ephemere Bereich, reserviert für temporäre clientseitige Zuweisungen.
Für einen lokalen Entwicklungsdienst ist der „sweet spot" der registrierte Bereich oberhalb von 1024, der sowohl den privilegierten Block als auch den ephemeren Block meidet. Das ist der Grund, warum dieser Generator standardmäßig 1024 als Untergrenze nimmt. Unterhalb von 49152 zu bleiben ist wichtiger, als es klingt: Dein Betriebssystem zieht aus dem ephemeren Bereich, jedes Mal wenn ein Programm eine ausgehende Verbindung öffnet, also kann ein dort geparkter Dienst seinen Port nach einem Neustart schon belegt vorfinden.
Warum das Überspringen wohlbekannter Ports hilft
Allein Zufall verhindert keine Kollisionen. Ein Zufallszug kann leicht auf 3306, 5432, 6379 oder 8080 landen, und auf einer funktionierenden Entwicklermaschine sind das genau die Zahlen, die am ehesten schon belegt sind. Die hier verwendete Überspringliste deckt die klassischen Unix-Dienste, die gängigen Datenbanken und Message-Broker sowie die Ports ab, die beliebte Frameworks standardmäßig wählen, wie 3000 für Node-Werkzeug und 8000 oder 8080 für lokale HTTP-Server.
Sie zu überspringen kostet fast nichts — der Pool enthält weiterhin Zehntausende Kandidaten — und es beseitigt die häufigste Quelle eines „Port bereits in Benutzung"-Fehlers. Wenn du bewusst eine dieser Zahlen willst, schalte die Option aus und der volle Bereich wird wieder verfügbar.
Bedenke, dass dies ein probabilistisches Hilfsmittel ist, keine Reservierung. Das Werkzeug kann deine Maschine nicht inspizieren, also kann es nicht wissen, dass etwas lauscht. Um zu bestätigen, dass ein Port wirklich frei ist, prüfe ihn lokal mit lsof -i :PORT auf macOS oder Linux, ss -ltnp auf modernem Linux oder netstat -ano | findstr :PORT auf Windows.
Ports in Containern und CI
Container- und CI-Umgebungen ändern die Rechnung. Innerhalb eines Containers ist der Portraum normalerweise privat, also können zwei Container beide auf 8080 lauschen, ohne Konflikt; das Kollisionsrisiko wandert auf die Host-Seite, wo veröffentlichte Ports einen Namensraum teilen. Einen zufälligen Host-Port zu wählen und ihn auf einen festen Container-Port abzubilden, ist ein gängiger Weg, mehrere Kopien desselben Dienstes nebeneinander laufen zu lassen.
Viele CI-Systeme und Orchestrierungswerkzeuge lösen das anders, indem sie den Kernel um einen freien Port bitten: Binde an Port 0, und das Betriebssystem weist einen unbenutzten zu und sagt dir, welchen es wählte. Das ist race-frei und immer korrekt, also bevorzuge es, wenn dein Programm seine Portnummer zur Laufzeit mitgeteilt bekommen kann. Eine generierte Zahl wie die hier ist das richtige Werkzeug, wenn du einen stabilen Wert brauchst, um ihn in eine Konfigurationsdatei, ein docker-compose-Mapping oder ein Teamdokument zu schreiben, bevor irgendetwas läuft.
FAQ
Warum beginnt der Bereich standardmäßig bei 1024?
Ports unter 1024 sind auf Unix-artigen Systemen privilegiert und erfordern normalerweise Root zum Binden. Bei 1024 zu beginnen hält die Ergebnisse für ein normales Benutzerkonto nutzbar.
Sollte ich Ports über 49152 vermeiden?
Normalerweise ja für einen langlebigen Dienst. Dieser Bereich ist, wo das Betriebssystem ephemere Client-Ports zieht, also kann ein dort geparkter Dienst seine Nummer nach einem Neustart schon vergeben finden.
Prüft das, ob der Port wirklich frei ist?
Nein. Die Seite läuft vollständig in deinem Browser und kann dein System nicht inspizieren. Verifiziere mit `lsof -i :PORT`, `ss -ltnp` oder `netstat -ano | findstr :PORT`, bevor du dich auf eine Zahl festlegst.
Welche Ports schließt die Überspring-Option aus?
Die klassischen Unix-Dienste, gängige Datenbanken und Broker wie MySQL, PostgreSQL, Redis, RabbitMQ, MongoDB und Elasticsearch sowie beliebte Framework-Standardwerte wie 3000, 8000, 8080 und 8443.
Ist der Zufall kryptografisch sicher?
Er nutzt die Web Crypto API, wenn der Browser sie bereitstellt, mit Ablehnungs-Stichproben, damit der Zug gleichmäßig bleibt, und fällt nur auf Math.random zurück, wenn Crypto nicht verfügbar ist.
Was ist der Unterschied zwischen einem TCP- und einem UDP-Port?
Es sind getrennte 65536-Einträge-Räume, also sind TCP 8080 und UDP 8080 unabhängig und können gleichzeitig von verschiedenen Programmen genutzt werden. Die Zahlen, die dieses Werkzeug erzeugt, funktionieren für beide.