Windows-Server-2008
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 響應的埠的可預測性。
您可以通過定義較低的 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>