前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >dnscache服务很关键,我们要警惕一些软件比如openvpn对dnscache服务的注册表的改动

dnscache服务很关键,我们要警惕一些软件比如openvpn对dnscache服务的注册表的改动

原创
作者头像
Windows技术交流
修改2024-07-26 11:17:10
670
修改2024-07-26 11:17:10
举报
文章被收录于专栏:Windows技术交流

遇到一例服务器无法访网页的问题:ping IP 是正常的,ping域名会报错找不到IP地址,服务器可以远程,网络本身没有问题,判断属于系统内部问题,尝试下面的命令不行

代码语言:txt
复制
netsh winsock reset
ipconfig /flushdns
ipconfig /registerdns

奇怪的是nslookup是能正常解析到的,最后发现是DNS注册表被改了,是被一个VPN软件修改的,解决方法是删掉DnsPolicyConfig这个子目录,然后重启,机器网络就完全正常了

代码语言:txt
复制
HKLM\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\DnsPolicyConfig
代码语言:txt
复制
reg delete "HKLM\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\DnsPolicyConfig" /f
Remove-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\DnsPolicyConfig" -Recurse -Force

类似现象的问题:

代码语言:txt
复制
现象:本地连接ncpa.cpl打不开、任务管理器taskmgr打不开、cmd或powershell卡住、eventvwr打不开、浏览器卡住、RDP远程卡住、ping ip是通的、ping域名没有反应、云监控agent报错并丢失基础监控图像、openvpn等业务服务报错、系统服务CryptSvc报错、系统服务NlaSvc报错(以上现象,重启机器后全都恢复正常)

整体上,是相近的case

因为dnscache服务太重要了

dnscache对应的svchost在一些情况下耦合了好几个很关键的系统服务,dnscache出问题,则牵一发动全身

也许触发条件就是特定业务,比如openvpn,至少从注册表来说,openvpn会改动dnscache服务的注册表,而dnscache服务对应的svchost.exe是关键系统进程,并且在一些情况下会耦合好几个关键系统服务,可能会导致svchost.exe死锁,最终在一定条件下卡死,只能重启机器解决,具体可以参考下我这篇文档

代码语言:javascript
复制
dnscache服务很关键,我们要警惕一些软件比如openvpn对dnscache服务的注册表的改动
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\DnsPolicyConfig

对于耦合的关键服务,如果想解耦变成独立的(own模式),以dhcp服务为例,可以这样调整

代码语言:txt
复制
sc.exe config dhcp type= own obj= LocalSystem

1703及其之后的系统(即server2019、2022),在≥3.5G内存的机器上,svchost.exe默认是解耦关键系统服务的,<3.5G的机器上,svchost.exe则默认是耦合模式。 1703之前的低版本系统(2008R2、2012R2、2016),不论内存多大,svchost.exe默认都是耦合模式,即Dnscache、CryptSvc、NlaSvc等关键系统服务是耦合在同一个pid的svchost.exe的。 耦合模式的情况下,Dnscache有问题的时候会影响cryptsvc和网络通讯(比如影响内网域名解析继而影响云监控等内网服务上报数据),并会导致整个系统卡顿、远程卡死,尤其是涉及用户登录、证书验证的场景,比如远程、浏览器等。有现场的系统可能伴随Cryptographic Services(CryptSvc)、Network Location Awareness(NlaSvc)的报错日志。针对这种情况,可以试试临时解决方案(kill dnscache对应的pid)。

代码语言:javascript
复制
powershell能打开的话,执行这几句powershell:
sc.exe queryex DNSCache
sc.exe queryex cryptsvc

$DNSCachePID=(((sc.exe queryex DNSCache) |findstr PID) -split ":")[1].Trim()
taskkill.exe /f /pid $DNSCachePID

sc.exe start DNSCache 2>&1 >$null
sc.exe start cryptsvc 2>&1 >$null

tasklist /svc|findstr /i "dns cryptsvc"

sc.exe queryex DNSCache
sc.exe queryex cryptsvc


powershell不能的话,打开cmd:

tasklist /svc|findstr /i "dns cryptsvc" 看下dnscache对应的pid,然后执行

taskkill.exe /f /pid 后面跟dnscache对应的pid,kill后会自动拉起一个新的pid

如果powershell、cmd、TAT都无法下发指令,且图形界面也无法重启dnscache服务,则只能重启机器恢复
如果powershell、cmd、TAT都无法下发指令,且图形界面也无法重启dnscache服务,则只能重启机器恢复
如果powershell、cmd、TAT都无法下发指令,且图形界面也无法重启dnscache服务,则只能重启机器恢复

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档