
いくつかの Linux サービスを非標準ポートに設定したいのですが、有効な最高ポート番号は何ですか?
答え1
(2^16)-1、つまり 0 ~ 65,535 (-1 はポート 0 が予約されていて使用できないためです)。(編集済み: o_O Tync がポート 0 は使用できないことを思い出させ、Steve Folly がポート数ではなく最大ポート番号を尋ねていることを思い出させてくれました)
しかし、おそらくあなたは間違った方法でこれを行っています。非標準ポートの賛否を議論する人々がいます。私は、非標準ポートは最もカジュアルなスキャナ以外には無関係であり、最もカジュアルなスキャナは、最新のソフトウェアと適切なファイアウォール技術、そして強力なパスワードを使用することで阻止できると言います。言い換えれば、セキュリティのベストプラクティスです。
答え2
1~65535のポートが利用可能で、1~1023の範囲のポートは特権これらのポートをリッスンするには、アプリケーションを root として実行する必要があります。
答え3
1-65535 は正当な TCP ポートであり、1-1023 は既知のポート サービス用であることは事実です。一時ポートが確立された後に独自のサービスを開始すると、ランダムな問題が発生する可能性があります。知らない人もいるかもしれませんが、一時ポートとは、リモート エンドポイント (またはそれに類するもの) 用にローカルに接続されているポートです。したがって、ポート 20001 でリッスンする TCP サービスを作成するとします。今日は問題ないかもしれませんが... 明日は問題ないかもしれません。しかし、ある日、サービスが起動して 20001 にバインドしようとすると、一時ポートとして取得されたために失敗する可能性があります。解決策があります。管理者または自分で、サーバーのシステム一時ポート範囲ポリシーを変更する必要があります。Linux システムでは、次の 2 つの手順で実行されます。
- 動的に
- 永久に
再起動する予定がない限り、両方の手順を実行する必要があります (再起動する場合は、動的手順は必要ありません)。範囲を 40000 から 65535 まで設定するには、次の手順を実行します。
動的
echo 40000 65535 > /proc/sys/net/ipv4/ip_local_port_range
または
sysctl -w net.ipv4.ip_local_port_range="40000 65535"
永続
/etc/sysctl.conf に以下を追加します。
net.ipv4.ip_local_port_range = 40000 65535
現在の設定を確認したり、変更を確認するには:
/sbin/sysctl net.ipv4.ip_local_port_range
出力は次のようになります。
net.ipv4.ip_local_port_range = 9000 65500
サーバーの目的を必ず理解してください。範囲を狭めすぎると、他の問題が発生する可能性があります。
ハッピーコーディング!(または何をするにしても)
答え4
65,535 と言っている人たちは皆正しいです。
しかし!!! カーネルの調整可能なパラメータを慎重に操作することで、Linux にもっと使用させるように指示できます。一部の商用 UNIX システムでは、技術的に範囲外のポートで問題なくサービスを実行できます。ファイアウォール/ACL で保護されたネットワークの一部を回避する非常に簡単な方法でもあります! :P
以前は tcp/99999 で 2 番目の Telnet サーバーを実行していましたが、常に正常に動作していました。一般的な特権ポート (1 ~ 1024) が ACL またはネットワーク ファイアウォールによってブロックされている場合でも動作しました。
65,535 を超えるポートをスキャンする人はほとんどいません。ほとんどのネットワーク機器は、定義された範囲 (0 ~ 65535) 外のものを検査できず、ルールによって指示されない限り、トラフィックを盲目的に転送します。現在、64 ビット システムがあるため、上限の範囲は技術的には 64 ビットの境界です。ネットワークがトラフィックを通過させるという意味ではありませんが、通常は、ドロップまたは拒否するルールがない限り、あらゆるトラフィックを通過させます。