关于我
~一个热爱火影的业余小提琴玩家~
Joynaruto
记v2ray进阶操作达成

前因

前几天自己搭建v2ray已经达成,youtube的4k测试都没问题,非常舒服~ 然而我只是搭建了最基本的v2ray服务,没有做任何的加密或者伪装,这样一来我的ip就容易被GFW识别进而把我ip给墙了,后续就要牵扯到换ip之类的,就很烦。。而且我的vps是以其他服务为主,梯子为辅的这么一个存在,若是把我ip给墙了就会很麻烦= =不得已只能开始研究所谓安全性MAX的“WebSocket+TLS”,加之我是Apache2的使用者,所以这次搭建就需要在Apache2上部署v2ray的“WebSocket+TLS”

方法的选择

网上有很多的所谓一键安装脚本,但我不太想用这种一键脚本来搭建,原因有二:其一是对这种一键安装脚本总有点不信任,毕竟以前是听过有人在脚本中植入挖矿代码之类的;其二还是想自己一步步来,多折腾多学习,一个完整的安装过程中可以学到很多东西,综上我选择自己手动搭建。啰啰嗦嗦讲了这么多,现在正式开始吧!

正式开始

1、TLS

首先我使用的是官方的单tls安装教程,教程中说到若使用tls则需要使用到一个域名和一套证书,官方教程推荐的是利用Let’s Encrypt申请免费证书,并可以自动申请延期,如果我的vps只用来做梯子的话这个方案确实还行,但是我的vps是梯子为辅的这么个存在,而且我手上也有相应的域名和证书,那我就用现成的咯~
首先配置服务端的/etc/v2ray/config.json

{
  "inbounds": [
    {
      "port": 端口号, // 反代的话建议使用非443端口号
      "protocol": "vmess",    
      "settings": {
        "clients": [
          {
            "id": "uuid",  
            "alterId": 60
          }
        ]
      },
      "streamSettings": {
        "network": "tcp",
        "security": "tls", // security 要设置为 tls 才会启用 TLS
        "tlsSettings": {
          "certificates": [
            {
              "certificateFile": "/etc/v2ray/主证书", // 证书文件
              "keyFile": "/etc/v2ray/密钥证书" // 密钥文件
            }
          ]
        }
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom",
      "settings": {}
    }
  ]
}

而后在客户端只要在底层传输协议选择tls即可配置成功~

2、WebSocket+TLS+Web

tls达成后,我就开始折腾传说中安全性MAX的“WebSocket+TLS+Web”。官网教程依旧给力,同时给出了Caddy,Nginx以及Apache的的配置方法,前文也提到过我是使用Apache来管理我的网页以及其他服务,所以便直奔教程中的Apache部分,照着配置了一遍后,连不上(尴尬= =。。 全网搜索很少有用Apache方法配置web方法的,好容易找了几篇还都是Nginx的,正在心灰意冷时这篇文章突然映入眼帘,此文的作者也是Apache的使用者,和我的环境完全一样,我打算再试一试,照着教程中的配置文件加上自己瞎琢磨,配置好了后紧张地在手机端的客户端试了下,居然ping通了虽然延迟大了点,但第二次就正常了(我猜应该是https加长了握手时间)不过也无所谓,跑了下youtube的4k视频,完全没有问题。至此“WebSocket+TLS+Web”手动配置完全成功!下面分别贴下Apache和v2ray的服务端配置文件

Apache端

Apache在配置之前记得先启用这些mod:

sudo a2enmod ssl
sudo a2enmod proxy
sudo a2enmod proxy_wstunnel
sudo a2enmod proxy_http
sudo a2enmod rewrite
sudo a2enmod headers

Apache端在/etc/apache2/ports.conf/etc/apache2/sites-available/default-ssl.conf添加对应的端口,然后/etc/apache2/sites-available/default-ssl.conf配置如下:

#WTW
<VirtualHost _default_:443>
		ServerAdmin webmaster@localhost
		Servername 我的域名
                DocumentRoot /var/www/html
		ErrorLog ${APACHE_LOG_DIR}/error.log
		CustomLog ${APACHE_LOG_DIR}/access.log combined
		SSLEngine on
		SSLCertificateFile	/etc/apache2/ssl/主证书
		SSLCertificateKeyFile /etc/apache2/ssl/密钥证书
		SSLCertificateChainFile /etc/apache2/ssl/中间证书
<LocationMatch "/ray/">
        ProxyPass ws://127.0.0.1:v2ray的端口号/ray/ upgrade=WebSocket
        ProxyAddHeaders Off
        ProxyPreserveHost On
        RequestHeader set Host %{HTTP_HOST}s
        RequestHeader set X-Forwarded-For %{REMOTE_ADDR}s
</LocationMatch>
	</VirtualHost>

注意上述代码中的”/ray/”处必须和下文path后的”/ray”保持一致!!!
配置完成后,记得使用service apache2 restart重启Apache服务
在浏览器输入https://域名:端口号/ray/后,出现下图则表示Apache端配置完成

v2ray端

v2ray端的配置如下:

{
  "inbounds": [
    {
      "port": 端口号,
      "listen":"127.0.0.1",
      "protocol": "vmess",
      "settings": {
        "clients": [
          {
            "id": "uuid",
	    "level": 1, 
            "alterId": 60
          }
        ]
      },
      "streamSettings": {
        "network": "ws",
        "wsSettings": {
        "path": "/ray/"
        }
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom",
      "settings": {}
    }
  ]
}

可以看到,这种方法下的tls是在Apache端实现,而不是在v2ray端,改完配置文件后保存一下
最后依旧是service v2ray restart重启v2ray服务

一些注意的点

  • V2Ray 支持 TLS1.3
  • 请保持服务器和客户端的 wsSettings 严格一致,对于 V2Ray,/ray 和 /ray/ 是不一样的

原文引用:https://xzos.net/

发表评论

textsms
account_circle
email

Joynaruto

记v2ray进阶操作达成
前因 前几天自己搭建v2ray已经达成,youtube的4k测试都没问题,非常舒服~ 然而我只是搭建了最基本的v2ray服务,没有做任何的加密或者伪装,这样一来我的ip就容易被GFW识别进而把我ip给墙…
扫描二维码继续阅读
2020-01-29