Skip to content

P2P 隧道使用教程

适用场景

P2P 隧道适用于需要低延迟、高带宽的点对点通信场景,例如远程桌面、文件传输、局域网游戏等。通过 P2P 打洞直连,数据无需经过服务器中转,大幅降低延迟。

P2P 隧道简介

Frpee 提供了基于 FRP 的 P2P 隧道功能,支持两种代理类型:

代理类型说明适用场景
STCP(安全隧道)数据通过服务器中转,连接端和共享端使用相同的 SecretKey 建立连接对延迟不敏感、需要稳定连接的场景
XTCP(打洞隧道)基于 P2P 打洞直连,低延迟、高带宽;打洞失败时可自动回退 STCP 中转对延迟敏感、需要高带宽的场景

前置条件

使用 P2P 隧道前,必须先在 Frpee 控制台 创建隧道,并获取 SecretKey

使用方式

P2P 隧道有两种使用方式,你可以根据自己的需求选择:

  • 方式一:使用 Frpee-P2P 客户端(推荐,图形化界面,操作简单)
  • 方式二:使用 frpc 命令行 + frpc.toml 配置文件(适合进阶用户)

方式一:使用 Frpee-P2P 客户端

Frpee-P2P 客户端提供了图形化界面,无需手动编写配置文件,即开即用。

第一步:创建隧道并获取 SecretKey

  1. 登录 Frpee 控制台
  2. 创建一个新的 P2P 隧道(选择 STCP 或 XTCP 类型)
  3. 创建成功后,记录下 SecretKey

创建隧道并获取SecretKey

第二步:下载并启动 Frpee-P2P 客户端

前往 Frpee-P2P 下载页 下载对应平台的客户端。

第三步:配置并连接

填写配置,点击启动即可建立 P2P 连接。

Frpee-P2P 客户端配置

客户端中信息说明:

配置项说明
服务器地址填写创建隧道时使用的 FRPS 节点地址(如 free.frpee.com
服务器端口FRPS 服务端口,默认 7000
用户认证填写你的专属账号(user)和密码(token)
SecretKey填写在控制台创建隧道时获取的 SecretKey

方式二:使用 frpc 命令行配置

如果你更习惯使用命令行,可以通过编写 frpc.toml 配置文件来启动 P2P 隧道。

STCP 配置示例

toml
serverAddr = "free.frpee.com"
serverPort = 7000

user = "439711"

# 共享端配置(提供服务的一方)
[[proxies]]
name = "stcp-proxy"
type = "stcp"
secretKey = "your-secret-key"
localIP = "127.0.0.1"
localPort = 3389

XTCP 配置示例

toml
serverAddr = "free.frpee.com"
serverPort = 7000

user = "439711"

# 共享端配置(提供服务的一方)
[[proxies]]
name = "xtcp-proxy"
type = "xtcp"
secretKey = "your-secret-key"
localIP = "127.0.0.1"
localPort = 3389

# 连接端配置(访问服务的一方)
# 在另一台设备上运行 frpc,使用以下配置
# [[visitors]]
# name = "xtcp-proxy-visitor"
# type = "xtcp"
# secretKey = "your-secret-key"
# role = "visitor"
# serverName = "xtcp-proxy"
# bindAddr = "127.0.0.1"
# bindPort = 6000

XTCP 回退机制

XTCP 打洞失败时,可以配置 fallback 自动回退到 STCP 中转:

toml
[[visitors]]
name = "xtcp-proxy-visitor"
type = "xtcp"
serverName = "xtcp-proxy"
secretKey = "your-secret-key"
localIP = "127.0.0.1"
localPort = 3389
fallbackTo = "stcp-visitor"
fallbackTimeoutMs = 200

启动命令

配置好 frpc.toml 后,在终端执行以下命令启动:

bash
frpc -c frpc.toml

说明

  • 共享端(提供服务的一方)和连接端(访问服务的一方)都需要运行 frpc 客户端
  • 两端使用相同的 secretKey 才能建立连接
  • 连接端配置中需要设置 role = "visitor"

常见问题

Q: STCP 和 XTCP 应该怎么选?

  • 如果你对延迟不敏感,优先选择 STCP,连接更稳定
  • 如果你需要低延迟(如远程桌面、游戏联机),选择 XTCP,打洞失败会自动回退 STCP

Q: P2P 打洞失败怎么办?

  • 确认双方的防火墙/路由器是否允许 UDP 打洞
  • 尝试使用 STCP 模式作为替代方案
  • 配置 XTCP 的 fallback 机制,自动回退到 STCP 中转

Q: SecretKey 可以重复使用吗?

  • 同一个 SecretKey 能被一组(两个)客户端或多个重复使用

Q: P2P 隧道是否安全?

  • STCP 模式下,数据通过服务器中转,使用 SecretKey 加密
  • XTCP 模式下,P2P 打洞成功后数据直连,不经过服务器
  • 两种模式都需要使用 SecretKey 进行认证,确保连接安全