DNS 与 Hosts 配置
这页适合做“域名解析与本机覆盖的入门排障手册”。很多网络问题看起来像代理、像防火墙、像服务端故障,最后其实只是 DNS 解析不对,或者 hosts 把结果覆盖掉了。
先理解 DNS 和 Hosts 的区别
- DNS:向解析服务器查询域名对应 IP,适合日常联网和全局解析
- Hosts:本机强制指定域名解析结果,优先级通常高于 DNS
简单理解:
- 想让整台机器都走某个公共解析服务,用 DNS
- 想在本机临时把某个域名指向测试环境,用 hosts
推荐 DNS 服务器
| 服务商 | IPv4 | IPv6 | 说明 |
|---|---|---|---|
| Cloudflare | 1.1.1.1 / 1.0.0.1 | 2606:4700:4700::1111 | 速度快,隐私优先 |
8.8.8.8 / 8.8.4.4 | 2001:4860:4860::8888 | 稳定可靠 | |
| 阿里 DNS | 223.5.5.5 / 223.6.6.6 | 2400:3200::1 | 国内推荐 |
| 腾讯 DNS | 119.29.29.29 | 2402:4e00:: | 国内备选 |
修改 DNS
Windows GUI
设置 → 网络和 Internet → 以太网/Wi-Fi → DNS 服务器分配 → 编辑
PowerShell
# 查看当前 DNS
Get-DnsClientServerAddress
# 设置 DNS(需管理员)
Set-DnsClientServerAddress -InterfaceAlias "以太网" -ServerAddresses ("1.1.1.1", "8.8.8.8")
# 恢复自动获取
Set-DnsClientServerAddress -InterfaceAlias "以太网" -ResetServerAddresses
Hosts 文件
路径:C:\Windows\System32\drivers\etc\hosts
编辑方式
# 用记事本编辑(需管理员)
notepad C:\Windows\System32\drivers\etc\hosts
# 或使用 PowerToys Hosts File Editor(推荐)
常用配置
# 屏蔽广告域名
0.0.0.0 ads.example.com
# 本地开发
127.0.0.1 myapp.local
127.0.0.1 api.myapp.local
# GitHub 加速(IP 可能变化,需定期更新)
# 通过 https://ping.chinaz.com/github.com 查询最快 IP
140.82.114.4 github.com
刷新 DNS 缓存
修改 hosts 后需要刷新:
ipconfig /flushdns
DNS over HTTPS (DoH)
加密 DNS 查询,防止 DNS 劫持。
Windows 11 原生支持
设置 → 网络 → 以太网 → DNS → 选择加密模式:
- Cloudflare DoH:
https://cloudflare-dns.com/dns-query - Google DoH:
https://dns.google/dns-query - 阿里 DoH:
https://dns.alidns.com/dns-query
命令行配置
# 添加 DoH 服务器(需管理员)
Add-DnsClientDohServerAddress -ServerAddress "1.1.1.1" -DohTemplate "https://cloudflare-dns.com/dns-query" -AllowFallbackToUdp $true -AutoUpgrade $true
DNS 排查
# 查询域名解析
nslookup example.com
Resolve-DnsName example.com
# 指定 DNS 服务器查询
nslookup example.com 1.1.1.1
# 查看 DNS 缓存
Get-DnsClientCache | Select-Object Entry, Data
# 清除缓存
Clear-DnsClientCache
推荐使用顺序
遇到解析问题时,建议按这个顺序排:
- 先用
nslookup/Resolve-DnsName看实际解析结果 - 再检查本机
hosts是否覆盖 - 然后确认网络、DNS 缓存或路由器设置是否影响查询
- 最后再考虑切换 DNS 服务商或启用 DoH
不要一上来就改 hosts 或乱换 DNS,不然排障链路会更混乱。
常见问题
改了 hosts 还是没生效
优先检查:
- 是否以管理员身份保存了文件
- 是否执行了
ipconfig /flushdns - 浏览器或本地 DNS 是否有额外缓存
- 域名是否走了 HTTPS 证书校验或 CDN 策略,导致“能解析但访问仍异常”
DNS 很慢或偶发失败
可以尝试:
- 换一组更稳定的 DNS
- 打开 DoH
- 排查本地 DNS、hosts、路由器自带解析是否干扰
本地开发域名打不开
如果你把 myapp.local 指向 127.0.0.1,还要确认:
- 本地服务是否真的监听该端口
- 应用是否允许这个 Host
- 浏览器缓存和 HSTS 是否影响访问
延伸阅读
参考链接
- Cloudflare DNS — 设置指南
- Google Public DNS — 文档
- SwitchHosts — Hosts 管理工具
- PowerToys Hosts Editor — 可视化编辑