GNU/Linux >> Linux の 問題 >  >> Linux

Linux ネットワーク ポートの枯渇

主な質問が 2 つあります:

1.

<ブロック引用>

厳密にIPv4で言えば、実際にポートの枯渇はありえますか?

はい。たとえば、すべての接続を NAT IP アドレスに送信する負荷分散ルーターを考えてみましょう。これは、 SRC IP が多い場合に発生する可能性があります 単一の DST IP のボトルネックに接続している .

これは、ウェブサーバーが次のような接続を多数持つ可能性があることを意味します:

[email protected]:~# netstat -pnt
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 173.200.1.18:80      10.100.1.100:49923        ESTABLISHED 13939/nginx: worker
tcp        0      0 173.200.1.18:80      10.200.1.200:10155        ESTABLISHED 13939/nginx: worker
tcp        0      0 173.200.1.18:80      10.10.1.10:14400        ESTABLISHED 13939/nginx: worker
tcp        0      0 173.200.1.18:80      10.10.1.10:50652        ESTABLISHED 13939/nginx: worker
tcp        0      0 173.200.1.18:80      10.20.1.20:57554        ESTABLISHED 13939/nginx: worker 

それはまったく問題ありません。ただし、すべての「外部アドレス」が同じである場合、問題が発生する可能性があります (たとえば、「NAT を実行する大きなルーター <---> 1 つの IP アドレスを持つサーバー」)。

一時的なポートの枯渇が一般的な問題ではない理由を仮定する必要がある場合は、すべてのポートがリッスン サービスと応答するのに十分なリソースを必要とするためだと思います。通常、別のリソース (メモリ、CPU) が最初にボトルネックになります。

ただし、負荷分散会社で働いているときに、個人的にいくつかのポートの枯渇の問題に遭遇しました。

2.使用中のポートがリスニング サービスに問題を引き起こすのはなぜですか?

<ブロック引用>

「これにより、1024 ~ 65535 のエフェメラル ポートを使用できるため、ポート 3306 (たとえば、mySQL) でバインドするサービスがある場合、ポートが使用中であるために起動に失敗することがあります。」

使用中の場合、mySQL サーバーはそのポートにバインドできません (たとえば、localhost:3306 またはすべてのインターフェイスで)。たとえば、次の netstat の 0.0.0.0:80 行を参照してください。 出力?

[email protected]:~# netstat -lnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      PID/Program name
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      964/php-fpm.conf)
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      1660/mysqld     
tcp        0      0 0.0.0.0:842             0.0.0.0:*               LISTEN      1317/inetd      
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      13938/nginx     

これは、ポート 80 が すべて でリッスンしていることを意味します サーバーに対してローカルなインターフェイス。 nginx の前に別のプロセスがポート 80 を保持している場合 サーバーの起動、nginx はそのポートを制御できず、起動手順に失敗する可能性があります。

通常、リスニング サービスには、ホスト マシンから要求される定義済みのポート (または範囲) があるため、ポート 3306 で問題ありません。ポート 80 と 443 は Web サーバー用です。


Linux
  1. UbuntuLinuxのトップポートスキャナー

  2. Linuxでのポートの使用を確認する

  3. Linuxでポートを開く方法

  1. Linux の特定のポートで netstat を使用する方法

  2. Linux コマンドは未使用のポートを取得します

  3. 宛先ポートを定義する Linux SCP

  1. LinuxでSSHポートを変更する方法

  2. Linux – Raspberrypiシリアルポート?

  3. Linux でポートが開いているかどうかを効率的にテストしますか?