关于udp2raw
udp2raw,又名udp2raw-tunnel,是由网友wangyu开发的一款UDP流量伪装工具,可以将udp流量伪装为TCP流量,本工具完全开源。
实现原理是模拟TCP 3次握手,让防火墙将UDP流量误认为是TCP流量,从而避开部分运营商对UDP流量的QOS限速和干扰,有效提高网络连接的速度和稳定性。
udp2raw在用于KCPTUN等科学上网辅助工具时,则可以在保证KCPTUN加速效果的基础上,进一步增强连接的稳定性,避免由UDP限速导致的频繁掉速和断线。
关于运营商UDP流量限速:
在大部分网络环境中,TCP流量的优先级是高于UDP流量的。
举个例子,我们日常的网页流量和资源下载,使用的是TCP流量;而BT下载则使用的UDP流量;两者相比的话,运营商当然是要优先保证基本的TCP流量,甚至会对UDP流量进行各种干扰和限速。
而加速工具KCPTUN使用的正是UDP流量,如果遇到运营商限制,则会对其加速效果形成很大干扰。
KCPTUN被QOS限速的表现:
- 加速效果不稳定,速度时快时慢
- 每隔一段时间,KCPTUN会掉线无法连接,无法正常科学上网。
- 掉线持续几分钟后,恢复正常连接
udp2raw的使用对象
上文以KCPTUN为例,大致介绍了udp2raw的加速原理。
事实上,除了KCPTUN以外,udp2raw几乎可以伪装任何UDP流量。
包括但不限于:
以KCPTUN为例,udp2raw的加速实现路径大致为:
Shadowsocks/SSR客户端——KCPTUN客户端——udp2raw客户端————udp2raw服务器端——KCPTUN服务器端——Shadowsocks/SSR服务器端
其它各工具与此类似,大同小异。
一点疑问:
Shadowsocks或者SSR本身就走的TCP流量,绕这么大一圈,最后还是TCP流量。既然这样,为什么不单独使用SS/SSR连接就好了,效果不是一样吗?
这个问题有一定道理,但是两种连接的效果其实是不一样的。
因为KCPTUN的加速效果,基本是目前所有加速工具中效果最好的。如果使用SS/SSR+KCPTUN+udp2raw的组合,可以在KCPTUN加速连接的同时,避开UDP限速,最终实现加速效果最大化。
udp2raw一键安装脚本
udp2raw加速效果的实现,需要同时安装服务器端和本地客户端,两者连接成功即可。
下面我们先介绍一下udp2raw服务器端的安装过程。
udp2raw一键安装脚本233版(服务器端)
安装环境:
- 架构:KVM、OpenVZ(OVZ)
- 系统:CentOS、Debian、Ubuntu
安装流程:
1.使用Putty连接至服务器,右键复制如下命令运行:
1
|
bash <(curl –s –L https://233blog.com/udp2raw.sh)
|
2.如果以上命令运行时出现关于curl的错误提示,那么需要先为服务器安装curl后,再运行以上命令。如果没有错误提示,则忽略本段内容。
根据系统不同,curl的安装命令分别为
CentOS:
1
|
yum install curl –y
|
Debian/Ubuntu:
1
|
apt–get install curl –y
|
3.udp2raw一键脚本成功运行后,会出现下图界面。按提示输入1回车继续。
4.出现下图界面时,代表udp2raw安装成功。
如何卸载:
再次运行以上脚本命令,然后输入数字2回车,即可卸载udp2raw。
提示:
此udp2raw一键安装脚本的功能较少,仅包括安装和卸载功能。
关于udp2raw的设置、运行及开机启动,下文会继续介绍。
udp2raw启动前的准备工作
如果你要加速的对象是KCPTUN,那么KCPTUN默认的mtu是1350。在这个配置下,容易造成udp2raw崩溃,我们需要将其调整至1300或1200.
如何修改mtu:
1.如果你的KCPTUN是根据KCPTUN一键安装脚本安装的,那么其参数配置文件路径为:/usr/local/kcptun/server-config.json
2.用Winscp打开该文件,修改其中mtu的一行 为:
1
|
“mtu”: 1200,
|
3.修改完成后保存文件,putty运行如下命令重启KCPTUN即可。
1
|
supervisorctl restart kcptun
|
4.记得同时修改KCPTUN客户端的mtu值,服务端与客户端的mtu值保持一致。
另外,如果你的加速对象不是KCPTUN,比如是WireGuard等其它工具,那么也需要根据实际情况,提前修改mtu值。
udp2raw的参数配置及运行
目前udp2raw并没有独立的参数配置文件,因此需要在运行udp2raw命令时,同时加入启动参数。
udp2raw启动命令示例:
1
|
/usr/bin/udp2raw –s –l0.0.0.0:56789 –r 127.0.0.1:34567 –k “password” —raw–mode faketcp –a &
|
以上启动命令中
- 56789代表udp2raw使用的服务器端口,可以随意设置,udp2raw客户端使用此端口与服务器连接
- 34567代表加速对象使用的端口,比如kcptun使用的端口是23456,那么此处就改为23456
- password代表udp2raw的连接密码,用于udp2raw客户端连接,可以随意设置,注意保留双引号
如何启动udp2raw:
1.根据个人情况做好修改后,putty运行修改后的udp2raw启动命令,出现下图界面,代表启动成功:
2.下面就可以使用udp2raw客户端连接服务器端了。
关于udp2raw客户端的相关设置,我们随后会有专门的文章介绍
以上udp2raw启动命令的缺点:
根据以上命令成功启动udp2raw后,是不能关掉putty窗口的,否则udp2raw进程也会随之终止,造成客户端无法连接。
这就需要我们每次使用udp2raw时,都要重新运行启动命令,非常不方便。
解决办法:
下文介绍的udp2raw开机自启教程,设置好之后,可以同时实现:
- udp2raw开启自启动
- udp2raw无需Putty后台运行
udp2raw的开机自启
本文介绍的udp2raw一键安装脚本,默认并没有为udp2raw设置开机自启,需要我们手动设置。
具体步骤:
1.使用putty分别运行如下两条命令:
1
2
|
systemctl enable rc–local
systemctl start rc–local
|
2.用Winscp打开服务器的rc.local文件,路径是/etc/rc.d/rc.local,如果这个位置找不到,那么可以尝试/etc/rc.local
3.将如下udp2raw启动参数加入到rc.local文件中(另起一行)
注意事项:
- 需要将下面nohup后面的启动参数,替换为你之前修改好的实际参数
- 如果rc.local原文件中最后一行是exit 0字样,那么下面的启动参数需要加在exit 0上面一行
1
|
nohup /usr/bin/udp2raw –s –l0.0.0.0:56789 –r 127.0.0.1:34567 –k “password” —raw–mode faketcp –a &
|
4.修改完成后保存,重启服务器后,udp2raw就会自动运行,也就实现了开机自启。