go下载包
错误:github.com/emicklei/go-restful/v3: github.com/emicklei/go-restful/v3@v3.12.1: Get "https://proxy.golang.org/github.com/emicklei/go-restful/v3/@v/v3.12.1.zip": dial tcp: lookup proxy.golang.org on 127.0.0.53:53: server misbehaving
10.2.50.45/river/nubilum/pkg/api/shelf/amount tested by
10.2.50.45/river/nubilum/pkg/api/shelf/amount.test imports
github.com/google/gofuzz: github.com/google/gofuzz@v1.2.0: Get "https://proxy.golang.org/github.com/google/gofuzz/@v/v1.2.0.zip": dial tcp: lookup proxy.golang.org on 127.0.0.53:53: server misbehaving
10.2.50.45/river/nubilum/pkg/api/shelf/amount tested by
10.2.50.45/river/nubilum/pkg/api/shelf/amount.test imports
github.com/spf13/pflag: github.com/spf13/pflag@v1.0.5: Get "https://proxy.golang.org/github.com/spf13/pflag/@v/v1.0.5.zip": dial tcp: lookup proxy.golang.org on 127.0.0.53:53: server misbehaving
Go 在尝试通过proxy.golang.org代理下载依赖包时,多次出现 DNS 解析失败的问题(server misbehaving),这表明问题的根源在于系统的 DNS 配置。下面为你提供几种有效的解决办法:
一、临时修改 DNS 配置(推荐)
1. 修改 /etc/resolv.conf
sudo nano /etc/resolv.conf
添加以下内容(使用公共 DNS 服务器):
nameserver 8.8.8.8 # Google DNS
nameserver 1.1.1.1 # Cloudflare DNS
此文件可能会被系统服务(如systemd-resolved)覆盖。若重启后配置丢失,请使用方法二
2. 重启网络服务
sudo systemctl restart systemd-resolved
二、永久修改 DNS 配置(推荐)
1. 修改 systemd-resolved 配置
sudo nano /etc/systemd/resolved.conf
取消注释并修改以下行:
[Resolve]
DNS=8.8.8.8 1.1.1.1
FallbackDNS=8.8.4.4 1.0.0.1
2. 重启服务并验证
sudo systemctl restart systemd-resolved
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf # 确保使用systemd的配置
3. 测试 DNS 解析
nslookup proxy.golang.org
# 预期输出:
# Server: 8.8.8.8
# Address: 8.8.8.8#53
# Name: proxy.golang.org
# Address: 142.250.184.128
三、切换 Go 代理服务器
1. 使用国内代理(如阿里云)
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct
2. 多代理组合(优先级从高到低)
go env -w GOPROXY=https://goproxy.cn,https://proxy.golang.org,direct
四、手动下载依赖(离线环境)
1. 创建目录结构
mkdir -p $GOPATH/src/github.com/emicklei
cd $GOPATH/src/github.com/emicklei
# 克隆 go-restful/v3
git clone https://github.com/emicklei/go-restful.git
cd go-restful
git checkout v3.12.1
cd ..
# 克隆其他依赖(类似操作)
git clone https://github.com/google/gofuzz.git
cd gofuzz
git checkout v1.2.0
cd ..
git clone https://github.com/spf13/pflag.git
cd pflag
git checkout v1.0.5
2. 启用模块缓存模式
go env -w GOMODCACHE=$GOPATH/src
五、验证网络连通性
ping 8.8.8.8 # 测试网络是否能访问公网IP
ping proxy.golang.org # 测试域名解析是否正常
traceroute proxy.golang.org # 跟踪路由(可选)
六、清除 Go 模块缓存
go clean -modcache
go mod tidy
go mod download
最终解决方案建议
优先配置 DNS:按照方法二永久修改 DNS 配置,确保系统能正常解析域名。
切换 Go 代理:使用国内可靠代理(如阿里云或goproxy.cn)。
防火墙检查:确保防火墙未阻止访问proxy.golang.org或 GitHub。