Windows设置DNS解析走的是公网而非内部网络
总述
我们常常会遇到我们ping或者nslookup一个外部站点,但是返回的却是我们的内部的一个保留内网ip地址,这种情况就是因为我们的DNS走的是我们网卡的53端口,我们网卡再进行处理,将处理后的结果返回给一个内网的保留地址再返回给我们主机,这种情况下我们想要绕过网卡的DNS而是使用我们自己设定的DNS地址,就要在本地也开启一个53端口的DNS服务,然后将网卡的DNS地址改为我们本地的localhost 127.0.0.1,这样我们本地的DNS解析就会通过我们的127.0.0.1:53 这个端口进行服务了,而非再走向网卡的DNS解析地址端口。
使用工具
dnscrypt-proxy:
https://github.com/DNSCrypt/dnscrypt-proxy
操作流程
1. 编辑 dnscrypt-proxy.toml
重点修改或确认以下几项:
###########################
# 服务器列表
###########################
# 这里选择你信任的 DNS over HTTPS / DNSCrypt 提供商。
# 官方已经默认启用了多个,你也可以去 https://dnscrypt.info/public-servers/ 挑选。
server_names = ['cloudflare', 'google']
###########################
# 本地监听接口
###########################
# 指定本地监听 127.0.0.1:53
listen_addresses = ['127.0.0.1:53']
###########################
# 日志 & 隐私
###########################
# 如果你想看日志排错,打开下面这一行:
# log_level = 'info'
server_names:可选 ['cloudflare','google']、或者 ['quad9-doh-ip4-filter-pri'] 等;
listen_addresses:一定要有 127.0.0.1:53,这样本地 DNS 查询才会到这个代理上来。
2. 以管理员权限安装并启动服务
-
打开 “开始”→ 输入
cmd→ 右键 “以管理员身份运行” → 进入命令行。 -
切换到 dnscrypt-proxy 目录:
cd \dnscrypt-proxy -
安装 Windows 服务:
dnscrypt-proxy.exe -service install -
启动服务:
dnscrypt-proxy.exe -service start -
(可选)检查服务状态:
dnscrypt-proxy.exe --service status若看到 “Service is running”,说明已经正常启动。
3. 把 Windows 网卡的 DNS 指向本地代理
-
打开“控制面板”→“网络和 Internet”→“网络连接”。
-
右键你正在用的 Wi-Fi(或以太网)→“属性”→选中“Internet 协议版本 4 (TCP/IPv4)”→“属性”。
-
选择“使用下面的 DNS 服务器地址”,并填入:
首选 DNS 服务器:127.0.0.1 备用 DNS 服务器:0.0.0.0 -
确定后关闭。
4. 刷新并验证
在新的管理员命令行中运行:
ipconfig /flushdns
然后用 nslookup 或 ping 验证:
nslookup baidu.com
-
如果返回的 “服务器” 一栏是
127.0.0.1,并且下方的 IP 是百度的真实公网 IP(例如 220.181.57.216),就说明你的 dnscrypt-proxy 起作用了。 -
再次
ping baidu.com,应能获得正确的公网地址。
检查方法:
-
确认代理在跑,并验证它生效:
用 sc 或 PowerShell 查看服务状态
sc query dnscrypt-proxy
或者在 PowerShell(管理员)里:
Get-Service dnscrypt-proxy
你应该能看到它的 STATE 是 RUNNING。 -
确认 127.0.0.1:53 在监听
netstat -ano | findstr ":53"
TCP 127.0.0.1:53 0.0.0.0:0 LISTENING 21352
tasklist | findste 21352
dnscrypt-proxy.exe 21352 Services 0 20,508 K
未生效情况可能存在的问题
从 ipconfig /all 里我们看到:
Meta Tunnel 这个虚拟网卡(198.18.0.1/30)依然拿着 DNS 服务器 198.18.0.2,
而你的 WLAN 真正配置的是 127.0.0.1
Windows 在查询 DNS 时,会优先用系统认为“绑定最靠前”或“路由最优”的接口的 DNS,而不是你在 WLAN 上手动设置的。这里,“Meta Tunnel” 把 DNS 绑在了第一位,所以所有查询都跑到它那去,绕过了你的 dnscrypt-proxy。
-----------------------------------------------------------------------
“Meta Tunnel” 这个网卡并不是 Windows 系统自带的,而是你之前安装的那个企业/IT 安全软件(比如 Sangfor SSL VPN、aTrust 客户端或类似的安全代理)在本地创建出来的“隧道”虚拟网卡。它的作用通常是:
承载 VPN 或安全隧道流量,把你访问公司内网、管理后台或安全检测流量都绕到 IT 的后端服务器上;
下发并劫持 DNS,把所有 DNS 请求先发到它那边,做安全审计、内部地址解析或策略拦截;
一、直接禁用“Meta Tunnel”的影响
优点:立刻不会再把 DNS 劫持到 198.18.0.2,你所有网络软件都会走你设置的 127.0.0.1 → dnscrypt-proxy;
缺点:
你将无法访问那条隧道里需要用到的企业/内部资源(比如公司内网网站、共享盘、内部 AD 域名等);
如果有基于这张隧道做的安全检测(如全员上网审计、访问白名单),也会被绕过或直接失效。
如果你 根本不需要那条 VPN/安全通道(只是偶然安装过、现在不会用),禁用它是最简单粗暴的方法;但只要它依然有用,禁用就会影响你对内网服务的访问。
二、改 DNS 到 127.0.0.1 可行性
你把 “Meta Tunnel” 那个网卡的 DNS 也改成了 127.0.0.1,那么这条隧道的 DNS 查询同样会走你的 dnscrypt-proxy。
好处:依旧能避开运营商的 53 端口劫持;
风险:这条隧道如果还需要内部 DNS(比如 intranet.company.local、ad.domain),它就拿不到 IT 的 DNS 回应,内部域名解析会失败,导致 VPN 内网服务访问中断。
三、推荐更平衡的做法
调整接口优先级(Metric)
保留 “Meta Tunnel” 但把它的接口度量调高,让 Windows 优先用 WLAN 上的 127.0.0.1:
powershell
# 在管理员 PowerShell 里运行
Set-NetIPInterface -InterfaceAlias "Meta Tunnel" -InterfaceMetric 100
Set-NetIPInterface -InterfaceAlias "WLAN" -InterfaceMetric 10
这样常规网站、公共 DNS 都走 dnscrypt-proxy;只有真正发往企业内网的流量,仍会匹配到 Meta Tunnel 上的路由。
按域名分流
如果你用的是支持 DoH/DoT 分域转发的 dnscrypt-proxy,也可以在 forwarding_rules 里把内部域名(如 *.company.local)指定给原来的 IT DNS 服务器走 198.18.0.2,而其他全部走 DoH。这就不会把企业内部解析也走到外部代理。
视需求而定
纯翻墙/公网浏览:禁用 Meta Tunnel 或全网改 DNS 都没问题;
同时要访问内网资源:建议别禁用,用 “接口度量 + 分流” 的方式,让两边 DNS 各行其道。
解决办法一:禁用 “Meta Tunnel” 虚拟网卡
-
Win+R,输入
ncpa.cpl,回车。 -
找到 “Meta Tunnel”,右键 → 禁用。
-
再次在管理员 CMD 中运行:
ipconfig /flushdns nslookup baidu.com这时 “服务器” 应该会变成
127.0.0.1,返回百度的公网 IP。
解决办法二:调整接口度量(Metric)
如果你想保留 Meta Tunnel,但让 WLAN 优先:
-
以管理员 PowerShell 运行:
# 把 WLAN 的度量设得比 Meta Tunnel 低 Set-NetIPInterface -InterfaceAlias "WLAN" -InterfaceMetric 10 Set-NetIPInterface -InterfaceAlias "Meta Tunnel" -InterfaceMetric 100 -
然后:
ipconfig /flushdns nslookup baidu.com系统就会优先走度量更低的 WLAN 上的
127.0.0.1。
验证
无论用哪种方法,最后 nslookup baidu.com 应该显示:
服务器: UnKnown Address: 127.0.0.1 名称: baidu.com Address: 220.181.57.216 ←(示例公网 IP)
总结
-
Meta Tunnel 是你的安全/VPN 隧道网卡,禁用会断掉对内网的访问;
-
临时改 DNS 到 127.0.0.1 可以“救急”,但可能让内网域名失效;
-
最好是通过调整接口优先级或 DNS 分域策略,让公共域名走你的 dnscrypt-proxy,内部域名走原有的隧道 DNS。
实操
C:\Windows\system32>cd Q:\1Tool\dnscrypt-proxy
C:\Windows\system32>Q:
Q:\1Tool\dnscrypt-proxy>dnscrypt-proxy.exe -service stop
[2025-06-07 14:06:23] [NOTICE] Service stoppedd
Q:\1Tool\dnscrypt-proxy>dnscrypt-proxy.exe -service uninstall
[2025-06-07 14:06:27] [NOTICE] Service uninstalled
Q:\1Tool\dnscrypt-proxy>dnscrypt-proxy.exe -service install
[2025-06-07 14:06:33] [NOTICE] Installed as a service. Use `-service start` to start
Q:\1Tool\dnscrypt-proxy>dnscrypt-proxy.exe -service start
[2025-06-07 14:06:36] [NOTICE] Service started
Q:\1Tool\dnscrypt-proxy>netstat -ano | findstr ":53"
TCP 0.0.0.0:5357 0.0.0.0:0 LISTENING 4
TCP 127.0.0.1:53 0.0.0.0:0 LISTENING 21352
...
Q:\1Tool\dnscrypt-proxy>tasklist | findstr 21352
dnscrypt-proxy.exe 21352 Services 0 20,508 K
Q:\1Tool\dnscrypt-proxy>ipconfig /flushdns
Windows IP 配置
已成功刷新 DNS 解析缓存。
Q:\1Tool\dnscrypt-proxy>nslookup baidu.com
服务器: UnKnown
Address: 198.18.0.2
名称: baidu.com
Address: 198.18.0.165
Q:\1Tool\dnscrypt-proxy>ipconfig /all
Windows IP 配置
主机名 . . . . . . . . . . . . . : QiaoShen
主 DNS 后缀 . . . . . . . . . . . :
节点类型 . . . . . . . . . . . . : 混合
IP 路由已启用 . . . . . . . . . . : 否
WINS 代理已启用 . . . . . . . . . : 否
未知适配器 Meta:
连接特定的 DNS 后缀 . . . . . . . :
描述. . . . . . . . . . . . . . . : Meta Tunnel
物理地址. . . . . . . . . . . . . :
DHCP 已启用 . . . . . . . . . . . : 否
自动配置已启用. . . . . . . . . . : 是
本地链接 IPv6 地址. . . . . . . . : fe80::3e16:a5fe:113d:a6c5%4(首选)
IPv4 地址 . . . . . . . . . . . . : 198.18.0.1(首选)
子网掩码 . . . . . . . . . . . . : 255.255.255.252
默认网关. . . . . . . . . . . . . : 0.0.0.0
DNS 服务器 . . . . . . . . . . . : 198.18.0.2 ——> 关键
TCPIP 上的 NetBIOS . . . . . . . : 已启用
...
无线局域网适配器 WLAN:
连接特定的 DNS 后缀 . . . . . . . :
描述. . . . . . . . . . . . . . . : Intel(R) Wi-Fi 6 AX200 160MHz
物理地址. . . . . . . . . . . . . : E4-FD-45-3D-2C-BE
DHCP 已启用 . . . . . . . . . . . : 是
自动配置已启用. . . . . . . . . . : 是
本地链接 IPv6 地址. . . . . . . . : fe80::5cea:4fab:2048:8fc4%20(首选)
IPv4 地址 . . . . . . . . . . . . : 192.168.1.6(首选)
子网掩码 . . . . . . . . . . . . : 255.255.255.0
获得租约的时间 . . . . . . . . . : 2025年6月7日 13:28:54
租约过期的时间 . . . . . . . . . : 2025年6月8日 14:07:16
默认网关. . . . . . . . . . . . . : 192.168.1.1
DHCP 服务器 . . . . . . . . . . . : 192.168.1.1
DHCPv6 IAID . . . . . . . . . . . : 149224773
DHCPv6 客户端 DUID . . . . . . . : 00-01-00-01-2E-9C-41-A0-6C-24-08-54-4A-61
DNS 服务器 . . . . . . . . . . . : 127.0.0.1
TCPIP 上的 NetBIOS . . . . . . . : 已启用
以太网适配器 以太网 3:
...
Q:\1Tool\dnscrypt-proxy>ipconfig /all
Windows IP 配置
主机名 . . . . . . . . . . . . . : QiaoShen
主 DNS 后缀 . . . . . . . . . . . :
节点类型 . . . . . . . . . . . . : 混合
IP 路由已启用 . . . . . . . . . . : 否
WINS 代理已启用 . . . . . . . . . : 否
未知适配器 Meta:
连接特定的 DNS 后缀 . . . . . . . :
描述. . . . . . . . . . . . . . . : Meta Tunnel
物理地址. . . . . . . . . . . . . :
DHCP 已启用 . . . . . . . . . . . : 是
自动配置已启用. . . . . . . . . . : 是
本地链接 IPv6 地址. . . . . . . . : fe80::de2c:e791:4de:28c6%4(首选)
IPv4 地址 . . . . . . . . . . . . : 198.18.0.1(首选)
子网掩码 . . . . . . . . . . . . : 255.255.255.252
默认网关. . . . . . . . . . . . . : 0.0.0.0
DNS 服务器 . . . . . . . . . . . : 127.0.0.1 ——> 关键
TCPIP 上的 NetBIOS . . . . . . . : 已启用
...
无线局域网适配器 WLAN:
连接特定的 DNS 后缀 . . . . . . . :
描述. . . . . . . . . . . . . . . : Intel(R) Wi-Fi 6 AX200 160MHz
物理地址. . . . . . . . . . . . . : E4-FD-45-3D-2C-BE
DHCP 已启用 . . . . . . . . . . . : 是
自动配置已启用. . . . . . . . . . : 是
本地链接 IPv6 地址. . . . . . . . : fe80::5cea:4fab:2048:8fc4%20(首选)
IPv4 地址 . . . . . . . . . . . . : 192.168.1.6(首选)
子网掩码 . . . . . . . . . . . . : 255.255.255.0
获得租约的时间 . . . . . . . . . : 2025年6月7日 13:28:53
租约过期的时间 . . . . . . . . . : 2025年6月8日 14:07:16
默认网关. . . . . . . . . . . . . : 192.168.1.1
DHCP 服务器 . . . . . . . . . . . : 192.168.1.1
DHCPv6 IAID . . . . . . . . . . . : 149224773
DHCPv6 客户端 DUID . . . . . . . : 00-01-00-01-2E-9C-41-A0-6C-24-08-54-4A-61
DNS 服务器 . . . . . . . . . . . : 127.0.0.1 ——> 关键
TCPIP 上的 NetBIOS . . . . . . . : 已启用
以太网适配器 以太网 3:
...
Q:\1Tool\dnscrypt-proxy>ipconfig /flushdns
Windows IP 配置
已成功刷新 DNS 解析缓存。
Q:\1Tool\dnscrypt-proxy>nslookup baidu.com
服务器: UnKnown
Address: 127.0.0.1
非权威应答:
名称: baidu.com
Addresses: 110.242.68.66
39.156.66.10
Q:\1Tool\dnscrypt-proxy>ping baidu.com
正在 Ping baidu.com [110.242.68.66] 具有 32 字节的数据:
来自 110.242.68.66 的回复: 字节=32 时间<1ms TTL=64
来自 110.242.68.66 的回复: 字节=32 时间<1ms TTL=64
来自 110.242.68.66 的回复: 字节=32 时间<1ms TTL=64
来自 110.242.68.66 的回复: 字节=32 时间<1ms TTL=64
110.242.68.66 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 0ms,平均 = 0ms