此命令清除 DNS.EXE 开放的所有 UDP 端口
net stop dns
重新启动DNS服务后,DNS.EXE分配了5000+个端口。
net start dns
它不消耗大量内存或 CPU。但是我注意到/警告了许多由于超时而导致的与服务器的 http/smtp/pop3 连接问题。我刚刚检查并发现 DNS.EXE 有大量开放端口。Currports 显示从 50000 到 56000 的 UDP 本地端口,本地地址为 ::,远程地址为空。netstat - a 命令的最后几行如下:
UDP [::]:55976 *:*
UDP [::]:55977 *:*
UDP [::]:55978 *:*
UDP [::]:55979 *:*
UDP [::]:55980 *:*
UDP [::]:55981 *:*
UDP [::]:55982 *:*
我之前没有注意到这些端口,所以我不确定这是否可行。你怎么看?我确实重新启动了服务器,但监控/警报邮件没有继续。
答案1
这是一个知名 边 影响分发到地址的修补程序MS08-037因为此修补程序旨在降低用于 DNS 响应的端口的可预测性。
您可以通过定义较低的套接字池大小来限制使用的端口数量,如本文:
使用dnscmd 工具
- 打开提升的命令提示符(以管理员身份运行...)
- 问题0 到 10000 之间的
dnscmd /Config /SocketPoolSize <value>
数字<value>
使用 regedit.exe
- 打开
regedit.exe
并展开HKLM
蜂巢 - 导航
SYSTEM\CurrentControlSet\services\DNS\Parameters
- 如果尚不存在,则创建一个
DWORD
名为SocketPoolSize
- 设置 0 至 10000 之间的十进制值
- 重新启动 DNS 服务器服务:
net stop dns && net start dns
请注意,将值设置得太低会严重违背 MS08-037 的目的
如果您使用的是 Windows Server 2008 R2,并且只想确保 DNS 不使用一些单独的 UDP 端点,那么您还可以指定要被 DNS 排除使用的端口范围列表:
dnscmd /Config /SocketPoolExcludedPortRanges <start>-<end>