HevSocks5Server 安装部署配置教程
HevSocks5Server 是一款轻量级、高性能的 SOCKS5 服务器,由 heiher 开发,采用 C 语言编写,支持 Linux、Android、BSD、macOS 和 iOS 等 Unix-like 系统。它特别适合作为 HevSocks5Tunnel 或 SocksTun Android 客户端 的服务端组件。本文将从源码编译、配置文件、运行部署到性能调优,提供完整的安装配置指南。
一、项目概述
HevSocks5Server 的核心特性包括:
- 高性能:在 Linux x86_64 平台上,单路连接的 TCP 上传/下载速率可达约 32 GB/s,10 路并发速率约 130 GB/s
- 低内存占用:运行时内存使用稳定在约 77 MB
- 支持 UDP:UDP 可通过 TCP 封装传输(UDP over TCP),适用于受限网络环境
- IPv4/IPv6 双栈:同时支持 IPv4 和 IPv6
- 轻量级:无外部依赖,编译后二进制文件极小
与上一教程的 HevSocks5Tunnel(客户端)不同,HevSocks5Server 是服务端程序,用于在服务器上部署 SOCKS5 代理服务。
二、安装前准备
2.1 系统要求
- 操作系统:Linux、FreeBSD、macOS、Android、iOS 等 Unix-like 系统
- 硬件:根据预期并发量配置,轻量级场景(<100 并发)最低 256MB 内存即可
- 网络:需要开放服务端口(默认 1080)
2.2 依赖工具
编译安装需要以下基础工具:
# CentOS/RHEL
sudo yum install -y git make gcc
# Debian/Ubuntu
sudo apt install -y git make gcc
# macOS (需要先安装 Xcode Command Line Tools)
xcode-select --install
brew install git make
2.3 开放端口(以 CentOS 7 为例)
# 开放 1080 端口(假设使用默认端口)
sudo firewall-cmd --permanent --add-port=1080/tcp
sudo firewall-cmd --permanent --add-port=1080/udp
sudo firewall-cmd --reload
# 或直接关闭防火墙(仅测试环境)
sudo systemctl stop firewalld
sudo systemctl disable firewalld
三、从源码编译安装
3.1 下载源码
# 克隆仓库(必须使用 --recursive 拉取子模块)
git clone --recursive https://github.com/heiher/hev-socks5-server
cd hev-socks5-server
--recursive参数非常重要,项目依赖的子模块必须一并下载,否则编译会失败。
3.2 编译
# 标准编译
make
# 静态链接编译(生成完全静态的可执行文件,便于分发)
make ENABLE_STATIC=1
# 如需显示详细编译信息
make V=1
编译完成后,可执行文件位于 bin/hev-socks5-server。
3.3 安装到系统路径
# 复制到系统路径
sudo cp bin/hev-socks5-server /usr/local/bin/
# 验证安装
hev-socks5-server -h
四、配置文件详解
HevSocks5Server 支持两种配置方式:命令行参数和 YAML 配置文件。推荐使用 YAML 配置文件方式。
4.1 基础配置文件
创建配置文件 /etc/hev-socks5-server/main.yml:
main:
workers: 4 # 工作线程数
port: 1080 # 监听端口
listen-address: '::' # 监听地址(IPv6格式表示所有地址)
udp-port: 1080 # UDP 关联端口
listen-ipv6-only: false # 是否仅监听 IPv6
misc:
limit-nofile: 65535 # 文件描述符限制
log-level: info # 日志级别: debug, info, warn, error
4.2 高级配置(含认证)
如需添加用户名/密码认证:
main:
workers: 4
port: 1080
listen-address: '::'
udp-port: 1080
listen-ipv6-only: false
auth:
enabled: true
users:
- username: "your_username"
password: "your_password"
# 可添加多个用户
# - username: "user2"
# password: "pass2"
misc:
limit-nofile: 65535
log-level: info
log-file: /var/log/hev-socks5-server.log
4.3 配置参数完整说明
main 部分:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
workers |
int | 1 | 工作线程数,建议设置为 CPU 核心数 |
port |
int | 1080 | TCP 监听端口 |
listen-address |
string | '::' | 监听地址,'::' 表示所有 IPv4/IPv6 地址 |
udp-port |
int | 1080 | UDP 关联端口(SOCKS5 UDP ASSOCIATE) |
listen-ipv6-only |
bool | false | true 时仅监听 IPv6,false 时双栈监听 |
misc 部分:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
limit-nofile |
int | 65535 | 最大打开文件描述符数 |
log-level |
string | info | 日志级别:debug, info, warn, error |
log-file |
string | stderr | 日志文件路径,默认输出到标准错误 |
五、运行与部署
5.1 直接运行
# 使用配置文件启动
sudo /usr/local/bin/hev-socks5-server /etc/hev-socks5-server/main.yml
5.2 命令行参数方式(快速测试)
# 参数说明:
# -h: 监听地址
# -p: 监听端口
# -l: 日志级别 (1-4,数字越大越详细)
# 前台运行测试
hev-socks5-server -h 0.0.0.0 -p 1080 -l 4
# 后台运行
nohup hev-socks5-server -h 0.0.0.0 -p 1080 -l 4 > /dev/null 2>&1 &
5.3 配置为 systemd 服务(推荐)
创建服务文件 /etc/systemd/system/hev-socks5-server.service:
[Unit]
Description=Hev Socks5 Server
After=network.target
[Service]
Type=simple
User=nobody
Group=nobody
ExecStart=/usr/local/bin/hev-socks5-server /etc/hev-socks5-server/main.yml
Restart=on-failure
RestartSec=5s
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
启动并设置开机自启:
# 重载 systemd 配置
sudo systemctl daemon-reload
# 启动服务
sudo systemctl start hev-socks5-server
# 设置开机自启
sudo systemctl enable hev-socks5-server
# 查看状态
sudo systemctl status hev-socks5-server
# 查看日志
sudo journalctl -u hev-socks5-server -f
六、验证服务
6.1 检查端口监听
# 查看端口是否正常监听
ss -tlnp | grep 1080
# 或
netstat -tlnp | grep 1080
预期输出应包含:
LISTEN 0 128 [::]:1080 [::]:* users:(("hev-socks5-serv",pid=xxx,fd=xx))
6.2 使用 curl 测试
# 通过 SOCKS5 代理访问(无认证)
curl --socks5 127.0.0.1:1080 https://ip.sb
# 带认证
curl --socks5 username:password@127.0.0.1:1080 https://ip.sb
6.3 使用 HevSocks5Tunnel 客户端测试
如果已部署 HevSocks5Tunnel,可配置客户端连接此服务端进行端到端测试。
七、性能调优
7.1 工作线程数调优
main:
# 建议设置为 CPU 核心数
workers: 4
查看 CPU 核心数:
nproc
7.2 系统参数优化
编辑 /etc/sysctl.conf:
# 增大文件描述符限制
fs.file-max = 1048576
# 优化网络缓冲区
net.core.rmem_max = 134217728
net.core.wmem_max = 134217728
net.ipv4.tcp_rmem = 4096 87380 134217728
net.ipv4.tcp_wmem = 4096 65536 134217728
# 启用 TCP Fast Open
net.ipv4.tcp_fastopen = 3
应用配置:
sudo sysctl -p
7.3 内存优化(嵌入式设备)
如果运行在内存受限的设备上:
main:
workers: 1 # 单线程模式
port: 1080
listen-address: '::'
misc:
limit-nofile: 1024 # 降低文件描述符限制
log-level: warn # 减少日志输出
八、故障排查
8.1 常见问题及解决方案
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| 端口已被占用 | 其他进程占用 1080 端口 | 更换端口:lsof -i:1080 查看占用进程 |
| 客户端连接失败 | 防火墙未开放端口 | firewall-cmd --add-port=1080/tcp --permanent |
| UDP 无法转发 | SOCKS5 客户端不支持 UDP | 服务端配置 UDP over TCP 模式(需客户端配合) |
| 认证失败 | 用户名/密码不匹配 | 检查配置文件中的认证信息 |
| 高负载下连接断开 | 文件描述符不足 | 增加 limit-nofile 和系统 ulimit -n |
8.2 调试模式运行
# 前台运行,输出详细日志
/usr/local/bin/hev-socks5-server -h 0.0.0.0 -p 1080 -l 4
8.3 连接测试失败排查流程
# 1. 检查端口监听
ss -tlnp | grep 1080
# 2. 检查防火墙
iptables -L -n
firewall-cmd --list-all
# 3. 本地测试
curl -v --socks5 127.0.0.1:1080 https://ip.sb
# 4. 远程测试(在另一台机器)
curl -v --socks5 <服务器IP>:1080 https://ip.sb
# 5. 抓包分析
tcpdump -i eth0 port 1080 -nn
九、安全建议
- 启用认证:生产环境务必启用用户名/密码认证
- 限制访问来源:使用防火墙限制可访问服务器的 IP 范围
# 仅允许 192.168.1.0/24 网段访问
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="1080" accept'
firewall-cmd --reload
- 非 root 用户运行:使用 systemd 服务时已配置
User=nobody -
定期更新:关注 GitHub 仓库的更新和安全公告
十、总结
HevSocks5Server 的核心优势在于极致的性能和极低的资源占用。以下是关键配置要点回顾:
| 配置项 | 生产环境建议 | 测试环境建议 |
|---|---|---|
| workers | CPU 核心数 | 1 |
| 认证 | 必须启用 | 可选 |
| 日志级别 | warn 或 error | debug 或 info |
| limit-nofile | 65535 或更高 | 默认 |
| 防火墙 | 限制来源 IP | 开放端口即可 |
配置完成后,服务端可与 HevSocks5Tunnel(客户端)配合使用,实现完整的 SOCKS5 代理解决方案。如在配置过程中遇到问题,请提供具体的错误信息以便进一步排查。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)