在 Windows 中,有一个名为 DNS 客户端服务 (dnscache) 的服务会缓存 DNS 名称并注册完整的计算机名称。当它运行时仅 svchost.exe连接到 DNS 服务器。然后我使用以下流程停止并删除该服务:
将网络存储接口服务 (NSI) 的依赖项设置为仅远程过程调用 (RPCSS)::
reg add "HKLM\SYSTEM\CurrentControlSet\Services\nsi" /V "DependOnService" /T REG_MULTI_SZ /D "RPCSS" /F
将网络连接助手服务 (NcaSvc) 的依赖项设置为仅基础过滤引擎 (BFE)::
reg add "HKLM\SYSTEM\CurrentControlSet\Services\NcaSvc" /V "DependOnService" /T REG_MULTI_SZ /D "BFE" /F
- 停止并删除 DNScache 服务::
sc stop "Dnscache" & sc delete "Dnscache"
删除 DNScache 服务后,所有连接到互联网的可执行文件(包括所有浏览器)都会发送和接收 DNS 数据包(使用 netstat)。通过此过程,可以明显看到 Windows 不会保存 dnscache。您可以使用 来查看ipconfig /displaydns
。
问题:为什么删除 DNScache 服务后每个可执行文件都会发送 DNS 请求?
答案1
您所描述的行为正是您所期望的。所有 DNS 请求通常由 DNScache 服务处理,该服务将为同一台计算机上运行的任何应用程序提供服务。删除它后,所有程序都必须发出 DNS 查询,因为它们无法再利用 DNS 缓存服务。
找到的信息在线的确认 DNScache 服务确实实现了它的名称所表示的功能:缓存 DNS 查询。
DNS 客户端(DNScache)服务有什么作用?解析和缓存域名:找到一个域名的IP地址,并短时间保存该关联。
如果禁用会发生什么情况?如果服务停止,DNS 名称将继续解析。但是,DNS 名称查询的结果将不会被缓存。
另外,删除 DNScache 服务的目的是什么?除了试验系统以了解其工作原理外,我看不出有任何优势或目标。
我不会动用 Dnscache 服务。