Linux Ephemeral Portの範囲を変更することの安全性


14

Linuxボックスに次の一時ポート範囲が表示されます。

sysctl net.ipv4.ip_local_port_range
net.ipv4.ip_local_port_range = 32768    61000

ポート範囲を16000前後から開始するように拡張したいのですが、ここで簡単に質問します。コンテキスト内の範囲を他のアプリケーションに変更することはどれくらい安全ですか。他のアプリケーションはこの変更の影響を受けますか?アプリケーションは、指定されたポート範囲のポートを使用している場合にのみ影響を受けることを理解しています。しかし、一般的に、この種の問題はどのように対処されますか?


他のアプリケーションに影響があるとは思いませんが、わかりません。興味深い質問。
ikrabbe

正しい。他のドキュメントを検索しようとしても、他のアプリケーションに影響はありませんでした。次の2つのリンクは、私がこの問題に直面した理由の優れた説明です: vincent.bernat.im/en/blog/2014-tcp-time-wait-state-linux.html ncftp.com/ncftpd/doc/misc /ephemeral_ports.html-
アシュウィン

@ikrabbeたとえば、ブラウザが一時的なポートを開いてWebサイトにアクセスし、誰か/ものが偶然そのポートを使用するアプリケーションを起動しようとすると、他のアプリケーションに確実に影響します。アプリケーションは失敗します。
goldilocks

3
完全を期すために、ポート番号の範囲を編集するための構文は次のとおりです。$ sudo sysctl -w net.ipv4.ip_local_port_range = "15000 61000"
Ashwin

回答:


10

一時ポート範囲を変更すると、Mesosを使用している場合に問題が発生する可能性があります。

Mesosは、ホストのリソースをさまざまなMesosフレームワークにアドバタイズします。Mesosフレームワークは、アドバタイズされたリソースを使用することを選択できます。アドバタイズされるリソースには、CPU、メモリ、ポートなどが含まれます。Mesosがアドバタイズするポートのデフォルトセットは31000-32000です。これにより、デフォルトのLinux一時ポート範囲32768-61000との衝突が回避されます。

特に、Mesosはポートが他のプロセスで使用されているかどうかを知らず、オーケストレーションするエンティティ(Mesos TasksMesos Executors)へのポートの割り当てを追跡するだけです。そのため、一時ポート範囲をMesosポート範囲と重複するように変更すると、任意のプロセスが実際にはそれらの「Mesosポート」の1つである一時ポートを使用する可能性があります。これにより、MesosがそのポートをMesos Frameworkに提供し、Mesos Executorsおよび/またはMesos Tasksがポートにバインドできなくなるため、ランダムに失敗する可能性があります。

一時ポート範囲を広げる必要があり、Mesosを実行する必要がある場合は、mesos-slave(すぐに名前が変更されるmesos-agent)構成パラメーターを使用して、アドバタイズされたポートを変更できます--resources


4

ローカル/etc/servicesファイルでその範囲内にあるものを調べることにより、影響を受ける可能性のあるサービスのリストを取得できます。例:

awk '/^#/ { next } $2+0 >= 16000 && $2+0 < 32768 { print }' /etc/services

または、権威ある場所で:

wget http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.csv
awk -F, '$2+0 >= 16000 && $2+0 < 32768 { print }' service-names-port-numbers.csv

awkスクリプトのおかげで、サービスにリストされているポートの識別に間違いなく役立ちます!
アシュウィン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.