N2N使用udp2raw绕过UDP屏蔽或QoS
由于N2N在Windows下使用的是UDP进行通信,而在部分情况下,运营商会对UDP数据进行一定的限制
参考这篇:聊聊运营商对UDP的QoS限制和应对
所以本文主要介绍通过 udp2raw 来实现绕过N2N通信中的UDP屏蔽或QoS
原理
udp2raw tunnel,通过raw socket给UDP包加上TCP或ICMP header,进而绕过UDP屏蔽或QoS,或在UDP不稳定的环境下提升稳定性。可以有效防止在使用kcptun或者finalspeed的情况下udp端口被运营商限速
准备
以下操作演示基于CentOS 7 x64
1.搭建N2N服务器(略)
2.部署udp2raw
mkdir udp2raw
cd udp2raw
wget https://github.com/wangyu-/udp2raw/releases/download/20200818.0/udp2raw_binaries.tar.gz
tar xzvf udp2raw_binaries.tar.gz
mv udp2raw_amd64 /usr/local/bin/udp2raw
chmod +x /usr/local/bin/udp2raw
udp2raw -h
启动
服务端
假设supernode监听端口为 9527
,udp2raw监听 19527
,模式为 faketcp
更多命令说明见:udp2raw 命令行文档
udp2raw -s -l 0.0.0.0:19527 -r 127.0.0.1:9527 -k "asdf1234" --raw-mode faketcp -a
客户端
适用于Windows的客户端(解压得到 udp2raw_mp_wepoll.exe)
#替换77.77.77.77为自己的服务器地址
udp2raw_mp_wepoll.exe -c -l 0.0.0.0:9527 -r 77.77.77.77:19527 -k "asdf1234" --raw-mode faketcp
EasyN2N
服务端地址 本机地址:本机upd2raw监听端口
日志里可以看到已经成功连接到Supernode
问题
NAT穿透存在问题,无法P2P
3条评论
有用!感谢
您好,我有一个问题,情况如下:
1、服务端是用的阿里云
2、客户端的话,我和朋友都是用的openwrt,然后nat到各自的内网ip段
我想问下,这个时候,我和朋友的windows机器联机是P2P的吗?通讯是用的tcp还是udp呢?可以在openwrt里面用这个方案吗?谢谢
@FPC12138
1.P2P的判断:https://bugxia.com/2292.html
2.windows下默认N2N走的UDP通信(Linux支持TCP)
3.可以在openwrt下实现本文方案(需在udp2raw_binaries.tar.gz内使用对应架构的udp2raw)