全网最全!6种方法解决 GitHub 国内由于 DNS 污染导致无法访问的问题
GitHub 是一个面向开源及私有软件项目的托管平台。无法访问时,DNS 异常只是可能原因之一;GitHub 官方排障说明也列出了防火墙、代理和网络配置等因素。
本文整理 6 类检查与处理方法,应根据故障原因选择,不保证每种网络都适用。若仍有问题,欢迎在下方评论补充报错现象。
DNS 污染可能使域名解析到错误地址,但浏览器超时或“无法访问”本身不能确定故障发生在 DNS 层。
浏览器报错如下:
嗯… 无法访问此页面
github.com 响应时间太长

下面提供几个可行的方案共大家参考
1. 手动修改 Hosts 文件
Hosts 会覆盖正常域名解析,旧映射也可能导致访问失败。先检查是否已有过期条目;只有确认当前地址适用于目标域名时,才考虑临时测试,并保留恢复原配置的方法。GitHub 官方说明指出 IP 会变化,Meta API 也不是全部服务地址的完整列表。 步骤:
获取最新的 GitHub 域名 IP:
- 访问 IPAddress.com 查询以下域名的当前 IP:
github.comassets-cdn.github.comgithub.global.ssl.fastly.netapi.github.comraw.githubusercontent.com
- 或使用命令查询(需安装
nslookup或dig):nslookup github.com 8.8.8.8 # 使用 Google DNS 查询
- 访问 IPAddress.com 查询以下域名的当前 IP:
修改 Hosts 文件:
- Windows:
- 文件路径:
C:\Windows\System32\drivers\etc\hosts - 右键用管理员权限编辑。下方是原文的历史映射示例,不能直接复制为当前配置;如已有这些旧条目,应先核实或移除后重新测试:
# GitHub 140.82.113.3 github.com 185.199.108.153 assets-cdn.github.com 199.232.69.194 github.global.ssl.fastly.net
- 文件路径:
- macOS/Linux:
- 文件路径:
/etc/hosts - 检查
/etc/hosts中是否有旧 GitHub 映射;如需编辑,可用sudo nano /etc/hosts,不要直接添加上面的历史地址。
- 文件路径:
- Windows:
刷新 DNS 缓存:
- Windows:
ipconfig /flushdns - macOS/Linux:
sudo dscacheutil -flushcache或sudo systemd-resolve --flush-caches
- Windows:
2. 使用加密 DNS 服务
DNS-over-HTTPS(DoH)或 DNS-over-TLS(DoT)加密客户端与解析器之间的查询。只把 DNS 地址改为 1.1.1.1 或 8.8.8.8,不等于启用了加密 DNS:普通 UDP/TCP 查询仍不加密,可对照 Google 安全传输说明。 推荐方案:
- Cloudflare DNS(
1.1.1.1)或 Google DNS(8.8.8.8):- 如需加密,在支持的系统或浏览器中明确启用 DoH/DoT,并按服务商文档配置;参考 Cloudflare 加密 DNS 说明。
- DNSCrypt 或 DoH/DoT 工具:
- 使用 AdGuard DNS、NextDNS 等支持加密的 DNS 服务。
3. 使用代理或 VPN(终极大杀器)
代理或 VPN 可能改变连接路径,但 DNS 是否也经过代理取决于客户端配置,不能保证解决所有解析或网络问题。 推荐工具:
- Clash(支持规则分流,开源免费)
- Shadowsocks/V2Ray(需自建或购买节点)
- 商业 VPN(如 ExpressVPN、NordVPN)
相关内容:
4. 使用 GitHub 镜像站点
访问 GitHub 的镜像服务,避开主域名污染。
常用镜像:
- GitHub 加速下载
- FastGit(已停用,可寻找替代)
5. 验证 DNS 污染
确认是否真的是 DNS 污染导致的问题:
- 使用
nslookup或dig查询域名:nslookup github.com 8.8.8.8 # 使用另一公共解析器作对照(普通 DNS,非加密查询) nslookup github.com # 使用本地默认 DNS 查询- 结果不同只是线索,不能单凭这一点认定 DNS 污染;GitHub 使用多个 IP 地址范围,缓存、解析位置或记录变化都可能影响结果。结合是否解析超时、返回地址是否异常以及 HTTPS 连接结果继续排查。
- 若返回相同地址但仍无法连接,也要检查网络路径、代理或防火墙;加密 DNS 不能修复这些非 DNS 故障。
6. 清除本地 DNS 缓存
- Windows:
ipconfig /flushdns - macOS:
sudo killall -HUP mDNSResponder - Linux:
sudo systemctl restart nscd
注意事项
- IP 地址可能变化,需定期更新 Hosts 文件。
- 优先使用 HTTPS,避免中间人攻击。
- 如果使用代理/VPN,确保节点未被 GitHub 封禁(如某些机场 IP 可能被限制)。
若问题持续,请按具体报错区分解析、连接和 TLS 问题,并参考上方 GitHub 官方排障说明;企业网络限制应联系管理员确认,不要将代理或 VPN 当作保证有效的解决方案。