轻量级HTTP&Socks代理GOST: 搭建 HTTP(S)和Socks代理

1.业务需求

在企业跨境访问、云服务器运维、数据采集和安全中转等业务场景中,Linux 服务器常被用作 统一网络出口 或 代理中继节点。通过部署代理服务,可以实现以下目标:

  • 稳定访问外网:将内网或受限网络的流量统一经由代理节点转发,提高跨境连接稳定性;
  • 安全加密传输:通过 HTTPS 或 SOCKS5 隧道加密数据,避免中间人攻击;
  • 集中流量控制与日志分析:在代理节点统一记录访问日志、监控流量状况;
  • 降低维护复杂度:希望软件轻量、部署简单、性能可靠,可一键运行。

传统方案(如 Squid 或 3proxy)虽然功能全面,但配置复杂、依赖繁多、资源占用高,不适合在轻量云主机或容器环境下使用。

而由 Go 语言编写的 GOST(Go Simple Tunnel) 天生跨平台、轻量高效,支持 HTTP、SOCKS、HTTPS、TLS、WebSocket、QUIC 等协议,可快速搭建多类型代理服务。

2.技术选型

为选择合适的代理技术,我们综合比较了当前主流方案:

|-------|---------------------------------|------------|------------|---------|--------------|
| 对比项 | GOST | 3proxy | Squid | HAProxy | Shadowsocks |
| 编写语言 | Go | C | C++ | C | Go/Python |
| 支持协议 | HTTP、SOCKS4/5、HTTPS、TLS、WS、QUIC | HTTP、SOCKS | HTTP、HTTPS | TCP/UDP | SOCKS5、自定义加密 |
| 部署复杂度 | 简单(单文件) | 中等 | 高 | 高 | 中等 |
| 性能 | 高(Go 并发模型) | 高 | 中 | 高 | 高 |
| 资源占用 | 低 | 低 | 高 | 中 | 中 |
| 安全性 | 支持多层加密、认证 | 支持基本认证 | 支持 TLS | 强 | 强 |
| 跨平台 | ✅ | ✅ | ❌ | ✅ | ✅ |

选型结论:

  • 对于轻量场景(单机中转、容器代理):GOST 是最佳选择;
  • 对于需要 HTTPS 加密、代理级联、灵活转发的中间层:GOST 具备优于 Squid 的部署简易性;
  • GOST 一次部署即可提供 HTTP + SOCKS5 + HTTPS 三类代理,性能和稳定性兼顾。

3.落地实施

3.1启动 HTTP 代理

复制代码
sudo ./gost -L http://:8080
  • 监听本地 8080 端口,提供 HTTP 代理;

  • 若需认证:

    sudo ./gost -L "http://user:pass@:8080"

3.2启动 SOCKS5 代理

复制代码
sudo ./gost -L socks5://:1080
  • 支持 TCP 与 UDP 转发;

  • 若需要用户名密码:

    sudo ./gost -L "socks5://user:pass@:1080"

3.3启动 HTTPS 代理(HTTP+TLS)

生成证书
复制代码
sudo mkdir -p /etc/gost/certs
cd /etc/gost/certs
sudo openssl req -new -x509 -days 365 -nodes -out cert.pem -keyout key.pem -subj "/CN=yourdomain.com"
启动代理
复制代码
sudo /usr/local/bin/gost -L http+tls://:8443?cert=/etc/gost/certs/cert.pem&key=/etc/gost/certs/key.pem

3.4多协议组合运行

同时启用 HTTP、SOCKS5、HTTPS 三种代理:

复制代码
sudo ./gost \
 -L http://:8080 \
 -L socks5://:1080 \
 -L http+tls://:8443?cert=/etc/gost/certs/cert.pem&key=/etc/gost/certs/key.pem

或者使用配置文件 /etc/gost/config.json

复制代码
{
    "services": [
        {"name": "http",  "addr": ":8080", "handler": {"type": "http"}},
        {"name": "socks5","addr": ":1080", "handler": {"type": "socks5"}},
        {"name": "https", "addr": ":8443", "handler": {"type": "http",
          "tls": {"cert": "/etc/gost/certs/cert.pem","key": "/etc/gost/certs/key.pem"}}
        }
      ]
}

运行:

复制代码
sudo ./gost -C /etc/gost/config.json

5. 创建 systemd 服务

新建 /etc/systemd/system/gost.service

复制代码
[Unit]
Description=GO Simple Tunnel (gost)
After=network.target

[Service]
ExecStart=/usr/local/bin/gost -C /etc/gost/config.json
Restart=on-failure
User=nobody
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

启用并启动服务:

复制代码
sudo systemctl daemon-reload
sudo systemctl enable --now gost
sudo systemctl status gost -l

6. 测试与验证

查看监听端口
复制代码
sudo netstat -tulnp | grep gost
访问测试
复制代码
curl -x http://127.0.0.1:8080 https://ipinfo.io
curl -x socks5://127.0.0.1:1080 https://ipinfo.io
curl -x https://127.0.0.1:8443 --proxy-cacert /etc/gost/certs/cert.pem https://ipinfo.io

4.复盘总结

成果回顾

通过本文实践,我们在 Linux 环境中成功完成了从源码编译到运行的全过程:

  • 编译得到独立的 GOST 二进制程序;
  • 分别部署了 HTTP、SOCKS5、HTTPS 三种代理;
  • 配置 systemd 实现开机自启与自动重启;
  • 通过 curl 验证所有代理协议均工作正常。

方案优势

  • 轻量与高性能:
    • 单文件部署,无需依赖,启动速度快;
    • Go 并发模型保障高并发性能,能承载数千连接;
  • 多协议并行:
    • 一条命令即可同时启动多种代理;
    • HTTP/HTTPS/SOCKS5 共存,覆盖所有主流需求;
  • 安全与可扩展性:
    • HTTPS 通道提供 TLS 加密,确保传输安全;
    • 后续可级联上游代理(-F 参数),构建多层安全中转。

优化与扩展方向

  • 服务化与监控
    • 集成 Prometheus 监控端点,实时监控连接与带宽。
  • 安全加固
    • 使用 Let's Encrypt 免费证书替换自签证书;
    • 在 HTTP/SOCKS5 中启用用户认证,防止滥用。
  • 自动化部署
    • 使用 Ansible、Docker 或 Kubernetes 批量部署多个节点;
    • 结合 CI/CD(GitLab Runner)实现自动更新。
  • 多层级代理链
    • 使用 -F 参数连接远端 HTTPS 上游,实现链式代理:
    • 有效增强跨地域网络稳定性与安全性。
相关推荐
码农三叔4 小时前
(4-2-05)Python SDK仓库:MCP服务器端(5)Streamable HTTP传输+Streamable HTTP传输
开发语言·python·http·大模型·1024程序员节·mcp·mcp sdk
鸽鸽程序猿4 小时前
【JavaEE】SpringMVC获取HTTP中的元素
http·java-ee
forestsea4 小时前
从 XMLHttpRequest 到 Fetch API:现代前端网络请求的演进与迁移指南
前端·网络
鱼腩同学4 小时前
使用 curl 进行 HTTP 请求:详尽指南
网络·网络协议·http
IT枫斗者4 小时前
Spring Boot 4.0 正式发布:新一代起点到底“新”在哪?(Spring Framework 7 / Java 25 / JSpecify / API 版本管理 / HTTP Service
java·开发语言·spring boot·后端·python·spring·http
William_cl4 小时前
ASP.NET入门必吃透:HTTP 协议从流程到状态码,代码 + 避坑指南
后端·http·asp.net
龙茶清欢4 小时前
WebClient:Spring WebFlux 响应式 HTTP 客户端权威说明文档
java·spring·http
发疯幼稚鬼5 小时前
网络流问题与最小生成树
c语言·网络·数据结构·算法·拓扑学