Skip to content

[疑似Bug]当使用Nginx前置SNI分流且开启PROXY protocol时,Android浏览器中出现ERR_SSL_BAD_RECORD_MAC_ALERT报错 #1873

@xiaomage2000

Description

@xiaomage2000

如题,我在Android设备上浏览网页时,会间歇性的出现ERR_SSL_BAD_RECORD_MAC_ALERT错误。具体表现是,点击一个网页,很长时间没有反应,网页进度条不动。再次点击网页链接时,报"ERR_SSL_BAD_RECORD_MAC_ALERT"错误。电脑端基本没有遇到过。

服务端Core版本:1.7.5
Android V2RayNG版本:1.7.38(Core版本1.7.5)
协议:Vision
尝试过1.8.0版本,同样有这个问题,因为要兼容小火箭上的旧版Vision,故退回1.7.5

使用Nginx Stream模块进行SNI分流,与网站共享443端口,Nginx和Xray之间使用PROXY protocol传递访客IP。如果使用PROXY protocol则会出现上述问题,关闭(Nginx注释proxy_protocol on,Xray注释acceptProxyProtocol)则不会出现问题。

Nginx分流配置:

stream {
  map $ssl_preread_server_name $xray {
    vision.example.com vision;
    example.com web;
    default web;
  }

  upstream vision {
    server unix:/dev/shm/vision.sock;
  }
  upstream web {
    server unix:/dev/shm/web.sock;
  }

  server {
    listen 443 reuseport so_keepalive=on;
    proxy_pass $xray;
    ssl_preread on;
    proxy_protocol on;
  }
}

server { //回落伪装站
  listen 80;
  listen unix:/dev/shm/web.sock ssl http2 proxy_protocol;
  listen unix:/dev/shm/fake.sock proxy_protocol;
  listen unix:/dev/shm/fakeh2.sock http2 proxy_protocol;
......

客户端应该是正确配置的,使用的电脑上没有问题的配置导出的二维码。
服务端配置:

    {
      "protocol": "vless",
      "listen": "/dev/shm/vision.sock",
      "settings": {
        "clients": [
          {
            "id": "xxxxxxx",
            "flow": "xtls-rprx-vision"
          }
        ],
        "fallbacks": [
          {
            "dest": "/dev/shm/fake.sock",
            "xver": 1
          },{
            "dest": "/dev/shm/fakeh2.sock",
            "alpn": "h2",
            "xver": 1
          }
        ],
        "decryption": "none"
      },
      "streamSettings": {
        "network": "tcp",
        "security": "tls",
        "tcpSettings": {
          "acceptProxyProtocol": true
        },
        "tlsSettings": {
          "alpn": [
            "h2",
            "http/1.1"
          ],
          "certificates": [
            {
              "ocspStapling": 3600,
              "certificateFile": "/usr/local/nginx/conf/ssl/server.cert.pem",
              "keyFile": "/usr/local/nginx/conf/ssl/server.key.pem"
            }
          ]
        }
      },
      "sniffing": {
        "enabled": true,
        "destOverride": [
          "http",
          "tls"
        ]
      }
    },

服务端日志,约22:02:13报ERR_SSL_BAD_RECORD_MAC_ALERT错误:
err.log

V2RayNG 客户端日志:
client.log

困扰很长时间了,似乎比较早的版本就有,一直待1.8.0都有这个问题,不知道是Xray本身的问题,还是用到的库的问题,还是V2RayNG的问题了(麻了 实在无解,来发issue吧(

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions