快速开始
安装
Golang 版本
go install github.com/linksocks/linksocks/cmd/linksocks@latest或者从发布页面下载预构建的二进制文件。
Docker
docker run --rm -it jackzzs/linksocks --helpPython 版本
pip install linksocksINFO
Python 版本是 Golang 实现的包装器。参见:Python 绑定
选哪种模式?
| 模式 | 适合场景 | SOCKS5 在哪 | 谁出网 |
|---|---|---|---|
| 正向代理 | 把服务端所在网络共享给客户端 | 客户端本机 | 服务端 |
| 反向代理 | 把客户端(内网)网络共享到服务端 | 服务端 | 客户端(provider) |
| 中继代理 | 服务端只做中转;出网与 SOCKS5 分属两端 | connector 本机 | provider |
| 中继代理(自助连接者管理) | 公共中继 / 无服务器中继;每个 provider 自己发 connector token | connector 本机 | 对应 provider |
日常「内网穿透、两端都主动连中继」优先用 中继代理(自助连接者管理),也可直接用公共服务器 l.zetx.tech。
正向代理
服务端提供网络访问,客户端在本机开 SOCKS5。
服务端:
# 在端口 8765 启动 WebSocket 服务器
linksocks server -t example_token客户端:
# 连接到服务器并在端口 9870 提供 SOCKS5 代理
linksocks client -t example_token -u ws://localhost:8765 -p 9870测试:
curl --socks5 127.0.0.1:9870 http://httpbin.org/ip反向代理
服务端开 SOCKS5,客户端作为网络提供者接入。
服务端:
# 在端口 9870 启动 SOCKS5 代理
linksocks server -t example_token -r -p 9870客户端(provider):
# 作为网络提供者连接
linksocks client -t example_token -u ws://localhost:8765 -r
# 或:linksocks provider -t example_token -u ws://localhost:8765测试:
curl --socks5 127.0.0.1:9870 http://httpbin.org/ip中继代理
服务端只做中继,不直接出网。用两套令牌区分角色:
- provider token(
-t):谁可以共享网络 - connector token(
-c):谁可以使用代理
服务端:
linksocks server -t provider_token -c connector_token -p 9870 -rProvider(在要共享的网络内):
linksocks provider -t provider_token -u ws://localhost:8765Connector(需要 SOCKS5 的机器):
linksocks connector -t connector_token -u ws://localhost:8765 -p 1180测试:
curl --socks5 127.0.0.1:1180 http://httpbin.org/ip中继代理(自助连接者管理)
中继代理的变体,适合公共中继或 Cloudflare Workers 等场景:
- 服务端通常不监听 SOCKS5
- 每个 provider 自行指定 connector token(
-c) - 不做跨 provider 负载均衡:一个 connector 只连到登记了该 token 的 provider
服务端:
linksocks server -t provider_token -r -aProvider:
linksocks provider -t provider_token -c my_connector_token -u ws://localhost:8765Connector:
linksocks connector -t my_connector_token -u ws://localhost:8765 -p 1180使用公共服务器
公共中继 l.zetx.tech 即按此模式运行,无需自建 server:
步骤 1:机器 A(要访问的网络内部)
linksocks provider -t any_token -u wss://l.zetx.tech -c your_token步骤 2:机器 B(需要代理的地方)
linksocks connector -t your_token -u wss://l.zetx.tech -p 1080测试:
curl --socks5 127.0.0.1:1080 http://httpbin.org/ipWARNING
请使用足够复杂的 connector token。任何持有该 token 的人都可以使用你的 provider 网络。
生成强 token 示例:
openssl rand -hex 16在 Cloudflare Workers 上部署服务器
无服务器中继可部署到 Cloudflare Workers:
部署后的 Worker 以 中继代理(自助连接者管理) 方式运行。连接示例:
# Provider
linksocks provider -t any_token -c your_token -u wss://your-worker.your-subdomain.workers.dev
# Connector
linksocks connector -t your_token -u wss://your-worker.your-subdomain.workers.dev -p 9870P2P 直连(QUIC)
在反向代理、中继代理及其变体中,默认开启 P2P 直连(--direct-mode auto,候选发现 --direct-discovery stun)。当 provider 与 connector 之间能建立 UDP 直连时,数据不再经服务器中转,而通过加密 QUIC 直传,以降低延迟、提高吞吐。
未指定 STUN 服务器时,程序会并发探测内置公共 STUN 池,并选用响应最快的节点。可用 --stun-server 自定义,或用 --direct-mode / --direct-discovery 覆盖默认行为。
Linux 性能提示: 大流量 QUIC 直连时若出现 failed to sufficiently increase receive buffer size,多为系统默认 UDP 缓冲区偏小。程序仍可工作;若追求最佳性能(约 7MB 理想缓冲),可在运行前调整:
sudo sysctl -w net.core.rmem_max=2500000
sudo sysctl -w net.core.wmem_max=2500000HTTP API
服务端可启用 HTTP API,用于动态增删令牌、查看连接,无需重启:
linksocks server --api-key your_api_key详见:HTTP API
常用选项
SOCKS 身份验证
linksocks server -t token -r -p 9870 -n username -w password
linksocks client -t token -u ws://localhost:8765 -n username -w password调试日志
linksocks server -t token -d
linksocks client -t token -u ws://localhost:8765 -d自定义监听地址
# 服务端 WebSocket 监听所有接口
linksocks server -t token -H 0.0.0.0 -P 8765
# 客户端自定义 SOCKS 地址
linksocks client -t token -u ws://localhost:8765 -h 0.0.0.0 -p 1080下一步
Docker Compose
在两台机器上分别运行 provider 与 connector,默认都连公共中继 l.zetx.tech。
WARNING
请使用足够复杂的 connector token。任何持有该 token 的人都可以连接并使用你的 provider。
Provider 侧
在 provider 机器上创建 compose.yaml:
services:
linksocks-provider:
image: jackzzs/linksocks:latest
environment:
LINKSOCKS_MODE: provider
LINKSOCKS_URL: l.zetx.tech
LINKSOCKS_CONNECTOR_TOKEN: your_connector_token
restart: unless-stopped启动:
docker compose up -d
docker compose logs -f linksocks-providerConnector 侧
在 connector 机器上创建 compose.yaml:
services:
linksocks-connector:
image: jackzzs/linksocks:latest
environment:
LINKSOCKS_MODE: connector
LINKSOCKS_URL: l.zetx.tech
LINKSOCKS_TOKEN: your_connector_token
ports:
- "127.0.0.1:1080:1080"
restart: unless-stopped启动并测试:
docker compose up -d
curl --socks5 127.0.0.1:1080 http://httpbin.org/ip停止:
docker compose down所有参数均可通过环境变量传入 — 参见环境变量。
