DNS.EXE 立即分配 5000 多个端口

DNS.EXE 立即分配 5000 多个端口

此命令清除 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>

相关内容