元数据
| id | go-proxy-cn | 收录 | 2026-08-29 |
|---|---|---|---|
| 问题域 | 编码代理与终端 | 主题分组 | 网络与镜像 |
| 适用工具 | go · 外部工具 | ||
症状
`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](https://github.com/golang/go/issues/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 等。
解法
1. **临时**:`GOPROXY=https://goproxy.cn,direct go get ...`(`direct` 兜底回源);
2. **持久化(用户级)**:`go env -w GOPROXY=https://goproxy.cn,direct`(写入 `go env -w` 配置文件);
同时建议 `go env -w GOSUMDB=sum.golang.org`(goproxy.cn 可正常转发校验和,国内一般不用关)。
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. **校验和**:若 `sum.golang.org` 也超时,可 `GOSUMDB=off`(牺牲供应链校验,不推荐持久化)或 `GOSUMDB=sum.golang.google.cn`(国内可达镜像)。
5. **私有模块**:公司内网模块要配 `GOPRIVATE=公司域名`(自动绕过 proxy 与 sumdb)。
6. **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](https://github.com/golang/go/issues/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)
来源与证据
素材来源:https://github.com/golang/go/issues/63244
验证证据:Evidence details kept locally (2026-08-29)