GitHub 是全球最大的开源代码托管平台。然而在中国大陆网络环境下,由于 DNS 域名解析经常遭受投毒与污染,常导致用户打不开网页或 Git 克隆代码超时。

通常浏览器会提示以下错误:

无法访问此页面
github.com 响应时间太长 / 拒绝了我们的连接

github.com 响应时间太长报错页面

本文整理了 6 种行之有效的解决办法,帮助你绕过 DNS 污染恢复 GitHub 的正常访问与使用。


1. 手动修改本地 Hosts 文件

通过向系统 Hosts 文件中显式写入 GitHub 域名的真实无污染 IP 地址,可以绕过运营商默认的 DNS 解析劫持。

操作步骤

  1. 查询 GitHub 域名的最新无污染 IP: 通过 IPAddress.com 域名查询网站 检索以下域名的最新 IP:

    • github.com
    • assets-cdn.github.com
    • github.global.ssl.fastly.net
    • raw.githubusercontent.com

    也可通过公网干净 DNS 进行终端查询:

    BASH
    nslookup github.com 8.8.8.8
  2. 编辑系统 Hosts 文件:

    • Windows 系统: 使用管理员身份打开记事本,修改 C:\Windows\System32\drivers\etc\hosts 文件,在底部添加对应解析记录:

      TEXT
      # GitHub DNS Fixed
      140.82.113.3    github.com
      185.199.108.153 assets-cdn.github.com
      199.232.69.194  github.global.ssl.fastly.net
      185.199.108.133 raw.githubusercontent.com
    • macOS / Linux 系统: 打开终端执行命令 sudo nano /etc/hosts,将上述解析记录追加至文件底部后保存。

  3. 刷新本地 DNS 缓存:

    • Windows:在 CMD 中执行 ipconfig /flushdns
    • macOS:在终端执行 sudo killall -HUP mDNSResponder
    • Linux:执行 sudo systemctl restart nscd

2. 使用加密 DNS 服务 (DoH / DoT)

传统 DNS 使用 UDP 协议明文传输,极易在传输中途被拦截投毒。开启加密 DNS(DNS-over-HTTPS 或 DNS-over-TLS)可以防止数据包被篡改。

推荐方案

  • 公共加密 DNS 节点: 在浏览器(如 Chrome / Edge 设置 -> 隐私与安全 -> 使用安全 DNS)中配置:
    • Cloudflare DoH:1.1.1.1 (https://chrome.cloudflare-dns.com/dns-query)
    • Google DoH:8.8.8.8 (https://dns.google/dns-query)
  • 专业加密 DNS 工具: 使用 AdGuard DNS 官网 或 NextDNS 官网 提供的私有加密 DNS 服务。

3. 使用网络代理与分流 (推荐终极方案)

若单纯依靠修改 DNS 仍然遇到 SNI 阻断或连接丢包,通过网络代理软件配置自动分流是最为稳定彻底的解决手段。

推荐工具与教程

  • Clash / Clash Verge:支持基于规则的分流,将 github.com 及 .githubusercontent.com 流量走加密代理节点。

设备配置教程:


4. 使用 GitHub 镜像站与加速通道

如果只需要下载 GitHub 仓库的代码包或 Releases 资产文件,可以直接使用公共镜像站或下载加速服务:

常用镜像加速工具

  • Ghproxy 镜像加速:直接在终端或下载工具的资源 URL 前加上 https://ghproxy.net/ 加速下载。
  • FastGit / GitClone 代理:使用 git clone https://gitclone.com/github.com/用户名/仓库名.git 进行代码拉取。

5. 验证本地是否存在 DNS 污染

如何判断访问失败是由于 DNS 污染引起的?

打开命令行终端,分别对比使用本地默认 DNS 与干净公网 DNS 的查询结果:

BASH
# 使用本地默认 DNS
nslookup github.com

# 使用 Google 8.8.8.8 干净 DNS
nslookup github.com 8.8.8.8

若本地默认 DNS 返回的 IP 地址与公网 DNS 返回的真正 IP 不一致,或返回的是无效/空地址,即可确认存在 DNS 污染。


6. 清除本地与浏览器 DNS 缓存

修改设置后,需要彻底刷新本机 DNS 缓存以生效:

  • Windows 刷新命令:
    CMD
    ipconfig /flushdns
  • macOS 刷新命令:
    BASH
    sudo killall -HUP mDNSResponder
  • Chrome / Edge 浏览器刷新: 在地址栏打开 chrome://net-internals/#dns,点击 Clear host cache 按钮。

注意事项与建议


推荐阅读

版权声明

链接: https://blog.fusi.cc/posts/solve-github-access-dns-pollution-guide/

许可证: 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。