外观
DNS 污染导致 GitHub 打不开?DoH / DoT 配置指南
有时 GitHub 打不开,根源是 DNS 污染——域名被解析到了错误或无效的 IP。这类问题用加密 DNS(DoH/DoT)往往能直接解决。本文教你识别与修复。
一、怎么判断是不是 DNS 污染
bash
nslookup github.com对照判断:
- 返回
127.0.0.1、0.0.0.0或一个明显 ping 不通的怪 IP → 典型污染。 - 用不同 DNS 查结果差异很大 → 可能污染。
再交叉验证——指定一个公共 DNS 查询:
bash
nslookup github.com 1.1.1.1如果指定 1.1.1.1 查出来的 IP 正常、而默认 DNS 查出来是错的,基本可以确认是本地/运营商 DNS 被污染。
二、方法一:更换公共 DNS
把系统 DNS 换成可靠的公共 DNS,是最直接的一步。
Windows(管理员 PowerShell):
powershell
Get-NetAdapter # 查看网卡名
Set-DnsClientServerAddress -InterfaceAlias "以太网" -ServerAddresses ("1.1.1.1","8.8.8.8")
ipconfig /flushdnsmacOS / Linux:在网络设置里把 DNS 改为 1.1.1.1、8.8.8.8。
注意:普通 UDP DNS(53 端口)仍可能被污染。想彻底,用下面的加密 DNS。
三、方法二:启用 DoH(DNS over HTTPS)——推荐
DoH 把 DNS 查询走 HTTPS 加密,污染方看不到也改不了你的查询,能绕过绝大多数 DNS 污染。
在浏览器里开启(最简单):
- Chrome / Edge:设置 → 隐私和安全 → 安全 → 开启"使用安全 DNS",选自定义:
https://cloudflare-dns.com/dns-query或https://dns.google/dns-query。 - Firefox:设置 → 隐私与安全 → 启用基于 HTTPS 的 DNS。
在系统层开启(全局生效):
Windows 11 支持系统级 DoH:设置 → 网络和 Internet → 以太网 → DNS 服务器分配 → 手动 → 填 1.1.1.1 并把 DNS over HTTPS 设为"开(自动模板)"。
四、方法三:DoT(DNS over TLS)
DoT 与 DoH 类似,走 853 端口的 TLS 加密。Android(私人 DNS 填 dns.google)和部分路由器 / Linux(systemd-resolved)支持。适合在路由器或系统层统一配置,让全内网设备受益。
Linux systemd-resolved 开启 DoT 示例(/etc/systemd/resolved.conf):
ini
[Resolve]
DNS=1.1.1.1
DNSOverTLS=yesbash
sudo systemctl restart systemd-resolved五、方法四:直接改 Hosts(绕过 DNS)
如果不想折腾 DoH,也可以直接把正确 IP 钉进 hosts,彻底跳过 DNS 解析:
👉 修改 Hosts 加速 GitHub:原理、配置与自动更新
缺点是 IP 会变、需维护;DoH 则是"一次配置长期有效"。
六、验证是否解决
bash
# 清缓存后重查
ipconfig /flushdns # Windows
nslookup github.com
# 浏览器 DNS 缓存(Chrome)
# 打开 chrome://net-internals/#dns 点 Clear host cache解析出正常 IP、且能打开 GitHub,即解决。
方法对比
| 方法 | 彻底度 | 维护成本 | 推荐度 |
|---|---|---|---|
| 换公共 DNS | 中 | 低 | ⭐⭐⭐ |
| DoH | 高 | 低(配一次) | ⭐⭐⭐⭐⭐ |
| DoT | 高 | 中(系统/路由) | ⭐⭐⭐⭐ |
| 改 Hosts | 中 | 高(IP 会变) | ⭐⭐⭐ |
注意:DNS 不是万能的
如果解析已经正常、但 GitHub 仍连不上,那是连接层被干扰,DNS 手段无效,需要 代理 或参考 443 连接失败。
小结
- 先用
nslookup github.com 1.1.1.1交叉验证是否污染。 - 首选 DoH:一次配置,绕过污染,长期有效。
- 解析正常仍连不上 → 是连接层问题,不是 DNS。
本文仅供技术学习与研究,请遵守所在国家/地区法律法规。