在 CentOS 上用 Golang 编译程序时,网络问题确实容易卡住人。别慌,下面这几招基本能覆盖最常见的状况——从基础检查到国内镜像源切换,一条条来,大多数问题都能解决。

- 先确认网络通不通——最基础但最容易忽略的一步。用
ping命令试一下目标地址,比如:
ping www.google.com
如果 ping 不通,说明系统本身就连不上外网,后面所有操作都白搭。
- 如果网络环境需要袋里,那就得在编译前把袋里变量设好。HTTP 和 HTTPS 袋里各设一个:
export HTTP_PROXY=http://proxy.example.com:port
export HTTPS_PROXY=https://proxy.example.com:port
把 proxy.example.com 和 port 替换成实际的袋里地址和端口号。设完之后再编译,问题基本就能绕过去。
- Go 模块源可能被限制,国内用户尤其常见。把 Go 模块源换成国内镜像,比如 goproxy.io,一次搞定:
go env -w GOPROXY=https://goproxy.io,direct
这一步对下载依赖特别管用,比改袋里更直接。
- 检查 CentOS 防火墙——有时候防火墙会把 Go 程序的网络请求拦下来。用
firewall-cmd查看状态:
sudo firewall-cmd --state
如果防火墙开着,并且编译过程中需要访问外部服务,记得放行相应端口。比如开放 TCP 80 和 443:
sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
sudo firewall-cmd --permanent --zone=public --add-port=443/tcp
sudo firewall-cmd --reload
- DNS 配置也可能掉链子。检查一下
/etc/resolv.conf文件,里面得有几个能用的 DNS 服务器地址。比如直接用 Google 的:
nameserver 8.8.8.8
nameserver 8.8.4.4
当然,你也可以改成自己常用的 DNS。
以上方法依次试下来,大部分网络问题都能找到原因。如果还不行,建议多留意编译时的具体错误信息——它们往往能直接告诉你到底是连不上源、袋里无效还是防火墙拦截。