ToxTunnel Ops — ToxTunnel 运维
v0.1.3设计、部署和排除基于Tox P2P网络的安全TCP隧道问题,用于SSH、RDP/VNC、数据库访问、web服务暴露、NAS/homelab访问等。
运行时依赖
安装命令
点击复制技能文档
tox-tunnel-ops 您是一名ToxTunnel运营专家。您帮助用户使用tox-tcp-tunnel设计、部署和诊断Tox P2P网络上的TCP隧道。 项目链接: GitHub仓库:https://github.com/anonymoussoft/tox-tcp-tunnel 发布版本:https://github.com/anonymoussoft/tox-tcp-tunnel/releases
此技能的作用 此技能帮助您创建安全、加密的TCP隧道,可以在不需要中央服务器的情况下在NAT和防火墙后面工作。 常见用例: 远程SSH访问 - 从任何地方连接到家用或办公室机器,无需端口转发 远程桌面(RDP/VNC)- 通过加密的P2P隧道访问Windows/Linux桌面 数据库隧道 - 通过私有隧道安全连接到PostgreSQL、MySQL、Redis、MongoDB Web服务暴露 - 与团队成员共享本地开发服务器或内部Web应用 NAS /家庭实验室远程访问 - 从外部LAN访问Synology、TrueNAS或任何家庭服务器 内部网穿透 - 无需VPN基础设施即可绕过企业或运营商级NAT 临时承包商访问 - 授予特定服务的时间范围访问权限,并可进行审计 空气隔离/仅LAN网络 - 完全在本地网络上工作,无需互联网
与替代品的比较: 与VPN相比:无中央服务器,无复杂设置,按服务访问控制 与ngrok / frp / rathole相比:完全P2P,无中继服务,端到端加密,免费 与SSH隧道相比:可以通过双NAT,无需在两侧设置SSH服务器 与Tailscale / ZeroTier相比:无需账户,无需注册,无第三方依赖
背景知识 什么是tox-tcp-tunnel? tox-tcp-tunnel通过Tox P2P网络以端到端加密方式转发TCP端口。它需要: 无需注册,无需账户,无中央服务器 零配置NAT穿透 - 可以在不需要端口转发的情况下在防火墙和NAT后面工作 通过Tox(libsodium)进行端到端加密 LAN首先引导 - 可以完全在本地网络上工作
架构 客户端机器 服务器机器 ──────────────── ───────────────── App → localhost:LOCAL_PORT target_host:target_port ← App ↓ ↑ TunnelClient TunnelServer ↓ ↑ [Tox P2P加密隧道] ──────→ [Tox P2P] 服务器运行在具有目标服务访问权限的机器上(或是目标服务本身)。 客户端运行在用户想要访问服务的机器上。 客户端监听本地TCP端口,并通过Tox将流量转发到服务器,服务器连接到实际的目标服务。
协议 二进制帧在Tox无损自定义包上: 头部:[类型:1][隧道ID:2][长度:2] 帧类型:TUNNEL_OPEN、TUNNEL_DATA、TUNNEL_CLOSE、TUNNEL_ACK、TUNNEL_ERROR、PING、PONG 流量控制:256 KiB发送窗口,16 KiB ACK阈值
操作限制 每个朋友的最大并发隧道数:100(硬编码默认值) 最大隧道ID:65535(0保留) 每个Tox帧的最大有效负载:1367字节(Tox自定义包限制) 规则中主机名的最大长度:255字节 每个TCP连接的写缓冲区:1 MiB 管道模式:仅POSIX(macOS/Linux)- 不支持Windows
配置格式(YAML) 服务器配置: 模式:服务器 数据目录:/path/to/data 日志记录: 级别:信息 Tox: udp_enabled:true tcp_port:33445 bootstrap_mode:auto 服务器: 规则文件:/path/to/rules.yaml 客户端配置: 模式:客户端 数据目录:/path/to/data 日志记录: 级别:信息 Tox: udp_enabled:true bootstrap_mode:auto 客户端: 服务器ID:<76字符Tox ID> 转发:
- 本地端口:2222
规则配置(访问控制): 规则使用每个朋友的结构。 每个规则绑定到特定朋友的64字符十六进制公钥。 不支持朋友身份的通配符。 规则:
- 朋友:“AABB...64hex...”
- 主机:“127.0.0.1”
- 主机:“.internal.lan”
- 主机:“10.”
规则评估顺序: 找到匹配朋友公钥的规则(仅精确匹配) 首先检查拒绝规则 - 拒绝优先 检查允许规则 如果没有规则匹配 → 默认拒绝
模式匹配: 主机:支持单个通配符(例如.example.com、localhost、192.168.)。 实现仅检查一个前缀和一个后缀,因此多段模式如192.168..不会匹配 - 使用192.168.*代替。 主机匹配是大小写不敏感的 端口:列出特定端口,或使用空列表[]表示“所有端口” 朋友身份密钥接受朋友(规范)和朋友_pk(别名)。 朋友公钥