跳到正文

frp.sh / 使用文档

简介 ​

frp-sh 是一个纯 Rust 实现的「社交化 P2P 组网」工具。它把「建立内网穿透/组网」这件事简化成三步社交动作:

text
frp-sh lan create          # 房主:生成一个房间号(组网,虚拟网卡整机入网)
frp-sh lan join lan-xxxx   # 朋友:凭房间号加入,即可互访整机与局域网

加入成功后,双方建立 UDP 打洞直连(P2P)。frp-sh 提供三个使用系列:

系列命令场景
组网(推荐)frp-sh lan类 Tailscale:虚拟网卡整机入网,互访整机 + 对方整个局域网
游戏frp-sh game默认虚拟局域网;可选指定 TCP/UDP 服务
开发frp-sh dev开发调试,应用层端口转发

当 NAT 过于严格、打洞失败时,流量自动回退到中继(配置了 TURN 供应商时优先走标准 TURN UDP 中继,否则走信令服务器私有 TCP 中继),保证可用。

核心特性 ​

特性说明
房间制社交组网lan-xxxxxx 房间号,朋友凭号加入,无需配置 IP
虚拟网卡组网lan 系列:二层隧道整机入网,可访问对方整个局域网(类 Tailscale)
同局域网直连自动通告局域网地址,同一 WiFi 秒级直连,不经服务器
UDP 打洞STUN 优先的公网探测 + PUNCH/ACK 同时握手,可穿透受限锥形 NAT
端口散布--spread 轻量端口预测,提高对称 NAT 命中率
端到端加密--key <口令> 双方一致即启用 ChaCha20-Poly1305(直连与 TURN 路径)
多连接复用同一隧道会话顺序接受多个 TCP 连接
中继回退打洞失败自动转 TURN 中继(可选)或服务器 TCP 中继,另有「迟到直连」复查自愈
内置 TURNserve --turn 单二进制提供标准 RFC 5766 TURN,客户端多供应商自动择优
单文件二进制不依赖 frp / libp2p / webrtc,全部逻辑自包含

适用场景 ​

  • 整机组网:两台/多台电脑组成虚拟局域网,互访 SSH、共享文件、打印服务(lan)
  • 局域网游戏联机:房主开个房间号,朋友 join 即达,无需公网 IP、无需端口映射(game)
  • 远程访问家里电脑:把家里的 SSH / 远程桌面等服务挂到隧道上
  • 开发联调:把本机服务临时转发给同事(dev)

不适用场景 ​

  • 需要匿名的公网访问(房间号即访问凭证,且访客需知道房间号)
  • 需要加密之外的鉴权(--key 提供机密性,不提供身份认证)
  • 严格的对称 NAT 且无中继(依赖中继回退保证可用性)

架构总览 ​

项目信息 ​

  • 语言:Rust(2021 edition),Tokio 异步运行时
  • 依赖:tokio / clap / axum / reqwest / serde / chacha20poly1305 / sha2 等
  • License:MIT

frp-sh · 社交化 P2P 打洞工具