Allen's 碎碎念

Allen's 碎碎念

手动创建 vless vision reality 协议

1
2026-07-21

概述

之前一直使用3X-UI偷懒,但是最近开始玩NAT机,安装3X-UI实在有点难为。遂去看了xray 的文档,自己去配了一下试试。在此对过程进行记录。

过程

安装

官方提供了Linux下的安装脚本库。

https://github.com/XTLS/Xray-install

直接使用脚本即可。

bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install

以上是用于Debian13-lxc的NAT机时所用,而对于apline lxc的则不适用,经过搜索可以找到官方给出了解决办法。

https://github.com/XTLS/Xray-install/blob/main/alpinelinux/README_zh-Hans.md

编写配置文件

官方列举了常用的配置文件范例,可以在这个仓库中找到。

https://github.com/XTLS/Xray-examples

由于我常用的是vless reality vision,直接根据介绍找到VLESS-TCP-REALITY (without being stolen)文件夹。得到 server 端的 json 文件,将其全部复制下来。

在NAT机ssh中,

rm /usr/local/etc/xray/config.json
vim /usr/local/etc/xray/config.json

将其全部复制进去。接下来开始对需要更改的部分进行替换。

通过 xray x25519 生成私钥和公钥,私钥填入inbounds[0]/streamSettings/realitySettings/privateKey 下面,公钥复制下来,留待之后使用。

通过xray uuid 生成uuid值,填入inbounds[0]/settings/clients/id 。同时复制下来,留待之后使用。

接下来是需要借用的域名,由于我的是在盐湖城,我选择了犹他州自然历史博物馆的网站:nhmu.utah.edu 。将该值填入三个部位:inbounds[1]/settings/addressinbounds[0]/streamSettings/realitySettings/serverNamesrouting/rules[0]/domain

shortId 可以自己填写,需要是长度为2的倍数且最长16位的字符,允许使用0~9和a~f,即16进制。将该值填入inbounds[0]/streamSettings/realitySettings/shortIds 。并将该值复制下来,留待之后使用。

此时,配置文件范例为以下

{
    "log": {
        "loglevel": "warning"
    },
    "inbounds": [
        {
            "listen": "0.0.0.0",
            "port": 443,
            "protocol": "vless",
            "settings": {
                "clients": [
                    {
                        "id": "533ff972-094d-4ebb-97f2-c013c6f792f2",
                        "flow": "xtls-rprx-vision"
                    }
                ],
                "decryption": "none"
            },
            "streamSettings": {
                "network": "tcp",
                "security": "reality",
                "realitySettings": {
                    "dest": "127.0.0.1:4431",
                    "serverNames": [
                        "nhmu.utah.edu"
                    ],
                    "privateKey": "wCkMAt2bKvk0Q5DX3jGX8b0Mq0b8XLzR6uUOutDhcWU",
                    "shortIds": [
                        "34ae912d"
                    ]
                }
            },
            "sniffing": {
                "enabled": true,
                "destOverride": [
                    "http",
                    "tls",
                    "quic"
                ]
            }
        },
        {
            "tag": "dokodemo-in",
            "listen": "127.0.0.1",
            "port": 4431,
            "protocol": "dokodemo-door",
            "settings": {
                "address": "nhmu.utah.edu",
                "port": 443,
                "network": "tcp"
            },
            "sniffing": {
                "enabled": true,
                "destOverride": [
                    "tls"
                ],
                "routeOnly": true
            }
        }
    ],
    "routing": {
        "rules": [
            {
                "type": "field",
                "inboundTag": [
                    "dokodemo-in"
                ],
                "domain": [
                    "nhmu.utah.edu"
                ],
                "outboundTag": "direct"
            },
            {
                "type": "field",
                "inboundTag": [
                    "dokodemo-in"
                ],
                "outboundTag": "block"
            }
        ]
    },
    "outbounds": [
        {
            "protocol": "freedom",
            "tag": "direct"
        },
        {
            "protocol": "blackhole",
            "tag": "block"
        }
    ]
}

保存该配置文件。

启动并检查状态

运行

sudo systemctl start xray

以重启xray程序。

再运行

sudo systemctl status xray

此时应可以看见active(running) 的状态,即代表该配置已在正常运行。

客户端配置

接下来是vless的导入链接。vless的链接是按照一定规则的,如下所示:

vless://{uuid}@{ip}:{port}?type=tcp&encryption=none&security=reality&pbk={public-key}&fp=firefox&sni={domain}&sid={shortId}&spx=%2F&flow=xtls-rprx-vision#{name}

将之前记录的填入其中即可。

唯一需要注意的是NAT机的端口是映射的,配置文件虽然写了443端口,但是在订阅链接需要填写外部暴露端口。例如映射时有16743:443,则填写16743。