Windows ServerのDNSが大量にポートを確保するのを止める

目次

Windows ServerでDNSサーバを有効にすると、かなり多くのポートをListenするようなので、数を減らすメモ

結論

dnscmd /config /socketpoolsize 250
net stop dns && net start dns

# 確認: DNS.exeが確保しているポート数が上記で設定した数(250 x 2 = 500)になっていることを確認する。
netstat -ano

そもそも

初期設定ではIPv4, IPv6それぞれで2500ポートずつ、合計5000ポートを確保する設定になっている。

古いバージョンのドキュメントだが、
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/ee649174(v=ws.10)?redirectedfrom=MSDN
によると、DNSキャッシュポイズニング対策として、このプールの中からランダムにポートを使用してDNSの通信を行っているそう。

そのため、今回の設定を入れると、DNSキャッシュポイズニングには弱くなるかもしれないので、要注意。

また、これによって確保されているポートは使うことができないので、もし使いたい場合は以下のコマンドでプールから除外する。

dnscmd /Config /SocketPoolExcludedPortRanges <excluded port ranges>