手动创建 vless vision reality 协议
概述
之前一直使用3X-UI偷懒,但是最近开始玩NAT机,安装3X-UI实在有点难为。遂去看了xray 的文档,自己去配了一下试试。在此对过程进行记录。
过程
安装
官方提供了Linux下的安装脚本库。
直接使用脚本即可。
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install以上是用于Debian13-lxc的NAT机时所用,而对于apline lxc的则不适用,经过搜索可以找到官方给出了解决办法。
编写配置文件
官方列举了常用的配置文件范例,可以在这个仓库中找到。
由于我常用的是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/address 、inbounds[0]/streamSettings/realitySettings/serverNames 和routing/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。