N2N使用tcptunnel绕过UDP屏蔽或QoS

N2N 2023/03/19

目前N2N默认还是UDP传输,在Linux下可以通过 -S2 参数强制使用TCP传输,以实现绕过部分特殊环境下对UDP的限制

但是Windows下并不支持 -S2 参数,所以之前写过 N2N使用udp2raw绕过UDP屏蔽或QoS

其原理是利用udp2raw把N2N的UDP数据包进行伪装成TCP数据包(faketcp),但其本质还是UDP,详见 官方说明

今天介绍的小工具为 gnb_udp_over_tcp,它可以实现将UDP数据转换为TCP进行传输,绕开UDP限制

工具示例

#example:
#./gnb_udp_over_tcp -u -l listen_udp_port tcp_address tcp_port
#./gnb_udp_over_tcp -t -l listen_tcp_port des_address des_udp_port
gnb_udp_over_tcp -u -l 监听的UDP端口 TCP源地址 TCP源端口
gnb_udp_over_tcp -t -l 监听的TCP端口 UDP源地址 UDP源端口

服务端

假设有一台CentOS 7,上面跑着N2N的服务端(supernode),端口为55555(UDP)

现在想通过gnb_udp_over_tcp将这个 55555 UDP端口转换为 44444 并监听到TCP

下载,解压,在bin\Linux_x86_64找到 gnb_udp_over_tcp ,CMD运行

gnb_udp_over_tcp -t -l 44444 127.0.0.1 55555

注意:这款小工具日志输出比较少,容易误认为没有运行

客户端

有一台Windows,下载,解压,在bin\Window10_x86_64找到 gnb_udp_over_tcp.exe

依然是通过gnb_udp_over_tcp,连接到服务端的 44444 端口(TCP),然后监听到本机 55555 端口

#77.77.77.77为服务端IP
gnb_udp_over_tcp.exe -u -l 55555 77.77.77.77 44444

注意:这里的77.77.77.77为服务端的IP地址,不能为域名形式

测试

EasyN2N里,服务端填写 127.0.0.1:55555

服务端通过iftop检测到 44444 端口下有大流量

另外,测试后发现这种模式下,P2P的组建不受影响,这一点比udp2raw要好~



25 条评论

  • 月海 评论于 回复

    gitee 上可以下载的编译完成的是很早之前的版本了,我在 girhub 上下载的最新的,
    然后 liunx 上可以正常编译运行,但是 windows 10 上编译一直失败 :害羞: 大佬知道怎么解决吗
    关于为什么我要用新的版本,因为我发现linux 服务器上运行的时间一长(也就半天左右),客户端再通过 gnb_udp_over_tcp 连接 n2n 就连接不上了,新版本【为tcp链路加上keepalive机制】,不知道能不能解决这个问题

  • 评论(本站已开启评论回复邮件通知功能,请如实填写邮箱以便及时收到回复)