Bester TCP-Portnummernbereich für interne Anwendungen [geschlossen]

94

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:

  1. 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
  2. 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.
  3. 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

Juanal
quelle
2
Ich habe hier eine ähnliche Frage auf stackoverflow.com/a/38141340/3333759 beantwortet, die Sie möglicherweise hilfreich finden.
Adrianwadey

Antworten:

31

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 Xund Port aus Yund 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 steht Y, 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:

telnet big_honking_mainframe_box.com 1023

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 .

paxdiablo
quelle
Vielen Dank. Nachdem ich Ihre Antwort gelesen und ein wenig darüber nachgedacht hatte, entschied ich mich für die Option, einen Port im zweiten Bereich zu verwenden. Wir haben 46xxx ausgewählt, da IANA derzeit nur sehr wenige Ports in diesem Subrange- Link zugewiesen hat . Wir haben den dritten Bereich aufgrund des theoretisch möglichen (wenn auch höchst unwahrscheinlichen) Szenarios, das ich beschrieben habe, nicht ausgewählt.
Juanal
116

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.

Total   Start   End
829     29170   29998
815     38866   39680
710     41798   42507
681     43442   44122
661     46337   46997
643     35358   36000
609     36866   37474
596     38204   38799
592     33657   34248
571     30261   30831
563     41231   41793
542     21011   21552
528     28590   29117
521     14415   14935
510     26490   26999

Quelle (über den CSV-Download-Button):

http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml

David Vereb
quelle
"Es ist sowohl tcp als auch udp" wie in - Ich kann all diese Ports öffnen 44100-44199. Sowohl udp 44100-44199 als auch tcp 44100-44199 sind kostenlos?
Lapsio
1
Unglücklicherweise nicht. Seit ich gepostet habe, gab es zusätzliche Reservierungen. Es gibt jetzt einen Port in Ihrer Reichweite. "Z-Wave-Tunnel 44123 TCP Z-Wave Secure Tunnel"
David Vereb
Zum Glück glaube ich nicht, dass ich Z-Wave Smart Home-Sicherheitssysteme auf dem Entwicklungsserver installieren werde. lol. Zuvor verwendete Portbereiche deckten viele wichtige Dinge ab, einschließlich einiger VMWare-Tools, sodass es viel schlimmer war. Wenn das die einzige Kollision für jetzt ist, dann bin ich cool damit danke :)
Lapsio
3
Deshalb habe ich beschlossen, die Liste erneut auszuführen, um einen neuen Satz von Bereichen zu erstellen, die auf neueren Daten basieren. Es stellt sich heraus, dass die "nicht zugewiesenen" Bereiche nicht richtig nummeriert zu sein scheinen. Beispielsweise ist 43124-44320 als nicht zugewiesen markiert, 44123, das sich in diesem Bereich befindet, wird jedoch direkt darüber als zugewiesen aufgeführt. Es scheint, dass ich die nicht zugewiesenen Bereiche manuell erstellen muss, da sie falsch berechnet zu sein scheinen.
David Vereb
6

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 .

Ben Hyde
quelle
4
Ist es nicht besser, einen zugewiesenen Port für ein Protokoll zu verwenden, das in Ihrem Netzwerk niemals verwendet wird? Ein nicht zugewiesener Port kann jederzeit zugewiesen werden und Probleme verursachen.
Adrianwadey