Xray 是 V2Ray 的一个分支,具有更高的性能(如大连接情况下)、更多的功能(如 XTLS)。

经过各种组合验证,最后我采用的是“VLESS-Vision-REALITY”的方案来实现,其优势有:

  • TCP 比 UDP 更稳定;
  • vless 比 vmess 更轻量简洁,传输效率更高;
  • reality 相比 tls 无需注册域名,更省事;

记录如下:

server

server 的 config.json:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
{
  "log": {
    "loglevel": "warning"
  },
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      {
        "type": "field",
        "outboundTag": "block",
        "ip": [
          "geoip:private"
        ]
      }
    ]
  },
  "inbounds": [
    {
      "protocol": "vless",
      "listen": "0.0.0.0",
      "port": __(1)__,
      "settings": {
        "clients": [
          {
            "id": "__(2)__",
            "flow": "xtls-rprx-vision"
          }
        ],
        "decryption": "none"
      },
      "streamSettings": {
        "network": "tcp",
        "security": "reality",
        "realitySettings": {
          "dest": "__(3)__:443",
          "serverNames": [
            "__(3)__",
            "__(3')__"
          ],
          "privateKey": "__(4)__",
          "shortIds": [
            "__(5)__"
          ]
        }
      },
      "sniffing": {
        "enabled": true,
        "destOverride": [
          "http",
          "tls",
          "quic"
        ]
      }
    }
  ],
  "outbounds": [
    {
      "tag": "direct",
      "protocol": "freedom"
    },
    {
      "tag": "block",
      "protocol": "blackhole"
    }
  ]
}

其中:

  • (1) 服务端的侦听端口
  • (2) UUID,可以用 xray uuid 来生成
  • (3) 回落的域名,用于伪装1

  • (3’) 伪装网站的其他地址2

  • (4) 长 ID,用 xray x25519 生成一对密钥,填 “Private key” 的值

  • (5) 短 ID,用 openssl rand -hex 8 生成

client

client 的 config.json:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
{
    "log": {
        "loglevel": "warning"
    },
    "routing": {
        "domainStrategy": "IPIfNonMatch",
        "rules": [
            {
                "type": "field",
                "outboundTag": "direct",
                "domain": [
                    "geosite:cn"
                ]
            },
            {
                "type": "field",
                "outboundTag": "direct",
                "ip": [
                    "geoip:cn",
                    "geoip:private"
                ]
            }
        ]
    },
    "inbounds": [
        {
            "protocol": "socks",
            "listen": "0.0.0.0",
            "port": __(6)__
        },
        {
            "protocol": "http",
            "listen": "0.0.0.0",
            "port": __(6')__
        }
    ],
    "outbounds": [
        {
            "tag": "proxy",
            "protocol": "vless",
            "settings": {
                "vnext": [
                    {
                        "address": "__(7)__",
                        "port": __(1)__,
                        "users": [
                            {
                                "id": "__(2)__",
                                "flow": "xtls-rprx-vision",
                                "encryption": "none"
                            }
                        ]
                    }
                ]
            },
            "streamSettings": {
                "network": "tcp",
                "security": "reality",
                "realitySettings": {
                    "serverName": "__(3)__",
                    "publicKey": "__(4')__",
                    "shortId": "__(5)__",
                    "fingerprint": "chrome"
                }

            }
        },
        {
            "tag": "direct",
            "protocol": "freedom"
        }
    ]
}

其中:

  • (6) 客户端的侦听端口 socks 协议
  • (6’) 客户端的侦听端口 http 协议,给某些不支持 socks 的服务用
  • (7) 服务器地址
  • (4’) 长 ID,填与服务端对应的 “Public key” 的值

  1. 该网站用于伪装,当认证不通过时,会显示该网站,让人以为服务器上运行的是一个网站。网站的选择有一定要求:首先进入待测网页,按下 F12 键,转到“安全性”选项卡,在“连接”下出现“TLS 1.3,X25519”字样即代表网页支持 TLSv1.3 协议、并且使用的是 x25519 证书;其次转到“控制台”选项卡,输入命令 window.chrome.loadTimes()​,查看 npnNegotiatedProtocol 的值是否为 h2,如果是的话就代表使用的是 H2 协议。
    [return]
  2. serverName 列表,暂不支持 * 通配符,在 Chrome 里输入待测试的网址,按下 F12 键,转到“安全性”选项卡,刷新一下,查看“主要来源(安全)”,填证书中 SAN 的值,有多条就填多条。
    [return]