为了获取网络适配器信息、删除 DNS 缓存和 IP 地址,并通过 ipconfig /renew6 向 DHCPv6 服务器重新申请IPv6租约,更新 DHCPv6 分配的 IPv6 地址与 DNS;SLAAC 地址不受该命令控制 自动获取 IPv6 地址,可以使用以下步骤和命令。
PS C:\WINDOWS\system32> ipconfig /?
用法:
ipconfig [/allcompartments] [/? | /all |
/renew [adapter] | /release [adapter] |
/renew6 [adapter] | /release6 [adapter] |
/flushdns | /displaydns | /registerdns |
/showclassid adapter |
/setclassid adapter [classid] |
/showclassid6 adapter |
/setclassid6 adapter [classid] ]
其中
ipconfig adapter 连接名称 (允许使用通配符 * 和 ?,参见示例)
选项: 描述:
ipconfig /? 查看 ipconfig 全部帮助文档,列出所有可用参数与简要说明
ipconfig /all 显示完整网络配置信息:网卡 MAC 地址、IP、子网掩码、网关、DNS、DHCP 服务器、主机名、网卡描述等,排查网络基础信息首选
ipconfig /release 释放IPv4地址,向 DHCP 服务器发送释放报文,网卡 IPv4 地址变为 0.0.0.0,断开 DHCP 分配的 IPv4 地址
ipconfig /release6 释放IPv6地址,向 DHCPv6 服务器释放租约,移除 DHCPv6 分配的 IPv6 地址(不影响 SLAAC 自动生成的 IPv6 地址)
ipconfig /renew 重新向 DHCP 服务器请求IPv4地址租约,更新 IPv4 地址、网关、DNS 等 DHCP 下发参数
ipconfig /renew6 向 DHCPv6 服务器重新申请IPv6租约,更新 DHCPv6 分配的 IPv6 地址与 DNS;SLAAC 地址不受该命令控制
ipconfig /flushdns 清空本机 DNS 客户端解析缓存。域名解析异常、DNS 劫持测试、修改 DNS 后刷新缓存常用
ipconfig /registerdns 触发 DNS 客户端,向 DNS 服务器动态注册本机 A 记录(IPv4)与 AAAA 记录(IPv6);AD 域环境更新主机 DNS 记录常用,无需重启
ipconfig /displaydns 查看本机当前 DNS 解析缓存,展示已经解析过的域名、TTL、记录类型、IP,用于排查域名解析缓存污染
ipconfig /showclassid 查看网卡当前的IPv4 DHCP Class ID(类别标识符),DHCP 服务器可根据 ClassID 下发不同策略
ipconfig /setclassid 设置网卡的 IPv4 DHCP Class ID,用于 DHCP 服务器做设备分组、策略分流;不加参数可清空 ClassID
ipconfig /showclassid6 查看网卡当前IPv6 DHCPv6 Class ID
ipconfig /setclassid6 设置网卡 IPv6 DHCPv6 Class ID,用于 DHCPv6 服务器识别客户端分组
补充备注:
1. 部分命令需要管理员权限;
2. release/renew 仅针对 DHCP 获取地址,静态 IP 不受 release/renew 影响;
3. DNS 缓存是客户端缓存,不是 DNS 服务器缓存,`/flushdns` 只清本机。
默认情况下,仅显示绑定到 TCP/IP 的每个适配器的 IP 地址、子网掩码和默认网关。
对于 Release 和 Renew,如果未指定适配器名称,则会释放或更新所有绑定到 TCP/IP 的适配器的 IP 地址租用。
对于 Setclassid 和 Setclassid6,如果未指定 ClassId,则会删除 ClassId。
示例:
ipconfig ... 显示信息
ipconfig /all ... 显示详细信息
ipconfig /renew ... 更新所有适配器
ipconfig /renew EL* ... 更新所有名称以 EL 开头 的连接
ipconfig /release *Con* ... 释放所有匹配的连接,例如“有线以太网连接 1”或“有线以太网连接 2”
ipconfig /allcompartments ... 显示有关所有隔离舱的信息
ipconfig /allcompartments /all ... 显示有关所有隔离舱的详细信息
PS C:\Users\Administrator> ipconfig /?
用法:
ipconfig [/allcompartments] [/? | /all |
/renew [adapter] | /release [adapter] |
/renew6 [adapter] | /release6 [adapter] |
/flushdns | /displaydns | /registerdns |
/showclassid adapter |
/setclassid adapter [classid] |
/showclassid6 adapter |
/setclassid6 adapter [classid] ]
其中
adapter 连接名称 (允许使用通配符 * 和 ?,参见示例)
选项:
ipconfig /? 显示此帮助消息
ipconfig /all 显示完整配置信息。
ipconfig /release 释放指定适配器的 IPv4 地址。
ipconfig /release6 释放指定适配器的 IPv6 地址。
ipconfig /renew 更新指定适配器的 IPv4 地址。
ipconfig /renew6 更新指定适配器的 IPv6 地址。
ipconfig /flushdns 清除 DNS 解析程序缓存。
ipconfig /registerdns 刷新所有 DHCP 租用并重新注册 DNS 名称
ipconfig /displaydns 显示 DNS 解析程序缓存的内容。
ipconfig /showclassid 显示适配器允许的所有 DHCP 类 ID。
ipconfig /setclassid 修改 DHCP 类 ID。
ipconfig /showclassid6 显示适配器允许的所有 IPv6 DHCP 类 ID。
ipconfig /setclassid6 修改 IPv6 DHCP 类 ID。
默认情况下,仅显示绑定到 TCP/IP 的每个适配器的 IP 地址、子网掩码和默认网关。
对于 Release 和 Renew,如果未指定适配器名称,则会释放或更新所有绑定到 TCP/IP 的适配器的 IP 地址租用。
对于 Setclassid 和 Setclassid6,如果未指定 ClassId,则会删除 ClassId。
示例:
> ipconfig ... 显示信息
> ipconfig /all ... 显示详细信息
> ipconfig /renew ... 更新所有适配器
> ipconfig /renew EL* ... 更新所有名称以 EL 开头的连接
> ipconfig /release *Con* ... 释放所有匹配的连接,例如“有线以太网连接 1”或“有线以太网连接 2”
> ipconfig /allcompartments ... 显示有关所有隔离舱的信息
> ipconfig /allcompartments /all ... 显示有关所有隔离舱的详细信息
为了获取网络适配器信息、删除 DNS 缓存和 IP 地址,并通过 ipconfig /renew6 自动获取 IPv6 地址,可以使用以下步骤和命令。
1. 获取网络适配器信息
首先,查看网络适配器信息:
ipconfig /all
2. 删除 DNS 缓存
清除 DNS 缓存的命令是:
ipconfig /flushdns
3. 释放当前的 IP 地址
释放当前的 IP 地址:
ipconfig /release
4. 通过 DHCP 重新获取 IPv6 地址
使用以下命令获取新的 DHCP IPv6 地址:
ipconfig /renew6
5. 自动化命令
你可以将这些命令组合成一个批处理文件(.bat),这样每次只需运行这个文件即可完成所有操作。以下是一个示例批处理文件内容:
@echo off
echo 获取网络适配器信息...
ipconfig /all
echo 清除 DNS 缓存...
ipconfig /flushdns
echo 释放当前 IP 地址...
ipconfig /release
echo 通过 DHCP 重新获取 IPv6 地址...
ipconfig /renew6
echo 完成!
pause
运行批处理文件
- 将上述代码复制到文本编辑器中,保存为
reset_network.bat。 - 右键点击该文件,选择“以管理员身份运行”。
这样就能自动执行所有步骤,完成对 DNS 缓存的清除、IP 地址的释放和 IPv6 地址的获取。
整套批处理命令逐条拆解:底层原理|依赖文件|依赖关系|配套链|逻辑链路
echo 清除 DNS 缓存...
ipconfig /flushdns
echo 释放当前 IP 地址...
ipconfig /release
echo 通过 DHCP 重新获取 IPv6 地址...
ipconfig /renew6
通用前置结论:ipconfig.exe仅为命令行控制前端程序,自身不会收发任何网络报文;所有实际网络交互、缓存管理、租约维护由后台服务承载;调用核心库:iphlpapi.dll、dnsapi.dll,跨进程依靠rpcrt4.dll完成 IPC 通信。
一、ipconfig /flushdns
底层原理
dnsapi.dll 导出函数 DnsFlushResolverCache(),通过本地 RPC 通知 Dnscache(DNS Client,dnscache.dll) 清空内存中全部 DNS 解析缓存(A/AAAA 记录、CNAME、NXDOMAIN 负缓存)。
依赖文件
- 主程序:
ipconfig.exe - API 库:
dnsapi.dll、rpcrt4.dll、kernel32.dll - 后台模块:
svchost.exe -k netsvcs加载dnscache.dll(Dnscache 服务)
依赖关系
逻辑链路
ipconfig.exe → dnsapi.dll → RPC通道 → svchost(Dnscache/dnscache.dll)
↓
清空内存DNS缓存 → 返回结果给控制台
配套链
- PowerShell 等效:
Clear-DnsClientCache - 查看缓存:
ipconfig /displaydns/Get-DnsClientCache - 排错观测:
Microsoft-Windows-DNS-Client/Operational事件日志
二、ipconfig /release
底层原理
0.0.0.0。
依赖文件
- 主程序:
ipconfig.exe - API 库:
iphlpapi.dll、rpcrt4.dll、ws2_32.dll - 后台模块:
svchost.exe -k netsvcs加载dhcpcsvc.dll(Dhcp IPv4 客户端) - 配置持久化:注册表
HKLM\SYSTEM\CurrentControlSet\Services\Dhcp\Parameters\Adapters\{网卡GUID}
依赖关系
逻辑链路
ipconfig.exe → iphlpapi.dll → RPC → svchost(dhcpcsvc.dll)
↓
ws2_32构造DHCPRELEASE报文
UDP 68→67 发送至DHCPv4服务器
网卡IPv4地址清零
配套链
- IPv4 续租配套:
ipconfig /renew - IPv6 释放配套:
ipconfig /release6 - 抓包过滤:
udp.port == 67 or udp.port == 68 - PowerShell:
Remove-NetIPAddress -AddressFamily IPv4
三、ipconfig /renew6
底层原理
RENEW 请求(UDP 546 ↔ 547),更新 DHCPv6 分配的 IPv6 地址、DNS、租期等参数。⚠️ 重要边界:renew6仅针对【有状态 DHCPv6 分配地址】;无法刷新 SLAAC 自动生成的 IPv6 地址(SLAAC 不依赖 DHCPv6)。上一条命令ipconfig /release只释放 IPv4,不影响 IPv6 租约,二者相互独立。
依赖文件
- 主程序:
ipconfig.exe - API 库:
iphlpapi.dll、rpcrt4.dll、ws2_32.dll - 后台模块:
svchost.exe -k netsvcs加载dhcpcsvc6.dll(DHCPv6 客户端)
依赖关系
逻辑链路
ipconfig.exe → iphlpapi.dll → RPC → svchost(dhcpcsvc6.dll)
↓
ws2_32构造DHCPv6 RENEW报文
UDP 546→547 和DHCPv6服务器交互
更新IPv6租约与相关网络参数
配套链
- IPv6 释放配套:
ipconfig /release6 - 抓包过滤:
udp.port == 546 or udp.port == 547 - 事件日志:
Microsoft-Windows-Dhcp-Client/Operational
整套脚本存在的关键运维问题(重点提醒)
ipconfig /release # 释放IPv4
ipconfig /renew6 # 仅续租IPv6
- IPv4 地址释放后,不会自动重新获取 IPv4!
脚本只释放 IPv4,缺少
ipconfig /renew,执行完成后电脑没有 IPv4 地址,断 IPv4 网络。 - IPv4 DHCP 与 IPv6 DHCP 两套独立协议、两套独立客户端模块,互不影响。
- 优化修正版本(如需同时恢复 IPv4 + 刷新 IPv6):
echo 清除 DNS 缓存...
ipconfig /flushdns
echo 释放IPv4地址并重新获取IPv4
ipconfig /release
ipconfig /renew
echo 刷新DHCPv6地址
ipconfig /renew6
服务依赖总览
| 命令 | 依赖后台服务 | 协议端口 |
|---|---|---|
| ipconfig /flushdns | Dnscache | 本地 IPC,无端口 |
| ipconfig /release | Dhcp(dhcpcsvc.dll) | DHCPv4 UDP 67/68 |
| ipconfig /renew6 | Dhcp(dhcpcsvc6.dll) | DHCPv6 UDP 546/547 |
ipconfig /displaydns
一句话定性:它不是直接读取磁盘文件,是用户态工具,通过 Win32 API + LPC/RPC 跨进程读取 Dnscache(DNS Client)服务内存里的全局 DNS 解析缓存,再格式化文本输出;缓存全部驻留内存,不持久化落盘
一、底层原理
Windows 有两级 DNS 缓存:
- 进程内 Winsock 缓存(ws2_32.dll):每个应用私有,短暂存活,
ipconfig /displaydns看不到 - 系统全局 Resolver 缓存(Dnscache 服务内存):
/displaydns读取的数据源,本机所有程序共用;包含正向缓存(A/AAAA/CNAME/MX)、负缓存(NXDOMAIN,域名不存在)
核心 API:DnsGetResolverCache()(dnsapi.dll 导出)
- 作用:从 Dnscache 服务拉取全部缓存条目结构体数组
- 对比:
ipconfig /flushdns调用DnsFlushResolverCache(),写操作清空内存缓存 - PowerShell 等价:
Get-DnsClientCache,同源数据,只是输出格式不同
关键区分:
nslookup直接调用 DNS 协议查询上游 DNS,绕过 Dnscache,结果不会写入这个全局缓存,也不会被 displaydns 看到- hosts 文件解析优先级高于 Dnscache,hosts 结果不写入 Dnscache 缓存,displaydns 永远看不到 hosts 条目
二、依赖文件清单
| 文件 | 路径 | 角色 |
|---|---|---|
| ipconfig.exe | %SystemRoot%\System32\ipconfig.exe |
主程序,解析命令行参数/displaydns,格式化输出文本 |
| dnsapi.dll | System32 | 核心 API 库,导出 DnsGetResolverCache、DnsFlushResolverCache,封装 RPC 调用 |
| rpcrt4.dll | System32 | RPC/LPC 本地跨进程通信,ipconfig.exe ↔ svchost.exe (Dnscache) |
| iphlpapi.dll | System32 | IP Helper,网卡、网络配置辅助接口(ipconfig 基础依赖) |
| dnscache.dll | 加载进 svchost.exe (netsvcs) | Dnscache 服务核心模块,内存缓存管理、TTL 老化、NRPT 策略匹配 |
| kernel32.dll | System32 | 进程加载、内存、基础系统调用 |
| advapi32.dll | System32 | 服务控制、权限、注册表读取 |
| tcpip.sys | 内核驱动 | TCP/IP 协议栈,DNS UDP 报文收发(不是 displaydns 直接调用,是 Dnscache 服务依赖) |
| dnsclient.sys | 内核驱动 | DNS 客户端内核组件,报文处理、EDNS0、DoH 底层收发 |
服务载体:
svchost.exe -k netsvcs,托管 Dnscache(DNS Client)服务。 ⚠️ 若 Dnscache 服务停止,ipconfig /displaydns直接报错,无法读取缓存。
三、调用链(时序,自上而下)
CMD/PowerShell 启动 ipconfig.exe
↓
ipconfig.exe 识别参数 /displaydns
↓
ipconfig.exe 加载 dnsapi.dll,调用 DnsGetResolverCache()
↓
dnsapi.dll → rpcrt4.dll 建立本地LPC/RPC通道
↓
RPC请求发送到 svchost.exe(netsvcs) 内的 dnscache.dll
↓
dnscache.dll 遍历自身内存哈希表(DNS缓存库)
↓
Dnscache把缓存条目结构体数组通过RPC回传给dnsapi.dll
↓
dnsapi.dll返回数据给ipconfig.exe
↓
ipconfig.exe 循环解析每条记录(Name/Type/TTL/Data),格式化文本输出到控制台
四、逻辑链(DNS 解析全链路,和 displaydns 的关系)
- 应用请求域名解析 → 优先读 hosts 文件(hosts 不走 Dnscache)
- hosts 不命中 → 查询 Dnscache 内存缓存(就是 displaydns 读取的数据集)
- ✅ 命中且 TTL 未过期:直接返回 IP,不访问网络 DNS 服务器
- ❌ 未命中 / TTL 过期:Dnscache 发起 UDP53 查询上游 DNS 服务器
- 收到上游应答:
- 正向应答:写入 Dnscache 内存缓存,按应答 TTL 计时;displaydns 可见
- NXDOMAIN(域名不存在):写入负缓存 NegativeCache,默认 300s,displaydns 也会列出负缓存记录
- TTL 倒计时归零 → Dnscache 自动从内存删除条目;重启 Dnscache 服务,全部缓存清空
配套控制:NRPT(名称解析策略表),Dnscache 内置匹配引擎,可强制域名走指定 DNS/DoH,匹配结果同样存入缓存,displaydns 可见。 注册表控制项:
HKLM\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters
- MaxCacheEntryTtlLimit:全局 TTL 上限(默认 86400s=1 天)
- NegativeCacheTime:负缓存时长,默认 300 秒博客园
五、配套链(周边组件,协同但非直接调用)
- 网卡 + TCPIP 协议栈 (tcpip.sys):Dnscache 用来向外发送 DNS UDP 报文;ipconfig.exe 读取网卡 DNS 服务器地址(iphlpapi)
- Hosts 文件
C:\Windows\System32\drivers\etc\hosts:解析优先级更高,但不进 Dnscache 缓存,displaydns 看不到 - Winsock ws2_32.dll:应用层域名解析入口,每个进程私有小缓存,独立于 Dnscache 全局缓存
- 浏览器内置 DNS 缓存(Chrome/Edge/Firefox):独立缓存,完全脱离 Dnscache,displaydns 看不到浏览器缓存
- 上游递归 DNS 服务器:Dnscache 缓存 miss 时才去查询;上游 DNS 缓存本机命令无法查看、无法刷新
六、边界(限制、误区、失效场景)
✅ 能力边界
- 只读取Dnscache 全局内存缓存,不读磁盘文件;重启 Dnscache / 主机,缓存全部丢失
- 可展示:A、AAAA、CNAME、MX、SRV、PTR、TXT、负缓存 (NXDOMAIN)
- 只读取本机系统级 DNS Client 缓存;看不到进程私有 ws2_32 缓存、浏览器缓存、hosts、上游 DNS 服务器缓存
- 缓存 TTL 受注册表
MaxCacheEntryTtlLimit封顶,即使 DNS 应答 TTL 很大,最多按注册表上限保存
❌ 失效 / 不生效边界
- Dnscache 服务(DNS Client)停止 → 命令直接失败,无法读取
- 注册表设置
MaxCacheEntryTtlLimit=0→ 全局缓存关闭,displaydns 几乎无记录 - nslookup 的查询结果不会写入 Dnscache 缓存,查完域名,displaydns 看不到该条目(高频踩坑点)
- hosts 匹配的域名解析,不会存入 Dnscache 缓存,displaydns 看不到 hosts 映射
- 负缓存:NXDOMAIN 会缓存,会造成 “域名改解析后,本机依然报不存在”,需要
ipconfig /flushdns清除负缓存 - 缓存有容量上限,条目过多,旧条目会被 LRU 淘汰,不等 TTL 到期就消失
⚠️ 运维边界
- 管理员权限不是必须,普通用户即可执行
ipconfig /displaydns;但/flushdns需要管理员权限 - 大缓存条目,输出文本极长,建议管道过滤:
ipconfig /displaydns | findstr "Record Name"
七、对比:/displaydns vs /flushdns
| 命令 | 操作类型 | API | 动作 |
|---|---|---|---|
| ipconfig /displaydns | 读 | DnsGetResolverCache | RPC 读取 Dnscache 内存缓存,格式化输出 |
| ipconfig /flushdns | 写 | DnsFlushResolverCache | RPC 通知 Dnscache 清空全部内存缓存 |
ipconfig /flushdns 完整解构
一句话定性:
ipconfig /flushdns是 Windows 用户态工具,通过 dnsapi.dll 导出 API,经由 RPC/LPC 跨进程通知 svchost 托管的 Dnscache(DNS Client)服务,清空内存内的全局 DNS 解析缓存;不会修改 hosts、不会重置网卡 DNS、不会清理上游 DNS 服务器缓存。
一、底层原理
Windows 的系统全局 DNS 缓存由 Dnscache 服务(dnscache.dll)维护,全部驻留在内存,无持久化磁盘文件。 ipconfig /flushdns 的本质:发起 RPC 指令,让 Dnscache 服务执行缓存哈希表的清理操作。
- 核心 API:
DnsFlushResolverCache()(dnsapi.dll 导出) - 作用:请求 Dnscache 清空所有全局 Resolver 缓存,包含两类:
- 正向缓存(A/AAAA/CNAME/MX/TXT 等正常解析记录)
- 负缓存(NXDOMAIN 域名不存在、应答失败的负向缓存)
重要区分:
- 仅清空 Dnscache 全局内存缓存;进程私有 Winsock 缓存(ws2_32)、浏览器内置 DNS 缓存不受影响
- hosts 文件不进 Dnscache 缓存,flushdns不会刷新 hosts
- nslookup 绕过 Dnscache,它的查询结果不写入 Dnscache,flushdns 对 nslookup 本身查询逻辑无影响
- 上游 DNS 服务器(公共 DNS / 企业 DNS)的缓存,本机完全无法清除
二、依赖文件清单
| 文件 | 路径 | 角色说明 |
|---|---|---|
| ipconfig.exe | %SystemRoot%\System32\ipconfig.exe |
主程序,解析命令行参数 /flushdns,调用 dnsapi.dll |
| dnsapi.dll | System32 | 核心 DNS 客户端 API 库,导出 DnsFlushResolverCache,封装 RPC 请求 |
| rpcrt4.dll | System32 | RPC/LPC 本地跨进程通信组件,ipconfig.exe ↔ svchost (Dnscache) |
| iphlpapi.dll | System32 | IP Helper API,ipconfig 基础依赖(网卡信息读取,本次 flushdns 不核心调用) |
| dnscache.dll | 加载于 svchost.exe -k netsvcs |
Dnscache 服务核心模块,维护 DNS 缓存哈希表,执行清空动作 |
| kernel32.dll | System32 | 进程加载、基础系统调用 |
| advapi32.dll | System32 | 权限校验、服务相关辅助接口 |
| tcpip.sys / dnsclient.sys | 内核驱动 | Dnscache 向外查询 DNS 报文依赖;flushdns 不直接调用内核驱动 |
服务载体:
svchost.exe托管Dnscache(DNS Client)。 如果 Dnscache 服务停止,ipconfig /flushdns会报错:无法刷新 DNS 解析缓存。
三、调用链(时序,自上而下)
CMD/PowerShell 启动 ipconfig.exe
↓
ipconfig.exe 识别命令行参数 /flushdns
↓
ipconfig.exe 加载 dnsapi.dll,调用导出函数 DnsFlushResolverCache()
↓
dnsapi.dll 通过 rpcrt4.dll 建立本地LPC/RPC通道
↓
发送RPC控制请求到 svchost.exe(netsvcs) 内的 dnscache.dll
↓
dnscache.dll 收到指令:
遍历内存中的DNS缓存哈希表
释放全部缓存条目内存、清空正向缓存+负缓存
重置缓存LRU链表
↓
Dnscache 返回操作成功/失败状态码,沿RPC原路回传
↓
dnsapi.dll 将结果返回ipconfig.exe
↓
ipconfig.exe 打印文本:成功刷新DNS解析缓存
四、逻辑链(DNS 缓存生命周期 + flushdns 介入时机)
- 应用请求域名解析 → 优先读取
hosts(不走 Dnscache) - hosts 未命中 → 查询 Dnscache 内存缓存
- 命中且 TTL 有效 → 直接返回 IP,不访问网络 DNS
- 未命中 / TTL 过期 → Dnscache 向上游 DNS 服务器发起查询
- 上游 DNS 返回应答:
- 正常应答 → 写入 Dnscache 内存缓存,附带 TTL
- NXDOMAIN(域名不存在)→ 写入负缓存,默认 300s
- 两种清除缓存方式:
- 被动:TTL 倒计时结束 / LRU 淘汰,自动删除条目
- 主动:
ipconfig /flushdns→ 强制清空整张缓存表,不分 TTL 是否到期,正向、负缓存全部清除
- 缓存清空之后:下一次域名解析请求,Dnscache 会重新向上游 DNS 查询,重新写入缓存
NRPT(名称解析策略表):flushdns不会修改 / 清空 NRPT 策略;NRPT 是规则,不是缓存。 注册表参数
HKLM\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters:MaxCacheEntryTtlLimit、NegativeCacheTime 这些参数不会被 flushdns 修改,只是控制缓存规则。
五、配套链(协同组件,非直接调用)
- hosts 文件
C:\Windows\System32\drivers\etc\hosts:优先级高于 Dnscache;flushdns不操作 hosts,修改 hosts 后不需要 flushdns 生效。 - ws2_32.dll Winsock 进程私有缓存:每个应用独立缓存,和 Dnscache 全局缓存隔离;flushdns无法清理,需要重启对应进程。
- 浏览器 DNS 缓存(Chrome/Edge/Firefox):浏览器独立缓存,完全脱离 Dnscache;flushdns 无效,需要浏览器内部清除缓存或重启浏览器。
- 网卡 DNS 服务器配置:ipconfig /flushdns不会修改网卡静态 / 自动 DNS 地址;修改网卡 DNS 不需要 flushdns。
- 上游递归 DNS 服务器:本机 flushdns 仅清本机 Dnscache;上游 DNS 服务器缓存,本机无权限操作。
六、边界(能力边界、限制、失效场景、权限边界)
✅ 能力边界
- 只清空Dnscache 服务内存全局 DNS 缓存,正向 + 负缓存全部一次性清除。
- 不修改任何注册表、网卡配置、hosts 文件。
- 不重启 Dnscache 服务,服务进程 svchost 继续运行,只是缓存内存被清空。
🔐 权限边界
ipconfig /flushdns 需要管理员权限普通用户执行会直接报错:请求的操作需要管理员权限对比:ipconfig /displaydns普通用户即可运行,仅读缓存,不需要管理员。
❌ 失效 / 不生效边界
- Dnscache(DNS Client)服务停止 → RPC 无法连接,刷新失败。
- 注册表设置
MaxCacheEntryTtlLimit=0:全局缓存关闭,本来就没有缓存,执行 flushdns 提示成功但无实质动作。 - 只能清本机 Dnscache 缓存:
- 无法清除进程 Winsock 私有缓存
- 无法清除浏览器内置 DNS 缓存
- 无法清除网关、上游 DNS 服务器缓存
- hosts 文件变更:不需要 flushdns,hosts 实时读取;很多运维踩坑误区,改 hosts 执行 flushdns 属于无效操作。
- nslookup:本身绕过 Dnscache,flushdns 对 nslookup 查询行为无影响。
⚠️ 运维边界
- 执行 flushdns 不会断开已建立 TCP 连接;已建立的 Socket 连接不会重新做域名解析。
- 对于长连接业务(数据库、API 长连接),旧连接继续使用旧 IP;新建连接才会重新 DNS 查询。
七、ipconfig /flushdns vs ipconfig /displaydns 对照
| 命令 | 操作类型 | API | 权限 | 行为 |
|---|---|---|---|---|
| ipconfig /displaydns | 读 | DnsGetResolverCache | 普通用户 | RPC 读取 Dnscache 内存缓存并输出 |
| ipconfig /flushdns | 写(清空) | DnsFlushResolverCache | 管理员 | RPC 通知 Dnscache 清空全部内存缓存 |
八、补充:替代方案(同底层 API)
PowerShell:
Clear-DnsClientCache
底层调用的就是同一个
DnsFlushResolverCacheAPI,等价于 ipconfig /flushdns,同样需要管理员权限。

浙公网安备 33010602011771号