Ich arbeite an einem Ort, an dem jede unserer internen Anwendungen auf einer einzelnen Tomcat-Instanz ausgeführt wird und einen bestimmten TCP-Port verwendet. Was wäre der beste IANA-Portbereich für diese Apps, um Kollisionen der Portnummern mit anderen Prozessen auf dem Server zu vermeiden?
Basierend auf http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml sind dies die Optionen, wie ich sie derzeit sehe:
- Systemports (0-1023): Ich möchte keinen dieser Ports verwenden, da auf dem Server möglicherweise Dienste an Standardports in diesem Bereich ausgeführt werden
- Benutzerports (1024-49151): Da die Anwendungen intern sind, beabsichtige ich nicht, IANA aufzufordern, eine Nummer für eine unserer Anwendungen zu reservieren. Ich möchte jedoch die Wahrscheinlichkeit verringern, dass derselbe Port von einem anderen Prozess verwendet wird, z. B. Oracle Net Listener auf 1521.
- Dynamische und / oder private Ports (49152-65535): Dieser Bereich ist ideal für benutzerdefinierte Portnummern. Meine einzige Sorge ist, ob dies passieren sollte:
ein. Ich konfiguriere eine meiner Anwendungen für die Verwendung von Port X
b. Die Anwendung ist einige Minuten oder Stunden lang nicht verfügbar (abhängig von der Art der App), sodass der Port für eine Weile nicht verwendet wird.
C. Das Betriebssystem weist Portnummer X einem anderen Prozess zu, beispielsweise wenn dieser Prozess als Client fungiert, der eine TCP-Verbindung zu einem anderen Server benötigt. Dies ist erfolgreich, da es in den Dynamikbereich fällt und X derzeit für das Betriebssystem nicht verwendet wird, und
d. Die App kann nicht gestartet werden, da Port X bereits verwendet wird
quelle
Antworten:
Ich kann nicht verstehen, warum es dich interessieren würde. Abgesehen von der Berechtigungsregel "Keine Ports unter 1024 verwenden" sollten Sie in der Lage sein, jeden Port zu verwenden, da Ihre Clients so konfiguriert werden können, dass sie mit jeder IP-Adresse und jedem Port kommunizieren können!
Wenn nicht, dann sind sie nicht sehr gut gemacht worden. Geh zurück und mach sie richtig :-)
Mit anderen Worten, führen Sie den Server unter IP-Adresse
X
und Port ausY
und konfigurieren Sie die Clients mit diesen Informationen. Wenn Sie dann feststellen, dass Sie einen anderen Server ausführen müssenX
, der mit Ihrem Konflikt in Konflikt stehtY
, konfigurieren Sie einfach Ihren Server und Ihre Clients neu, um einen neuen Port zu verwenden. Dies gilt unabhängig davon, ob es sich bei Ihren Clients um Code handelt oder ob Personen URLs in einen Browser eingeben.Ich würde wie Sie nicht versuchen, von IANA Nummern zu vergeben, da dies für Dienste gelten soll, die so häufig sind, dass viele, viele Umgebungen sie verwenden (denken Sie an SSH oder FTP oder TELNET).
Ihr Netzwerk ist Ihr Netzwerk, und wenn Sie möchten, dass sich Ihre Server an Port 1234 (oder sogar an den TELNET- oder FTP-Ports) befinden, ist dies Ihr Geschäft. In unserem Mainframe-Entwicklungsbereich wird beispielsweise Port 23 für den 3270-Terminalserver verwendet, der sich stark von Telnet unterscheidet. Wenn Sie mit der UNIX-Seite des Mainframes telneten möchten, verwenden Sie Port 1023. Das ist manchmal ärgerlich, wenn Sie Telnet-Clients ohne Angabe von Port 1023 verwenden, da Sie an einen Server angeschlossen sind, der nichts über das Telnet-Protokoll weiß - wir müssen brechen aus dem Telnet-Client und machen Sie es richtig:
Wenn Sie die Client-Seite wirklich nicht konfigurierbar machen können, wählen Sie eine im zweiten Bereich aus, z. B. 48042, und verwenden Sie sie einfach. Erklären Sie, dass jede andere Software auf diesen Boxen (einschließlich der in Zukunft hinzugefügten) aus dem Weg gehen muss .
quelle
Ich habe beschlossen, die zugewiesenen Portnummern von IANA herunterzuladen, die verwendeten Ports herauszufiltern und jeden "nicht zugewiesenen" Bereich in der Reihenfolge der meisten verfügbaren Ports absteigend zu sortieren. Dies hat nicht funktioniert, da die CSV-Datei als "Nicht zugewiesen" gekennzeichnete Bereiche aufweist, die andere Portnummernreservierungen überlappen. Ich habe die Bereiche der zugewiesenen Portnummern manuell erweitert und eine Liste aller zugewiesenen Portnummern erhalten. Ich habe diese Liste dann sortiert und meine eigene Liste nicht zugewiesener Bereiche erstellt.
Da diese Seite von stackoverflow.com bei meiner Suche nach dem Thema einen sehr hohen Stellenwert hatte, dachte ich, ich würde hier die größten Bereiche für alle anderen Interessierten veröffentlichen. Diese gelten sowohl für TCP als auch für UDP, wobei die Anzahl der Ports im Bereich mindestens 500 beträgt.
Quelle (über den CSV-Download-Button):
http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml
quelle
44100-44199
. Sowohl udp 44100-44199 als auch tcp 44100-44199 sind kostenlos?Kurze Antwort: Verwenden Sie einen nicht zugewiesenen Benutzerport
Antwort des Leistungsträgers - Wählen Sie eine Ressourcenerkennungslösung aus und stellen Sie sie bereit. Lassen Sie den Server dynamisch einen privaten Port auswählen. Lassen Sie die Clients die Ressourcenerkennung verwenden.
Das Risiko, dass ein Server ausfällt, weil der Port, den er abhören möchte, nicht verfügbar ist, ist real. Zumindest ist es mir passiert. Ein anderer Dienst oder ein Kunde könnte zuerst dort ankommen.
Sie können das Risiko eines Clients fast vollständig reduzieren, indem Sie die privaten Ports vermeiden, die dynamisch an Clients ausgegeben werden.
Das Risiko eines anderen Dienstes ist minimal, wenn Sie einen Benutzerport verwenden. Das Risiko eines nicht zugewiesenen Ports besteht nur darin, dass ein anderer Dienst, der konfiguriert ist (oder dyamisch), diesen Port verwendet. Aber zumindest ist das wahrscheinlich unter Ihrer Kontrolle.
Das umfangreiche Dokument mit allen Portzuweisungen, einschließlich Benutzerports, finden Sie hier: http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.txt Suchen Sie nach dem nicht zugewiesenen Token .
quelle