快速修复
# 一键:临时换 goproxy.cn(direct 兜底回源)
GOPROXY=https://goproxy.cn,direct go mod download
你会遇到什么
go get / go mod download / go build(首次拉依赖)报 go: ...: Get "https://proxy.golang.org/...": dial tcp 142.250.69.177:443: i/o timeout。
报错 IP 是 Google 网段(142.250.x / 142.251.x / 173.194.x)——国内网络直连 Go 默认代理必超时;同一台机器过段时间又可能通,是网络波动,不是代码问题。
本文路径:快速修复(30 秒一段命令)→ 一步步排查(可跳读)→ 原理与变体(症状/原因/证据)。赶时间直接跳到「快速修复」。
为什么会这样
Go 默认模块代理 proxy.golang.org(以及校验和 sum.golang.org)托管在 Google 基础设施上,国内直连不稳定,TCP 拨号直接 i/o timeout。国内公共代理 goproxy.cn(七牛)是官方文档推荐给中国用户的方案,还有 goproxy.io、公司内网 Athens/nexus 等。
Go 模块下载是「GOPROXY 寻址 + GOSUMDB 校验」两段:GOPROXY 决定从哪个代理拉模块(默认 proxy.golang.org 托管在 Google 基础设施,国内直连 TCP 拨号 i/o timeout);GOSUMDB 决定从哪个校验和服务器验证模块哈希(默认 sum.golang.org 同样不可直连)。
只换 GOPROXY 不处理 GOSUMDB,下载仍可能卡在校验和阶段;goproxy.cn 等国内代理通常同时提供 sumdb 代理(GOSUMDB=sum.golang.google.cn 或代理自带的 sumdb 服务)。
确定性推论:go mod download 卡住先看卡在哪一段——GOPROXY 段(拉模块)还是 GOSUMDB 段(验哈希),go env GOPROXY GOSUMDB 看当前值;国内环境标准配置 GOPROXY=https://goproxy.cn,direct GOSUMDB=sum.golang.google.cn;
公司内网用 Athens/nexus 时,GOSUMDB 可能要设 off(内网代理自带完整性校验,信任链不同);
判断路径:报错 URL 是 proxy.golang.org = GOPROXY 问题,是 sum.golang.org = GOSUMDB 问题。
一步步来
1. 临时 — 必做
GOPROXY=https://goproxy.cn,direct go get ...
2. 持久化(用户级) — 必做
go env -w GOPROXY=https://goproxy.cn,direct
go env -w GOSUMDB=sum.golang.org
goproxy.cn 可正常转发校验和,国内一般不用关 sumdb。
3. 优先级注意 — 必做
环境变量 GOPROXY=...(export 在 shell/系统里)> go env -w 写入值 > 默认值。
shell 里 export 了 GOPROXY 时 go env -w 不生效(实测警告:does not override conflicting OS environment variable)——改 export 那一处(~/.bashrc / /etc/environment),或显式 GOPROXY=... go ...。
4. 校验和也超时 — 必做
GOSUMDB=sum.golang.google.cn(国内可达镜像),或 GOSUMDB=off(牺牲供应链校验,不推荐持久化)。
5. 私有模块 — 必做
公司内网模块配 GOPRIVATE=公司域名(自动绕过 proxy 与 sumdb)。
6. CI — 必做
GitHub Actions 上 actions/setup-go 默认 OK,但自建 CI 在国内要显式配 GOPROXY。
怎么确认修好了
拉依赖正常(实测输出形态):
GOPROXY=https://goproxy.cn,direct 拉 cobra v1.8.1 + pflag 仅 2.3s(exit 0,实测)
复现基线:GOPROXY=https://proxy.golang.org,direct 拉同一版本 → dial tcp 142.250.69.177:443: i/o timeout(30s,实测,与 golang/go#63244 同款)。
其它环境的表现
| 环境 | 说明 |
|---|---|
| 校园网/家宽无代理 | 直连 proxy.golang.org 基本必超时 |
| 环境变量冲突 | go env -w 不覆盖 export,改源头 |
| sumdb 超时 | sum.golang.google.cn 或 GOSUMDB=off |
| 私有模块 | GOPRIVATE 绕过 |
| CI | 自建 CI 显式配 GOPROXY |
症状
go get / go mod download / go build(首次拉依赖)报:
go: github.com/spf13/cobra@v1.8.1: Get "https://proxy.golang.org/github.com/spf13/cobra/@v/v1.8.1.info": dial tcp 142.250.69.177:443: i/o timeout
特征:报错 IP 是 Google 网段(142.250.x / 142.251.x / 173.194.x); 国内网络(校园网/家宽无代理)直连 proxy.golang.org 基本必超时(golang/go#63244、#34548、#49201 等一批); 同一台机器过段时间又可能通——网络波动,不是代码问题。
同族但根因不同(别在本页死磕网络):
checksum mismatch(模块校验和不符)→ 代理缓存不同步,go clean -modcache后重新下载(机制核对);no space left on device(下载/构建阶段)→ 磁盘满;WSL 下 df 有空间但写不进是宿主盘满,先查df -h /mnt/c。
原因
Go 默认模块代理 proxy.golang.org(以及校验和 sum.golang.org)托管在 Google 基础设施上, 国内直连不稳定,TCP 拨号直接 i/o timeout。 国内公共代理 goproxy.cn(七牛)是官方文档推荐给中国用户的方案,还有 goproxy.io、公司内网 Athens/nexus 等。
解法
- 临时:
GOPROXY=https://goproxy.cn,direct go get ...(direct兜底回源); - 持久化(用户级):
go env -w GOPROXY=https://goproxy.cn,direct(写入go env -w配置文件);
同时建议 go env -w GOSUMDB=sum.golang.org(goproxy.cn 可正常转发校验和,国内一般不用关)。
- 优先级注意:环境变量
GOPROXY=...(export 在 shell/系统里)>go env -w写入值 > 默认值。
如果 shell 里 export 了 GOPROXY,go env -w 不会生效(实测警告:does not override conflicting OS environment variable), 要么改 export 的那一处(~/.bashrc / /etc/environment),要么显式 GOPROXY=... go ...。
- 校验和:若
sum.golang.org也超时,可GOSUMDB=off(牺牲供应链校验,不推荐持久化)或GOSUMDB=sum.golang.google.cn(国内可达镜像)。 - 私有模块:公司内网模块要配
GOPRIVATE=公司域名(自动绕过 proxy 与 sumdb)。 - CI:GitHub Actions 上
actions/setup-go默认 OK,但自建 CI 在国内要显式配 GOPROXY。
验证证据
- 本地实测(2026-08-29,WSL Ubuntu,go 1.26.4,校园网无代理):
- 基线:本机已配
GOPROXY=https://goproxy.cn,direct(环境变量)——goproxy.cn 拉 cobra v1.8.1 + pflag 仅 2.3s(exit 0); - 复现:显式
GOPROXY=https://proxy.golang.org,direct拉同一版本 →dial tcp 142.250.69.177:443: i/o timeout(30s),与 golang/go#63244 同款; - 优先级实测:shell 环境变量存在时
go env -w GOPROXY=...报 warning「does not override conflicting OS environment variable」,go env GOPROXY仍是环境变量值; - 持久化链路:
go env -w GOPROXY=https://goproxy.cn,direct在无环境变量冲突时写入配置(本次因环境变量优先未生效,如实记录)。 - 实测复现日志(2026-08-29)
相关 canonical
按「同根(国内换源家族)」读:
- pip 安装超时/慢(同根:换源家族,python 侧)
- npm install 慢/挂起(同根:换源家族,node 侧)
- docker pull 失败/镜像加速(同根:换源家族,容器侧)
- GitHub 直连慢/失败(网络层同根:出口不稳)
适用工具 (1)
本问题方案已挂到下列工具的方案页——从工具页也能回到这里,双向可达。
go · 外部工具成套方案 (组合包)
这个问题包含在下列成套安装方案中。
- 国内网络一键配源 partial
来源与证据
← 编码代理与终端 问题域 | 问题货架 | 遇到其它问题?去 问题空间 提交求助卡