V2Ray 服务器搭建:VMess + WS + TLS 指南

193 次浏览

VMess 是 V2Ray 的核心协议之一,它具备加密传输和依赖系统时间的特性。结合 WebSocket (WS) 和 TLS,可以实现以下优势:

WebSocket (WS):使得 V2Ray 的流量看起来像普通的 WebSocket 流量,易于伪装,并且兼容 CDN(如 Cloudflare),有助于隐藏真实服务器 IP。
TLS 加密:为通信提供额外的加密层,使得流量在传输过程中被加密,增强隐蔽性和安全性。

1、准备工作

更新系统:

sudo apt update && sudo apt full-upgrade -y

更新后重启系统:

sudo reboot

2、安装V2Ray

下载并执行官方安装脚本

bash <(curl -L -s https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)

启动并检查V2ray运行状态:

sudo systemctl start v2ray   # 启动
sudo systemctl enable v2ray  # 设置开机自启
sudo systemctl status v2ray  # 检查服务状态

3、配置V2Ray

使用文本编辑器(如 nano)编辑配置文件

sudo nano /usr/local/etc/v2ray/config.json

一个简单的 VMess + WebSocket + TLS 配置示例(需配合 Nginx):

{
  "log": {
    "access": "/var/log/v2ray/access.log",  # 访问日志路径
    "error": "/var/log/v2ray/error.log",    # 错误日志路径
    "loglevel": "warning"       # 日志等级可选debug / info / warning / error / none
  },

  "inbounds": [
    {
      "listen": "127.0.0.1",    # 只监听本地连接,由 Nginx 反向代理
      "port": 10000,            # 此端口必须与 Nginx 配置中 proxy_pass 的端口一致,避免直接使用443,以防冲突
      "protocol": "vmess",
      "settings": {
        "clients": [
          {
            "id": "输入UUID",    # 使用命令成 UUID cat /proc/sys/kernel/random/uuid
            "alterId": 0
          }
        ]
      },
      "streamSettings": {
        "network": "ws",        # 使用 WebSocket 传输
        "wsSettings": {
          "path": "/v2ray"      # 自定义路径增加隐蔽性, 此路径必须与 Nginx 配置中的 location 路径一致
        }
      }
    }
  ],

  "outbounds": [
    {
      "protocol": "freedom",    # 所有流量直接出站
      "settings": {}
    }
  ]
}

4、获取SSL证书(使用 Let’s Encrypt)

安装 Certbot

sudo apt install certbot python3-certbot-nginx -y

运行以下命令申请证书(注意:在此之前 Nginx 配置中还不能引用证书文件,否则 nginx -t 会失败):

sudo certbot --nginx -d your-domain.com

或更明确地指定 Nginx 插件:替换 your-domain.com 为您的域名,替换 your-email@example.com 为您的邮箱(用于紧急通知和恢复)。

sudo certbot --nginx -d your-domain.com --non-interactive --agree-tos -m your-email@example.com

验证成功后,自动签发证书并保存到:
/etc/letsencrypt/live/your-domain.com/fullchain.pem
/etc/letsencrypt/live/your-domain.com/privkey.pem

自动续签:

sudo crontab -e

手动添加一个cron任务,用于自动续签:

0 3 * * * /usr/bin/certbot renew --quiet --post-hook "nginx -s reload"

命令说明:
0 3 * * * 表示每天凌晨3点执行任务
–quiet 让命令以静默方式运行,不输出无关信息。
–post-hook “nginx -s reload” 重新加载Nginx配置,让新证书生效

5、配置Web服务器(以 Nginx 为例,用于反向代理和 TLS)

安装 Nginx

sudo apt install nginx -y

创建站点配置文件

sudo nano /etc/nginx/conf.d/v2ray.conf

写入以下内容(替换 your-domain.com 为您的域名)

server {
    listen 443 ssl http2;          # 启用 HTTP/2 可以提供更好的性能
    listen [::]:443 ssl http2;     # 启用 IPv6 支持
    server_name your-domain.com;   # 使用域名匹配

    # SSL 证书路径使用Let's Encrypt生成
    ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;

    # 用于 V2Ray WebSocket
    location /v2ray {              # 此路径与 V2Ray 配置和客户端保持一致
        if ($http_upgrade != "websocket") {return 404;}  # 不通过ws访问时返回404
        proxy_pass http://127.0.0.1:10000;  # 此端口需要与 V2Ray 配置中的端口一致
        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        # WebSocket 超时设置
        proxy_read_timeout 3600s;
        proxy_send_timeout 3600s;
    }

    # 设置代理同时实现伪装
    location / {
        proxy_pass https://google.com;      # 代理到google主页
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

# 重定向所有HTTP(80)请求到HTTPS(443)
server {
    listen 80;
    listen [::]:80;                # 启用IPv6支持
    server_name your-domain.com;   # 自己的域名
    
    # 告诉搜索引擎和浏览器这是一个永久重定向
    return 301 https://$server_name$request_uri;
}

测试并重载Nginx和V2Ray

sudo nginx -t
sudo systemctl restart nginx
sudo systemctl restart v2ray

6、配置防火墙(可选)

允许 SSH, HTTP, HTTPS

sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443

开启防火墙

sudo ufw enable

7、客户端配置

IOS平台可使用 Shadowrocket 软件

新建Vmess协议
地址 (Address):服务器IP或域名(例如 your-domain.com)
端口 (Port):443
用户ID (User ID/UUID):配置文件中使用的UUID
额外ID (AlterId):0
传输协议 (Network):ws 或 websocket
伪装类型 (Type):none
伪装域名 (Host):留空或填你的域名(某些客户端需要)可实现免流
路径 (Path):/your_path(与配置文件中的 path 保持一致)
传输安全 (TLS):启用 tls

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部