V2Ray默认不支持SSR,但是由于V2Ray可以作为一个通用中间代理,所以其实是可以实现转发SSR流量的功能。
在V2Ray服务端设置出站连接目标为SSR监听端口
1 2 3 4 5 6 7 8 9 10 11 12 |
"outbounds": [{ "protocol": "freedom", "settings": { "domainStrategy": "AsIs", "redirect": "127.0.0.1:989", "userLevel": 0 } },{ "protocol": "blackhole", "settings": {}, "tag": "blocked" }], |
在本地V2Ray客户端设置VMess协议连接至节点,并在SSR客户端设置Remote Proxy为本地V2Ray监听地址
设置完成之后,本地SSR监听端口接受到请求之后,不会直接向服务器发送,而是转发给本地V2Ray服务,由V2Ray使用VMess协议包装后再次发送给V2Ray服务器,V2Ray服务器接受到内容后,解包后再次发送给SSR服务端,SSR服务端收到请求后进行执行,返回结果给V2Ray服务端,由V2Ray服务端加密后返回给V2Ray客户端,V2Ray客户端收到内容后解密并转发给SSR客户端,SSR客户端收到内容后反馈给用户
测试结果:能够正常进行SSR用户认证,并且正常返回数据。
问题:由于经历了两次打包和转发,延迟非常严重,基本不能使用。
改进
后来想了想,其实根本没有这么麻烦,根本不需要指定端口,只需要设定一个开放协议就可以
1 2 3 4 5 6 7 8 |
"outbounds": [{ "protocol": "freedom", "settings": {} },{ "protocol": "blackhole", "settings": {}, "tag": "blocked" }], |
测试结果:延迟比之前指定端口的明显要好,速度感觉跟SSR直连差不多。
问题:可以跳过SSR认证直接使用V2Ray
实际测试,不转发SSR直接使用VMess协议的时候,连接速度会受限,而使用VMess转发SSR,则没有问题
使用fast.com分别对V2Ray、SSR over V2Ray、SSR进行测试的流量曲线对比
可以看到SSR的峰值来的快,而SSR over V2Ray则峰值较小延迟较大且还在消耗额外的流量,V2Ray则延迟太大在前期都没有数据反馈,峰值太靠后。
测试服务器参数(SJO节点)
1 2 3 4 5 6 7 8 9 10 11 12 13 |
{ "port": 33472, "protocol": "vmess", "settings": { "clients": [ { "id": "6f285e43-eecc-4f2d-ad56-92d2f21ee54b", "level": 1, "alterId": 64 } ] } } |
22 comments