这是一个基于 Cloudflare Workers 构建的 WebSocket SOCKS 代理服务,用于简单内网穿透,无需任何服务器部署。
如果你已有特定的内网服务器,建议使用 FRP 或 Cloudflare Tunnel。
本项目主要用于快速连接到不确定用户的内网环境。
- 从 https://github.com/linksocks/linksocks/releases 下载 linksocks 客户端
- 选择适合你系统的版本(Windows、Linux、macOS)
- 解压后添加到 PATH 或直接在命令行运行
本仓库包含 Cloudflare Worker 服务端代码。你可以:
# 步骤 1:在机器 A 上(位于你想访问的网络内)
linksocks provider -t any_token -u l.zetx.tech -c your_token
# 步骤 2:在机器 B 上(你想从这里访问网络)
linksocks connector -t your_token -u l.zetx.tech -p 1180运行这两个命令后,你可以通过机器 B 上的 SOCKS5 代理(127.0.0.1:1180)访问内部网络。
将你的浏览器或应用程序配置为使用此 SOCKS5 代理来访问内部网络资源。
- 零基础设施:无需维护服务器,带宽不受限制
- 即插即用:仅需两条命令建立连接,无需配置文件,无需在线预设置
- Cloudflare 边缘代理:全球覆盖,低延迟访问
- 负载均衡:使用相同令牌的多个 "provider" 将自动分担负载
本服务使用 Cloudflare Durable Objects,有免费层限制(每天 13,000 GB-s)。 更多关于限制和定价的信息,请参见:https://developers.cloudflare.com/durable-objects/platform/pricing/
Worker 提供健康状态接口,用于外部监控。健康检查结果缓存在 Durable Object 中,有效期 1 小时,接近过期时自动刷新。
返回当前缓存的健康状态。如果缓存不存在或已过期,会自动运行一次探测。
状态码:
200— 健康(所有检查项通过)503— 异常(一项或多项检查失败)
返回字段:
| 字段 | 类型 | 说明 |
|---|---|---|
active |
boolean |
所有检查通过时为 true |
checkedAt |
number |
检查执行的时间戳(毫秒) |
cacheExpiresAt |
number |
缓存过期时间戳(毫秒) |
refreshAfter |
number |
此时间戳之后的轮询请求会触发刷新 |
origin |
string |
探测使用的 Worker 域名 |
checks |
object |
各项检查结果(见下表) |
usage |
object|null |
当日 Durable Object 用量(GraphQL),不可用时为 null |
reason |
string|null |
失败原因(分号分隔),健康时为 null |
cached |
boolean |
是否从缓存返回 |
refreshed |
boolean |
本次是否运行了新的探测 |
cacheAgeMs |
number |
缓存已存在的时间(毫秒),新刷新时为 0 |
checks 对象:
| 字段 | 类型 | 说明 |
|---|---|---|
durableObjectAccess |
boolean |
成功调用了 Token Durable Object 的方法 |
storageRoundTrip |
boolean |
向 DO 存储写入一个值并读回,验证一致 |
workerRequest |
boolean |
Worker 请求了自身的 /api/health/ping 端点 |
storedDataWithinLimit |
boolean |
storedBytes 低于 5 GB |
示例:
curl https://your-worker.example.com/api/health为外部监控工具设计的轮询端点。行为与 /api/health 相同,但额外检查缓存是否接近过期(10 分钟内)。如果是,会先运行一次探测再返回。
典型用法:配置监控工具每 5 分钟轮询一次。缓存每小时自动刷新一次,接近过期时的轮询会保持缓存新鲜。
curl https://your-worker.example.com/api/health/poll在 URL 后附加 ?force=1 可跳过缓存,立即运行一次全新探测:
curl https://your-worker.example.com/api/health/poll?force=1