对付高峰时段运营商Qos的最佳扶墙方式——TLS+Websocket+Nginx+V2ray

温馨提示:本文最后修改于 49 天前,部分内容可能已经过时。如文章内容或静态资源失效,请联系我进行更新,谢谢~
免责声明:这篇文章中提到的方法仅能用于研究与学习使用,严禁用于商业或非法用途。

祖传的引子

这是我写博客祖传的引子,当然不能落下啦~

最近,我需要一个能够在高峰时段能够流畅观看墙外直播的扶墙方案。

临近开学,我又把服务器迁移回了新加坡(话说Vultr的机房多就是方便,spanshort也是真的好用),使用中国移动网络,在白天非高峰时段能够流畅的观看YouTube 1080p;然而到了高峰期的晚间时段,速度却只有几十k!(我的内心独白:???)

很明显,我遇到了运营商的Qos策略。高峰时段,在非常有限的国际出口带宽下,运营商会优先放行某些端口或某些协议,而其他的协议则会被疯狂丢包。V2ray和shadowsocks的协议就很不典型,容易被运营商Qos。使用带混淆功能的SSR?SSR的协议基本能够被GFW嗅探了,被阻断的可能性非常大。除了氪金,氪诸如政企专线之类的网络,应该怎么办呢?

我们可以利用Nginx和Websocket,将v2ray的流量包装成正常的TLS流量走443端口,不久可以绕过运营商的Qos了吗?

原理图

还没明白的话,下面的原理图能说明一下,还看不懂的话.......emmm......
灵魂画师已上线😂

1478144716.jpg

实现过程

域名准备:

  1. 你得有一个域名,免费的那种也行。
  2. 建立一个指向服务器的A记录,如v2ray.example.com,将它指向你的服务器。

Nginx服务器准备:

  1. 新建一个虚拟主机,如v2ray.example.com,这个虚拟主机需要有证书,因为我们要用到证书来建立TLS连接。用acme.sh生成的Let's Encrypt证书就可以~建议用oneinstack这样的工具进行。
  2. 编辑Nginx配置文件v2ray.example.com.conf,在合适的地方加入以下内容:

    location /v2ray/ {   #/ws为v2ray路径,随便填写比如/v2ray/,但要记住后面要用
        proxy_redirect off;
        proxy_pass http://127.0.0.1:233; #你的v2ray端口,随意设置,要记住后面要用
        proxy_http_version 1.1; #websocket还是http1.1的,但在服务器内部进行,几乎没有影响啦~
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
      }
  3. 重启Nginxservice nginx restart

服务端V2ray设置:

默认都已经安装好v2ray服务端了,官方有白话文教程,有点基础都能看懂

服务端需要开启ws+tls模式,inbound的配置文件如下:

"inbound": {
    "streamSettings": {
      "network": "ws",
      "wsSettings": {
        "headers": {
          "host": "v2ray.example.com"
        },
      "path": "/v2ray/"
      }
    },
    "protocol": "vmess",
    "port": 233,
    "settings": {
      "clients": [
        {
          "alterId": 64,
          "security": "auto",
          "id": "填写你的uuid",
          "level": 1
        }
      ]
    }
  },

然后重启服务端:service nginx restart

可以观察以下日志,没有报错信息就算启动成功:journalctl -u v2ray日志界面按方向键滚动,按q退出。

客户端V2ray设置:

客户端当然也需要开启ws+tls模式,outbound的配置文件如下:

"outbounds": [{
    "protocol": "vmess",
    "settings": {
      "vnext": [
        {
          "address": "v2ray.example.com",
          "port": 443,
          "users": [
            {
              "id": "你的uuid",
              "alterId": 64,
              "security": "auto"
            }
          ]
        }
      ]
    },
    "streamSettings" : {
      "network": "ws",
      "security": "tls",
      "wsSettings" : {
        "path" : "\/v2ray\/",
        "headers" : {
          "Host" : "v2ray.example.com"
        }
      },
      "tlsSettings" : {
        "serverName" : "v2ray.example.com",
        "allowInsecure" : false
      }
    },
    "tag": "direct"
  },{
    "protocol": "blackhole",
    "settings": {},
    "tag": "blocked"
  }],

然后重启客户端。

效果~挺明显的

晚间高峰时段YouTube 1080基本无卡顿,进度条还算饱满~速度测试截图如下:

2019-08-14 (6) - 副本.png

晚上再也不用忍受打不开Google只能用百度的情况咯~


2019.10.1 补充一点:
如果直连服务器的速度、丢包率不理想,可以利用cloudflare等此类cdn服务进行加速,尽管延迟可能会稍微增高,但能有效提高使用体验。

此外,结合第三方dns解析可以实现分线路解析。我的服务器目前在新加坡,移动网络访问体验非常好,但联通电信的体验非常差,尤其是电信,绕路美国,延迟400+,疯狂丢包。
于是我就将移动网络解析到源服务器上,将电信联通解析到最快的CF cdn上,一个域名,多条线路,起到“智能线路分配”的作用。
详情可以看我的这篇文章

~~End Of File~~

本文永久链接:https://blog.xmgspace.me/archives/v2ray-nginx-tls.html

本文文章标题:对付高峰时段运营商Qos的最佳扶墙方式——TLS+Websocket+Nginx+V2ray

本站欢迎转载与引用~但您需要注明文章标题与链接,并表明转载/引用自Xiaomage's Blog。

授权协议:署名-非商业性使用-相同方式共享 4.0 国际(CC BY 4.0)

标签:Nginx , 服务器

还没有人评论哦,还不快抢沙发~

添加新评论

i_f01.pngi_f02.pngi_f03.pngi_f04.pngi_f05.pngi_f06.pngi_f07.pngi_f08.pngi_f09.pngi_f10.pngi_f11.pngi_f12.pngi_f13.pngi_f14.pngi_f15.pngi_f16.pngi_f17.pngi_f18.pngi_f19.pngi_f20.pngi_f21.pngi_f22.pngi_f23.pngi_f24.pngi_f25.pngi_f26.pngi_f27.pngi_f28.pngi_f29.pngi_f30.pngi_f31.pngi_f32.pngi_f33.png