LinuxがIANA一時ポート範囲を使用しないのはなぜですか?

LinuxがIANA一時ポート範囲を使用しないのはなぜですか?

ウィキペディアによると

Internet Assigned Numbers Authority(IANA)では、49152〜65535のダイナミックポートまたはプライベートポート範囲をお勧めします。多くのLinuxカーネルはポート範囲32768〜61000を使用しています。

IANAの推奨範囲からわずかな歴史的偏差があるように見えますが、Windows Vista、Windows 7、Windows Server 2008、FreeBSD 4.6+、およびその他の多くのオペレーティングシステムはすべてこの範囲に同意し、Linuxは依然として厄介です。

しかし、詳しく見ると次のようになります。

$ cat /proc/sys/net/ipv4/ip_local_port_range 
32768   61000

Linuxが標準範囲を採用していないのはなぜですか?

ベストアンサー1

IANAが最大1023個のポートのみを割り当てた時代がありました。よりRFC1700。かつてこれは標準でした。ほとんどの場合、RFC ストリームで状況が変化することを発見するのに問題はありませんが、登録から割り当てまでポートを 1024 から 49152 に変更するのに問題があります。

Linuxの歴史によると、2007年に誰かが基本ip_local_port_rangeについて質問しました。高度なポート番号が問題を引き起こす可能性があるという懸念と、49152で始まるスコープは、ポート番号が少なすぎる可能性があるという懸念のために、言及されたLinuxスコープを使用することにしました。プールのポート番号。バラよりこれそしてそのスレッド。当時のアイデアは、32768で始まるものがIANAプロシージャの精神と完全に一致していなくても一貫しているということです。この記事を読んで、私は開発者がほとんどの割り当てが範囲の一番下から始めて上に上がると仮定したと推論しました。この記事を書いた時点で、32768から49152の間に割り当てられたポート番号が100を少し超えていることがわかりました(個々のプロトコルは含まれていません)。したがって、状況は過去5年間でかなりよく維持されました。

範囲が小さすぎると考えられる理由はわかりませんが、2つの理由を想像できます。

  1. ポート番号は、特定の攻撃を防ぐためにランダムに割り当てられます。プールにアドレスが多いほど、この防御効果が良くなります。
  2. 活動量の多いサーバーでは、ポート番号が枯渇する可能性があります。ポートは一時的にすることができますが、すぐに使用されるわけではありません。特に、ソケットはTCPが閉じた後でも数分間持続することができます。

これブログ記事では、2番目のポイントを取り上げ、Linuxシステムにさまざまな範囲のローカルポートを使用させたい場合の答えを提案します。 (/etc/sysctl.dを使用して目的の範囲を定義します。特定の競合が発生した場合に役立つ可能性があるip_local_reserved_portsエントリもあります。これは参照する/proc/sysエントリと一致します。)

それでも。 Linuxデフォルト現在、IANA仕様と互換性がありませんが、所有者が望む場合は、特定のLinuxシステムは問題ありません。

おすすめ記事