LMLPHP后院

V2ray Vmess Websocket+TLS+web Nginx 配置技术

maybe yes 发表于 2022-01-14 22:48

真的很累,超级坑,不过花了两天多的时间,总算是弄好了。期间遇到很多低级陷阱,这些坑稍不留意就不行了,加上 V2ray 报错特别不友好,日志也是含糊,网上随便一搜,都是说时间问题,其实,时间不可能会是问题现在都 2022 年了,设备的时间基本都是准确了!

我遇到的第一个问题,就是 alterId 问题,这个实在是太奇怪了,加上了 alterId 就不行,删除就可以,所以如果大家看白话文教程,一定会把你往死里坑。并且,目前为止,网上找不到一个完完整整可以使用无误的配置,都是一个大概,这种大概特别的坑人。再者,V2ray 的技术更新版本更迭特别快,文档是更不上的,所以,这是玄学啊,除非你是一个大神,能够一下子就完全弄明白了整个系统的 golang 源码。

另外,我遇到的一些坑就是,服务器上的配置文件语法错误竟然不报错,没错,不报错!导致很多时候 V2ray.service 根本没有启动,这样耗费了很多精力啊。

好了,不多唠叨了,其实核心技术应该没有多少,不过系统太大,没法一下子弄明白,加上官方文档一坨屎,和技术更迭太快,是个玄学,一般人弄不懂!

分享一下全部的配置吧!

client:

浏览器使用了 SwitchyOmega 插件。

{
  "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": "x.com",
            "port": 443,
            "users": [
              {
                "id": "x"
                ,"email": "x@gmail.com"
              }
            ]
          }
        ]
      }
      ,
      "streamSettings": {
        "network": "ws",
        "security": "tls",
        "wsSettings": {
          "acceptProxyProtocol": false,
          "path": "/ray",
          // "headers": {
          //   "Host": "v2ray.com"
          // },
          "maxEarlyData": 1024
        }
      }
    }
  ]
}

nginx:

server {
        listen 443 ssl;
        listen [::]:443 ssl;
        ssl on;

        ssl_certificate /path/x.pem;
        ssl_certificate_key /path/x.pem;
        error_log /var/log/nginx/x.error.log;
        # ssl_session_timeout 1d;
        # ssl_session_cache shared:MozSSL:10m;
        # ssl_session_tickets off;

        ssl_protocols         TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers           ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
        ssl_prefer_server_ciphers on;

        server_name           x.com;
        location /ray {
                if ($http_upgrade != "websocket") {
                        return 404;
                }
                proxy_redirect off;
                proxy_pass http://127.0.0.1:6000;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_set_header Host $http_host;
                # Show real IP in v2ray access.log
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always; #HSTS
}

server:

{
  "log": {
    "loglevel": "warning",
    "access": "/var/log/v2ray/access.log",
    "error": "/var/log/v2ray/error.log"
  },
  "inbounds": [
    {
      "port": 6000,
      "listen":"127.0.0.1",
      "protocol": "vmess",
      "sniffing": {
        "enabled": true,
        "destOverride": ["http", "tls"]
      },
      "settings": {
        "clients": [
          {
            "id": "x",
            "email": "x@gmail.com"
          }
        ],
        "disableInsecureEncryption": true
      }
      ,
      "streamSettings": {
        "network": "ws",
        "wsSettings": {
          "path": "/ray"
        }
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom",
      "settings": {}
    }
  ]
}

上面就是锦囊!

V2ray 的 listen 只能是 ipv6,这个也是个麻烦事!

后续:

现在选择客户端的问题上也有很大的讲究,服务器上最开始安装的事 v4.44.0,客户端在 MacOS 上使用的是 4.31.0,没有任何问题,后面在树莓派上用自动脚本安装的 v2fly 核心包,死活不能成功代理,使用 curl --socks5 127.0.0.1:x https://www.google.com/  或者 curl -x socks5h://127.0.0.1:x https://www.google.com/ 测试死活不行,这个事情困扰了我很久,后面使用 Arch Linux 再次安装客户端,还是不行。后来我发现 Mac 上是直接下载的,安装了 4.31.0 版本,可能是我运气好,如果 Mac 上安装的是高版本,估计也是一样不行,可能后续的版本做了一些新的功能,文档上面没有体现出来,官方的文档乱的不行,推荐的客户端很多都不维护了,实在是杂乱不堪啊!客户端全部换成了 4.31.0 版本就都搞定了!

2024-05-08 08:45:10 1715129110 0.017564