N2N使用tcptunnel绕过UDP屏蔽或QoS
目前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机制】,不知道能不能解决这个问题