web-dev-qa-db-ja.com

内部アプリケーションに最適なTCPポート番号の範囲

私は、各内部アプリケーションが個々のTomcatインスタンスで実行され、特定のTCPポートを使用する場所で働いています。 サーバー上の他のプロセスとのポート番号の衝突を避けるために、これらのアプリに使用する最適なIANAポート範囲は何ですか?

http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml に基づいて、これらは現在私が見ているオプションです:

  1. システムポート(0〜1023):サーバーはこの範囲の標準ポートでサービスを実行している可能性があるため、これらのポートは使用しません。
  2. ユーザーポート(1024〜49151):アプリケーションが内部であるため、IANAにアプリケーションの番号を予約するよう要求するつもりはありません。ただし、同じポートが別のプロセス(1521のOracle Net Listenerなど)で使用される可能性を減らしたいと思います。
  3. 動的および/またはプライベートポート(49152-65535):この範囲は、カスタムポート番号に最適です。私の唯一の懸念は、これが起こるかどうかです。

    a。ポートXを使用するようにアプリケーションの1つを構成します
    b。アプリケーションは数分または数時間(アプリの性質に応じて)ダウンし、しばらくポートを使用しません。
    c。たとえば、そのプロセスが別のサーバーへのTCP接続を必要とするクライアントとして機能する場合、オペレーティングシステムは別のプロセスにポート番号Xを割り当てます。ダイナミックレンジ内に収まり、オペレーティングシステムに関する限りXが現在使用されていない場合、これは成功します。
    d。ポートXが既に使用されているため、アプリの起動に失敗します

81
Juanal

どうして気にするのか分かりません。 「1024未満のポートを使用しない」特権ルール以外に、任意のポートを使用できる必要があります。これは、クライアントが任意のIPアドレスおよびポートと通信できるように構成する必要がある!

そうでない場合、それらはあまりうまくいっていません。戻って適切に実行します:-)

つまり、IPアドレスXおよびポートYでサーバーを実行してから、その情報を使用してクライアントを構成します。次に、mustXと競合する別のサーバーをYと競合する場合は、新しいポートを使用するようにサーバーとクライアントを再構成します。これは、クライアントがコードであっても、ブラウザにURLを入力する人であっても当てはまります。

私は、あなたのように、IANAによって割り当てられた番号を取得しようとはしません。それは、多くの多く環境がそれらを使用する(SSH、FTP、またはTELNETを考えてください).

あなたのネットワークはyourネットワークであり、サーバーをポート1234(または、さらにはTELNETまたはFTPポート)にしたい場合、それはあなたのビジネスです。私たちのメインフレーム開発エリアでは、ポート23が3270ターミナルサーバーに使用されています。これは、telnetとは大きく異なるものです。メインフレームのUNIX側にtelnetする場合、ポート1023を使用します。ポート1023を指定せずにtelnetクライアントを使用すると、telnetプロトコルを何も知らないサーバーに接続するため、面倒な場合があります。 telnetクライアントから適切に実行します。

telnet big_honking_mainframe_box.com 1023

本当にできないクライアント側を構成可能にし、48042のように2番目の範囲から1つを選択して使用するだけで、それらのボックス上の他のソフトウェア(将来追加されるものを含む)を宣言します邪魔にならないようにしてください。

26
paxdiablo

IANAから割り当てられたポート番号をダウンロードし、使用されているポートをフィルターで除外し、各「未割り当て」範囲を使用可能なほとんどのポートの降順で並べ替えることにしました。 csvファイルには、「未割り当て」とマークされた範囲が他のポート番号予約と重複しているため、これは機能しませんでした。assignedポート番号の範囲を手動で拡張し、割り当てられたすべてのポート番号のリストを残しました。次に、そのリストをソートし、未割り当ての範囲の独自のリストを生成しました。

このstackoverflow.comページは、トピックに関する私の検索で非常に高いランク付けされたので、私はここに興味のある他の人のために最大の範囲を投稿すると思いました。これらは、TCPとUDPの両方であり、範囲内のポートの数は少なくとも500です。

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

ソース(CSVダウンロードボタン経由):

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

102
David Vereb

簡単な答え:未割り当てのユーザーポートを使用する

達成者の答えを超えて-リソース発見ソリューションを選択して展開します。サーバーがプライベートポートを動的に選択するようにします。クライアントにリソース検出を使用させます。

リッスンするポートが使用できないためにサーバーが失敗するリスクは現実的です。少なくともそれは私に起こった。別のサービスまたはクライアントが最初にそこに到達する場合があります。

クライアントに動的に配布されるプライベートポートを回避することにより、クライアントからのリスクをほぼ完全に減らすことができます。

ユーザーポートを使用する場合、別のサービスからのリスクは最小限です。割り当てられていないポートのリスクは、別のサービスがそのポートを使用して(または動的に)使用することだけです。しかし、少なくともそれはおそらくあなたの管理下にあります。

ユーザーポートを含むすべてのポート割り当てを含む巨大なドキュメントはこちらです http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.txt 未割り当てのトークンを探します。

4
Ben Hyde