233 sing-box 脚本 TCP 端口转发 Reality 协议 排错 Troubleshoot

233 boy 的 TCP 端口转发的教程
下图中示意, 左边的 142.171.237.9 是被墙的VPS, 右边的 142.171.223.56 是用来做端口中转的VPS.

如果你照着教程操作一遍, 发现不能正常使用. 那么本文指导你如何排查问题所在.

========
首先, 你要理解整个原理是什么.

左边的, 本来的reality协议节点, 底层是TCP直连, 那么是从你的 翻墙客户端(手机/电脑/...) 去连接 142.171.237.9 的 18255 端口.
现在被墙了, 那么无法直接TCP连接了.

右边的, 用于中转的VPS, 设置的 TCP端口中转 的本质是, 142.171.223.56 从端口 28828 收到的TCP数据, 会转发给 142.171.237.9 的 18255 端口. 

所以, 你现在可以把本来准备发送给 142.171.237.9 的 18255 端口 的realiy数据包, 发送给 142.171.223.56 的 28828 端口;
142.171.223.56 从端口 28828 收到的TCP数据, 转发给 142.171.237.9 的 18255 端口.

========
我们延着数据路径一段一段的排查.

1. 从我们的翻墙客户端(手机/电脑/...)连接中转VPS 142.171.223.56 的 28828 端口;
a) 可以用 tcp.ping.pe 检测142.171.223.56 的 28828 端口是否正常;
b) 在你自己的电脑 tcping 检测142.171.223.56 的 28828 端口是否可连接.

2. 在中转VPS上查 sing-box 的 access.log
cat /var/log/sing-box/access.log
可以看到有对应的4条记录
黄框的部分是, 是我自己的IP.
红色的部分, 是sing-box最终把数据转发给 142.171.237.9 的 18255 端口.

3. 在落地节点VPS上查 sing-box 的 access.log
cat /var/log/sing-box/access.log
可以看到有4条记录
绿色部分是 中转VPS 的IP 142.171.223.56 说明收到了来自中转VPS的数据包.
因为这是 tcping 测试的数据包, 不是reality协议的数据包. 所以接着的日志内容是 REALITY 验证失败, 判定为无效连接.

4. 验证中转后节点能否使用.
前面3步可以验证数据包能从我自己发送到落地VPS成功.
我们现在制作新的翻墙节点.
在前面我也提到, 数据包本身应该没有变化, 只是发送给中转的IP地址和端口.
所以, 如下图所示.

在 v2rayN 中测试, 有延迟数据, 也可以正常翻墙使用.

========

后记

如果你没有设置中转, 就是一个reality节点, 想排错.
那么, 类比上面的流程, 你应该从自己的电脑, 直接 tcping 测试节点的IP和端口.
正确的结果是, 你应该tcping测试畅通, 并且落地VPS的 sing-box 的日志中, 有对应的记录, 表示收到了数据包, 并且验证REALITY失败.


评论

The Hot3 in Last 30 Days

RackNerd VPS搭Hysteria2 HY2梯子 年付 $10.98 1G端口 3T流量 17G存储 1GB内存