Windows-Server-2008

DNS.EXE 立即分配 5000+ 埠

  • April 8, 2020

此命令通過 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 響應的埠的可預測性。

您可以通過定義較低的 Socket Pool Size 來限制使用的埠數量,如本文所述

使用dnscmd.exe

  • 打開提升的命令提示符(以管理員身份執行…)
  • 問題dnscmd /Config /SocketPoolSize <value><value>0 到 10000 之間的數字

使用 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>

引用自:https://serverfault.com/questions/558104