DNS.EXE立即分配5000个以上的端口

该命令通过DNS.EXE清除所有打开的UDP端口

net stop dns 

重新启动DNS服务后,DNS.EXE分配5000+端口。

 net start dns 

它不消耗大量的内存或CPU。 不过,由于超时,我注意到/警告了许多服务器的http / smtp / pop3连接问题。 我刚刚通过DNS.EXE检查并发现了大量的开放端口。 Currports显示UDP本地端口从50000到56000,本地地址是::和远程地址是空的。 netstat的最后一行 – 一个命令如下:

 UDP [::]:55976 *:* UDP [::]:55977 *:* UDP [::]:55978 *:* UDP [::]:55979 *:* UDP [::]:55980 *:* UDP [::]:55981 *:* UDP [::]:55982 *:* 

之前我没有注意到这些端口,所以我不确定它是否可以。 你怎么看? 我没有重新启动服务器和监控/警报邮件不会继续。

这是分发给地址MS08-037的修补程序的众所周知的 副作用 ,因为此修补程序旨在降低用于DNS响应的端口的可预测性。

您可以通过定义较低的套接字池大小来限制使用的端口数量,如本文所述 :

使用dnscmd.exe

  • 打开提升的命令提示符(以pipe理员身份运行…)
  • 发出dnscmd /Config /SocketPoolSize <value>其中是一个0到10000之间的数字

使用regedit.exe

  • 打开regedit.exe并展开HKLMconfiguration单元
  • 导航到SYSTEM\CurrentControlSet\services\DNS\Parameters
  • 如果尚不存在,则创build一个名为SocketPoolSize的新DWORD
  • 设置0到10000之间的小数值
  • 重新启动DNS服务器服务: net stop dns && net start dns

请注意,设置值太低,有效击败了MS08-037的目的

如果您使用的是Windows Server 2008 R2,并且只想确保DNS不使用多个单独的UDP端点,则还可以指定一个端口范围列表,以排除DNS的使用。