XTCP 穿透指南

已弃用功能

我们已自 2023 年起弃用 XTCP 隧道,此页面目前处于存档状态,仅供参考
如需使用 P2P 连接,请参阅 借助 frpc 的端口导出功能打洞 配置端口导出功能

前置知识

提示

XTCP 隧道仅支持 Full-Cone NAT,其他类型的 NAT 无法打洞

XTCP 隧道的穿透逻辑如下图

当电脑 A 想访问电脑 B 的某个服务时,电脑 B 上需要启动 服务隧道 准备接受连接

而电脑 A 需要启动 访问隧道,启动后电脑 A 会通过 SakuraFrp 请求与电脑 B 建立直接连接 (红色箭头)

注意

由于国内网络环境极为复杂,中间可能隔了 N 个奇怪的路由,打洞很成功率 极低

如果打洞成功,两台电脑间就会建立 P2P 连接,流量直接 P2P 传输,不经过 SakuraFrp 服务器 (绿色箭头)

创建隧道

XTCP 穿透时需要建立两条隧道,并且两条隧道均需位于同一节点上。

提示

服务隧道 的隧道名后面要用到,建议自己写一个
访问隧道 的隧道名无关紧要,可以留空让系统自动生成

  1. 创建 服务隧道,这条隧道将在上图中的 电脑 B 上运行。

    安全警告

    设置弱访问密码可能产生安全隐患,建议留空让系统自动生成

  2. 如果您让系统自动生成了访问密码,编辑隧道即可查看该密码:

    安全警告

    保存好您的访问密码,该密码泄露可能产生安全隐患

  3. 创建 访问隧道,即您准备访问服务时开启的隧道。

    • 两条隧道必须位于同一节点
    • 访问密码 处填写相同的密码
    • 服务名称 处填写 服务隧道隧道名
    • 访问身份 处选择 访问者

    此处填写的 本地端口 会在访问服务时用到,在这个例子中:

    提示

    在电脑 A 上连接 访问隧道 监听的端口 (127.0.0.1:6666)

    等于

    提示

    连接到位于电脑 B 的 本地服务 (127.0.0.1:2333)

启动隧道

  1. 前往电脑 B 启动 服务隧道,即刚才创建的第一条隧道

    提示

    启动器目前暂时不支持启动 访问隧道,请通过命令行开启一条 访问隧道 可以在多个设备上同时开启,无需重复创建

  2. 然后在需要访问服务时前往电脑 A 启动 访问隧道

  3. 此时,在电脑 A 上访问 127.0.0.1:6666 就能访问到电脑 B 的 127.0.0.1:2333

日志说明

再次强调

我们不提供任何 XTCP 隧道相关的技术支持,碰到问题请您自行解决

  • nat hole connection make success 说明打洞成功,可以正常连接
  • get sid from ... error: read udp ...: i/o timeout 说明打洞失败,请检查两边的 NAT 环境是否符合要求