[ADSI] 「私の環境の一時ポート数が尋常じゃないわ!!」と焦る、その前に~ 一時ポートの割り当ての変更 (Vista、Server 2008) など~

みなさまごきげんよう。ういこです。今日は、Windows Vista と Server 2008 で 一時ポートの割り当てについてちらっと。

実は、Windows Vista、Windows Server 2008 では一時ポートの割り当てが変更になってたんですねぇ。

The default dynamic port range for TCP/IP has changed in Windows Vista and in Windows Server 2008

https://support.microsoft.com/kb/929851

Vista などで実際の一時ポートの割り当て範囲を確認されたい場合、netsh コマンドを使用して確認することができます。

> netsh interface ipv4 show dynamicport tcp

規定では、HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\TcpipParameters 配下の MaxUserPort というキーは存在しません。

この場合は 1025 - 5000 の範囲で割り当てが行われます。

しかし、Windows XP、Windows Server 2003 でも、グループ ポリシーやMicrosoft Exchange のインストールなどで一時ポートの割り当て数が変更になっている場合があります。

ちなみに、私、ひとつ前の記事の検証をしていて、ポート数がえらいことになってて一瞬私嘘かいちゃったかと焦ったんですが、どうやら会社の私の所属するドメインでは、 XP / 2003 でも MaxUserPort キーが設定されていて、限界まで拡張されていたようです。ああ、焦ったー。

こうした環境でのポート枯渇の調査は、netstat -a の結果を行数のでるエディタなどにコピーし、行数を数える方法が簡単かつ確実かと思います。

例) MaxUserPort が 0x0000fffe (65534) である環境の netstat -n 以下では、33320 という非常に大きな値のポート番号に割り当てられていることがわかります。

TCP  157.60.21.201:33320  157.60.23.144:389   TIME_WAIT

~ ういこう@茶色くない弁当を作るのって難しいよね~