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


94

私は、各内部アプリケーションが個々の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が現在使用されていない場合に成功し
    ます。ポートXが既に使用されているため、アプリを起動できません


2
私はここで同様の質問に回答しました。stackoverflow.com/ a / 38141340/3333759参考になると思います。
adrianwadey

回答:


31

あなたが気にかける理由がわかりません。「1024未満のポートは使用しない」特権ルール以外は、次の理由により、任意のポートを使用できるはずです。、クライアントは任意のIPアドレスおよびポートと通信するように構成できる、はずです。

そうでない場合、それらは非常にうまく行われていません。戻ってそれらを適切に実行してください:-)

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

私と同じように、IANAによって割り当てられた番号を取得しようとはしません。これは、SSH、FTP、またはTELNETなどの多くの環境で使用されるほど一般的なサービス用であるためです。

あなたのネットワークはあなたのネットワークであり、もしあなたがあなたのサーバーをポート1234(あるいはそのことについてはTELNETまたはFTPポートさえ)で望むなら、それはあなたのビジネスです。典型的な例として、メインフレーム開発領域では、ポート23は、Telnetとは大きく異なる3270端末サーバーに使用されます。メインフレームのUNIX側にTelnetで接続する場合は、ポート1023を使用します。ポート1023を指定せずにTelnetクライアントを使用すると、Telnetプロトコルをまったく認識しないサーバーに接続するため、煩わしいことがあります。 Telnetクライアントから取り出し、適切に実行します。

telnet big_honking_mainframe_box.com 1023

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


ありがとう。あなたの答えを読んで少し考えた後、2番目の範囲内のポートを使用するオプションを選択することにしました。IANAには現在、このサブレンジリンクに割り当てられているポートがほとんどないため、46xxxを選択しました。私が説明した理論的に可能なシナリオ(非常にありそうもない)のため、3番目の範囲は選択しませんでした。
Juanal 2012年

116

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

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

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


「それはtcpとudpの両方です」44100-44199-udpとtcpの両方でオーディオ44100サンプリングが安全に行われるため、これらのポートをすべて開くことができます。UDP 44100-44199とTCP 44100-44199はどちらも無料ですか?
Lapsio 2016

1
残念だけど違う。投稿してから追加予約がありました。現在、範囲内にポートがあります。"z-wave-tunnel 44123 tcp Z-Wave Secure Tunnel"
David Vereb

幸い、Z-Waveスマートホームセキュリティシステムを開発サーバーにインストールするつもりはありません。以前に使用されたポート範囲は、いくつかのVMWareツールを含む多くの重要なものをカバーしていたため、はるかに悪かった。それが今のところ唯一の衝突であるなら、私はそのおかげでクールです:)
Lapsio

3
そこで、リストをもう一度実行して、新しいデータに基づく新しい範囲のセットを作成することにしました。「割り当てられていない」範囲は正しく番号付けされていないようです。たとえば、43124〜44320は未割り当てとしてマークされていますが、その範囲内にある44123はそのすぐ上に割り当て済みとしてリストされています。未割り当ての範囲は誤って計算されているように見えるため、手動で割り当てを行う必要があるようです。
David Vereb 2016

6

短い答え:割り当てられていないユーザーポートを使用する

達成者の答え-リソース検出ソリューションを選択して展開します。サーバーに動的にプライベートポートを選択させます。クライアントにリソースディスカバリを使用してもらいます。

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

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

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

ユーザポートを含むすべてのポート割り当て、巨大なドキュメントは、ここにある:http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.txtトークン未割り当てのための外観。


4
ネットワークで使用されることのないプロトコルに割り当てられたポートを使用する方がよいのではないですか。割り当てられていないポートはいつでも割り当てられ、問題が発生する可能性があります。
adrianwadey 2016
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.