V2Ray安装配置VMESS-TLS及VMESS-TLS-WS

最后更新:2023-06-09
VLESS-XTLS-Vision及VLESS-XTLS-uTLS-REALITY安装配置教程参考这里
我的VPS :Ubuntu 2022 x64 

一、VMESS-TLS安装配置

1.1. 时间校准

对于 V2Ray,它的验证方式包含时间,就算是配置没有任何问题,如果时间不正确,也无法连接 V2Ray 服务器的,服务器会认为你这是不合法的请求。所以系统时间一定要正确,只要保证时间误差在一分钟之内就没问题。
1.2. 服务器端安装
下载安装脚本
curl -O https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh  
执行安装:
bash install-release.sh 
如果安装不成功脚本会有红色的提示语句,这个时候你应当按照提示除错,除错后再重新执行一遍脚本安装 V2Ray。
设置开机自启动 并运行V2Ray:
systemctl enable --now v2ray

停止运行 V2Ray:

systemctl stop v2ray

重启 V2Ray:

systemctl restart  v2ray

在首次安装完成之后,V2Ray 不会自动启动,需要手动运行上述启动命令。而在已经运行 V2Ray 的 VPS 上再次执行安装脚本,安装脚本会自动停止 V2Ray 进程,升级 V2Ray 程序,然后自动运行 V2Ray。在升级过程中,配置文件不会被修改。

更新 V2Ray 的方法是再次执行安装脚本

1.3.注册一个域名

如果已经注册有域名了可以跳过。 域名有免费的有付费的,总体来说付费的会优于免费的。

1.4. 证书生成

使用 TLS 需要证书,证书也有免费付费的,同样的这里使用免费证书,证书认证机构为 Let's Encrypt。 证书的生成有许多方法,这里使用的是比较简单的方法:使用 acme.sh 脚本生成,本部分说明部分内容参考于此处
证书有两种,一种是 ECC 证书(内置公钥是 ECDSA 公钥),一种是 RSA 证书(内置 RSA 公钥)。简单来说,同等长度 ECC 比 RSA 更安全,也就是说在具有同样安全性的情况下,ECC 的密钥长度比 RSA 短得多(加密解密会更快),强烈建议使用 ECC 证书。
证书生成只需在服务器上操作。

1.4.1. 安装 acme.sh

执行以下命令,acme.sh 会安装到 ~/.acme.sh 目录下。
curl  https://get.acme.sh | sh
可以创建 一个 bash 的 alias, 方便使用
alias acme.sh=~/.acme.sh/acme.sh
可能要安装依赖
apt install socat -y

1.4.2. 使用 acme.sh 生成证书

选择安装证书的类型由于acme.sh将默认安装的证书类型从letsencrypt换成了zerossl,想要继续使用 letsencryp 证书,有两种解决方案。
第一种是签发证书时指定 CA
acme.sh  --issue  -d mydomain.me  --server  letsencrypt
另一种是直接更改默认 CA,本博文使用这种方式,如下
acme.sh --set-default-ca  --server  letsencrypt
如果设置了默认的 CA,以后就算版本升级也将一直默认使用指定的 CA。

证书生成

防火墙放行80端口
ufw allow 80
以下的命令会临时监听 80 端口,请确保执行该命令前没有被占用
acme.sh  --issue -d mydomain.me   --standalone -k ec-256 
-k 表示密钥长度,后面的值可以是 ec-256 、ec-384、2048、3072、4096、8192,带有 ec 表示生成的是 ECC 证书,没有则是 RSA 证书。在安全性上 256 位的 ECC 证书等同于 3072 位的RSA 证书。

查看已经安装的证书、申请日期、更新日期等
acme.sh --list

证书更新

由于 Let's Encrypt 的证书有效期只有 3 个月,因此需要 90 天至少要更新一次证书,acme.sh 脚本会每 60 天自动更新证书。也可以手动更新。
手动更新 ECC 证书,执行:
acme.sh --renew -d mydomain.me --force --ecc
如果是 RSA 证书则执行:
acme.sh --renew -d mydomain.me --force

1.4.3. 安装证书和密钥

证书生成以后, 接下来需要把证书 copy 到真正需要用它的地方(目录可以自己选择)
mkdir -p /root/cert
acme.sh  --installcert  -d  mydomain.me  --ecc  \
        --key-file   /root/cert/private.key \
        --fullchain-file /root/cert/cert.crt 
 以上是80 端口空闲的申请方式,不便之处是80端口被占用的话,是不能自动更新证书的。
更方便的是DNS方式申请参考这里 第5点。

1.5. 配置 V2Ray

1.5.1. 服务器端json配置文件

    编辑配置文件 vi /usr/local/etc/v2ray/config.json
{
  "log": {
      "loglevel": "warning"
    },
"inbounds": [
    {
      "port": 443, 
      "protocol": "vmess",    
      "settings": {
        "clients": [
          {
            "id": "23ad6b10-8d1a-40f7-8ad0-e3e35cd38297",  
            "alterId": 0
          }
        ]
      },
      "streamSettings": {
        "network": "tcp",
        "security": "tls", 
        "tlsSettings": {
          "certificates": [
            {
              "certificateFile": "/root/cert/cert.crt", 
              "keyFile": "/root/cert/private.key" 
            }
          ]
        }
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom",
      "settings": {}
    }
  ]
}

1.5.2. 客户端json配置文件

{
  "inbounds": [
    {
      "port": 1080,
      "protocol": "socks",
      "sniffing": {
        "enabled": true,
        "destOverride": ["http", "tls"]
      },
      "settings": {
        "auth": "noauth"
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "vmess",
      "settings": {
        "vnext": [
          {
            "address": "mydomain.me", 
            "port": 443,
            "users": [
              {
                "id": "23ad6b10-8d1a-40f7-8ad0-e3e35cd38297",
                "alterId": 0
              }
            ]
          }
        ]
      },
      "streamSettings": {
        "network": "tcp",
        "security": "tls" 
      }
    }
  ]
}

1.5.2.1 客户端json配置文件(绕过国内域名及IP)

上面的客户端配置是全局的,也就是说访问所有的网站都将翻墙。但v2ray可以配置路由,绕过国内域名及IP,将配置文件改成如下即可(服务器端无需修改)
{
  "inbounds": [
    {
      "port": 1080,
      "protocol": "socks",
      "sniffing": {
        "enabled": true,
        "destOverride": ["http", "tls"]
      },
      "settings": {
        "auth": "noauth"
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "vmess",
      "settings": {
        "vnext": [
          {
            "address": "mydomain.me", 
            "port": 443,
            "users": [
              {
                "id": "23ad6b10-8d1a-40f7-8ad0-e3e35cd38297",
                "alterId": 0
              }
            ]
          }
        ]
      },
      "streamSettings": {
        "network": "tcp",
        "security": "tls" 
      }
    },
 {
      "protocol": "freedom",
      "settings": {},
      "tag": "direct" 
    }    
  ],
  "routing": {
    "domainStrategy": "IPOnDemand",
    "rules": [
      {
        "type": "field",
        "outboundTag": "direct",
        "domain": ["geosite:cn"] 
      },
      {
        "type": "field",
        "outboundTag": "direct",
        "ip": [
          "geoip:cn", 
          "geoip:private" 
        ]
      }
    ]
  }
}
          
说明:配置文件很容易出错,最好还是使用 V2Ray 提供的配置检查功能(test 选项),因为可以检查 JSON 语法错误外的问题。
/usr/local/bin/v2ray  test -config /usr/local/etc/v2ray/config.json
    一般来说,按照以上步骤操作完成,V2Ray 客户端能够正常联网说明 TLS 已经成功启用。但要是有个可靠的方法来验证是否正常开启 TLS 无疑更令人放心。
打开 Qualys SSL Labs's SSL Server Test,在 Hostname 中输入你的域名,点提交,过一会结果就出来了。
这是对于你的 TLS/SSL 的一个总体评分,我这里评分为 A,看来还不错。有这样的界面算是成功了。


最后,启动并设置客户端,就可以自由上网了。

二、VMESS-TLS-WS安装配置

2.1. 安装服务器端v2ray及申请证书,同上

2.2. 服务器端配置文件

编辑配置文件  vi /usr/local/etc/v2ray/config.json,实际使用中需删除注释
{
 "log": {
        "loglevel": "warning"
    },
"inbounds": [
    {
      "port": 10000,     //端口可设置任何未被占用的,但必须与nginx配置文件中的一致
      "listen":"127.0.0.1",
      "protocol": "vmess", 
      "settings": {  
        "clients": [
          {
            "id": "23ad6b10-8d1a-40f7-8ad0-e3e35cd38297", //与客户端保持一致
            "alterId": 0      //与客户端一致
          }
        ]
      },
      "streamSettings": {
        "network": "ws",
        "wsSettings": {
        "path": "/rayghrh"  //与nginx配置文件中的location地址保持一致
        }
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom",
      "settings": {}
    }
  ]
}

测试配置文件
/usr/local/bin/v2ray  test -config /usr/local/etc/v2ray/config.json

2.3. 安装配置nginx

apt install nginx -y
systemctl  start  nginx 
systemctl enable nginx
配置文件 vi /etc/nginx/nginx.conf
user www-data;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
    worker_connections  2048;
}
http {
    server_tokens off;
    include       mime.types;
    default_type  application/octet-stream;
    access_log off;
    sendfile        on;
    tcp_nopush     on;
    tcp_nodelay on;
    keepalive_timeout  65;
    gzip  on;
    client_max_body_size 10m;
    client_body_buffer_size 128k;

 server {
        listen       80 default_server;
        server_name  mydomain.me;
        root         /usr/share/nginx/html;
        return 301 https://$server_name$request_uri;
        error_page 404 /404.html;
            location = /40x.html {
        }
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
}

server {
  listen  443 ssl;
  server_name           mydomain.me;
  ssl_certificate      /root/cert/cert.crt;
  ssl_certificate_key  /root/cert/private.key; 

  ssl_protocols TLSv1.2 TLSv1.3;
  ssl_ciphers HIGH:!aNULL:!MD5;
  ssl_prefer_server_ciphers on;
   #WS协议转发
   location /raygrgf {       #任意字母及数字组合,但必须与v2ray服务端配置文件的path地址一致
        proxy_redirect off;
        proxy_pass http://127.0.0.1:10000;   #端口与v2ray服务端配置文件中的一致
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
        }
  #其他请求转发
  location / {
       proxy_pass http://127.0.0.1:80; #建议配置可以正常访问,实现伪装
    }
} 
}
 测试配置文件
/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
 一切正常的话,重启下VPS

2.4. 客户端json配置文件

{
  "inbounds": [
    {
      "port": 1080,
      "listen": "127.0.0.1",
      "protocol": "socks",
      "sniffing": {
        "enabled": true,
        "destOverride": ["http", "tls"]
      },
      "settings": {
        "auth": "noauth",
        "udp": false
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "vmess",
      "settings": {
        "vnext": [
          {
            "address": "mydomain.me",
            "port": 443,
            "users": [
              {          
                "id": "23ad6b10-8d1a-40f7-8ad0-e3e35cd38297",    
                "alterId": 0
              }
            ]
          }
        ]
      },
      "streamSettings": {
        "network": "ws",
        "security": "tls",
        "wsSettings": {
          "path": "/rayghrh"   //与服务器端保持一致
        }
      }
    }
  ]
}
三、客户端安装配置
     1、官方这里下载 V2Ray 的 Windows 压缩包。 下载解压之后会有 v2ray.exe 和 config.json 这两个文件,v2ray.exe 是运行 v2ray 的文件,config.json 是配置文件。你可以通过记事本或其它的文本编辑器查看和修改。
    Windows下v2ray开机自动运行设置。
   新建vbs文件v2raystart.vbs,写入以下内容并保存:
set ws=WScript.CreateObject("WScript.Shell")
ws.Run "F:\v2ray\v2ray.exe  -c F:\v2ray\config.json",0
    文件路径修改为自己电脑上的实际路径。
win 10 下直接将v2raystart.vbs文件复制到其开机启动文件夹即可
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
快捷命令:按下 win+R 打开运行输入:shell:Common Startup
浏览器搭配 Proxy SwitchyOmega  使用 。
   2、nekoray,基于 Qt 的跨平台代理配置管理器 (后端 xray / sing-box),目前支持 Windows / Linux 开箱即用。支持的协议很多,如vmess、vless、tuic、hysteria、naiveproxy、trojan等。
   3clash.meta是一款用Go开发的基于规则分流的适用于Linux/MacOS/Windows等多平台的客户端,支持vmess、vless、tuic、hysteria、trojan协议等 配置文件config.yaml参考这里 五.2点 ,根据自己实际情况修改
   4、sing-box 是新一代的通用网络代理平台,基本上目前流行的协议都支持,支持基于规则的分流、支持TUN等,支持的平台也很全,有网络代理平台的“瑞士军刀”之称,参考这里
         
若想套用CDN的话,选择cloudflare免费版就够了,参考这里第一点

说明:防火墙放行相关的端口,如443等。
sudo ufw allow 443

VPS上集成安装V2ray与其他博客或网站,参考这里

评论

热门博文

Xray安装配置VLESS-XTLS-Vision及VLESS-XTLS-uTLS-REALITY

在VPS上轻松搭建L2TP/IPSec图文教程(通吃各种架构的VPS,包括KVM,OpenVZ等)