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),然后监听到本机 5555
端口
#77.77.77.77为服务端IP
gnb_udp_over_tcp.exe -u -l 55555 77.77.77.77 44444
测试
EasyN2N里,服务端填写 127.0.0.1:55555
服务端通过iftop检测到 44444
端口下有大流量
另外,测试后发现这种模式下,P2P的组建不受影响,这一点比udp2raw要好~