温馨提示×

CentOS Golang网络如何配置

小樊
34
2025-12-29 04:28:20
栏目: 编程语言

CentOS 上 Go 语言网络配置

一 系统网络与防火墙

  • 查看网卡名称与地址:ip addr;临时设置 IP 与网关可用 ifconfig 与 route(重启失效)。
  • 静态 IP 永久配置(传统 ifcfg 文件):编辑 /etc/sysconfig/network-scripts/ifcfg-ensXX,示例:
    BOOTPROTO=static;ONBOOT=yes;IPADDR=192.168.1.100;NETMASK=255.255.255.0;GATEWAY=192.168.1.1;DNS1=8.8.8.8;DNS2=8.8.4.4。应用:sudo systemctl restart network。
  • 或使用 NetworkManager:nmcli con show;nmcli con mod “ens160” ipv4.addresses 192.168.1.100/24;ipv4.gateway 192.168.1.1;ipv4.dns “8.8.8.8 8.8.4.4”;ipv4.method manual;nmcli con down “ens160” && nmcli con up “ens160”。
  • 防火墙放行端口(HTTP/HTTPS 示例):firewall-cmd --permanent --zone=public --add-service=http;firewall-cmd --permanent --zone=public --add-service=https;firewall-cmd --reload。

二 Go 与网络相关的环境变量

  • HTTP/HTTPS 代理(终端与 Go 程序均生效):在 ~/.bashrc~/.zshrc 中添加
    export HTTP_PROXY=http://proxy.example.com:8080
    export HTTPS_PROXY=http://proxy.example.com:8080(如需认证:http://user:pass@proxy.example.com:8080),执行 source 使其生效。
  • 不走代理的地址:export NO_PROXY=localhost,127.0.0.1,example.com
  • Go 模块代理(国内常用镜像):export GOPROXY=https://goproxy.cn,direct
  • Go 网络调试:export GODEBUG=net=1

三 连通性验证与常见问题

  • 系统层验证:ping -c 4 www.baidu.com;ip addr/route -n 检查地址与路由;ss -tulpen 或 netstat -tulpen 检查监听端口。
  • Go 程序验证(示例):
    package main
    import (“fmt”; “net/http”)
    func main() { resp, err := http.Get(“https://www.example.com”); if err != nil { panic(err) }; defer resp.Body.Close(); fmt.Println(“Status:”, resp.Status) }
    运行:go run test.go,返回 200 表示网络与代理配置正常。
  • 常见问题排查:
    1. DNS 解析失败:检查 /etc/resolv.conf 是否包含 nameserver(如 8.8.8.8);
    2. 代理不通:确认代理地址、端口、认证信息,以及 NO_PROXY 是否覆盖了目标域名;
    3. 端口未放行:firewall-cmd --list-ports 与 --list-services 核对,必要时放行对应端口并重载防火墙。

四 可选的系统级网络参数优化

  • 内核网络参数(/etc/sysctl.conf):
    net.ipv4.tcp_rmem=4096 87380 16777216;net.ipv4.tcp_wmem=4096 65536 16777216;net.ipv4.tcp_max_syn_backlog=2048;net.ipv4.ip_local_port_range=1024 65535;执行 sysctl -p 生效。
  • Go 运行时网络调试:GODEBUG=net=1 可输出更详细的网络事件,便于定位连接、解析与超时问题。

0