# Xray + Reality 完整部署指南 ## 原理说明 ``` 客户端 ──VLESS+Reality──▶ 服务端:8443 ──▶ 回落/转发 ``` Reality 借用真实网站的 TLS 证书指纹(如 www.cloudflare.com),**无需自己申请证书**,抗探测能力极强。由于 Reality 不依赖 80/443 端口,可使用 **8443** 等其他端口,不影响服务器上已有的其他服务(如 frps)。 --- ## 一、服务端部署 ### 1. 安装 Xray ```bash bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install # 验证安装 xray version ``` ### 2. 生成 Reality 密钥对 ```bash xray x25519 ``` 输出示例: ``` Private key: gEtA7x0Y_bcoHLj436Ock4i4Ji-Y3vpd74ba0R5hx3s Public key: W-Y1cF1b1fvSKzBz61mV8OC1sPaIxEChlTUqOePnkWc ``` > 私钥只放服务端,公钥填写到客户端。 ### 3. 生成 UUID ```bash xray uuid ``` ### 4. 生成 shortId ```bash openssl rand -hex 8 ``` shortId 为 2-16 位十六进制字符串,位数越长越安全,建议 16 位。 ### 5. 服务端配置文件 路径:`/usr/local/etc/xray/config.json` ```json { "log": { "loglevel": "warning", "access": "/var/log/xray/access.log", "error": "/var/log/xray/error.log" }, "inbounds": [ { "listen": "0.0.0.0", "port": 8443, "protocol": "vless", "settings": { "clients": [ { "id": "你的UUID", "flow": "xtls-rprx-vision" } ], "decryption": "none" }, "streamSettings": { "network": "tcp", "security": "reality", "realitySettings": { "show": false, "dest": "www.cloudflare.com:443", "xver": 0, "serverNames": [ "www.cloudflare.com" ], "privateKey": "你的私钥", "shortIds": [ "你的shortId" ] } }, "sniffing": { "enabled": true, "destOverride": ["http", "tls", "quic"] } } ], "outbounds": [ { "protocol": "freedom", "tag": "direct" }, { "protocol": "blackhole", "tag": "block" } ], "routing": { "domainStrategy": "IPIfNonMatch", "rules": [ { "type": "field", "ip": ["geoip:private"], "outboundTag": "block" } ] } } ``` **dest 目标站点选择建议:** - `www.cloudflare.com:443` ✅ 推荐 - `addons.mozilla.org:443` ✅ 推荐(国内未被封) - `www.amazon.com:443` ✅ 可用 ### 6. 创建日志目录 ```bash mkdir -p /var/log/xray chmod 755 /var/log/xray ``` ### 7. 验证配置并启动 ```bash # 验证配置语法 xray -test -c /usr/local/etc/xray/config.json # 启动并设置开机自启 systemctl enable xray systemctl start xray systemctl status xray # 确认端口监听 ss -tlnp | grep 8443 ``` ### 8. 开放防火墙端口 ```bash # UFW ufw allow 8443/tcp ufw reload ufw status | grep 8443 # iptables(Oracle Cloud 必须执行) iptables -I INPUT -p tcp --dport 8443 -j ACCEPT apt install iptables-persistent -y netfilter-persistent save ``` --- ## 二、云服务商安全组配置 **如果 tcpdump 抓不到包,必须在云控制台配置安全组。** ```bash # 验证包是否到达服务器(客户端连接时观察) tcpdump -i any port 8443 -n ``` | 云服务商 | 操作位置 | |---------|---------| | 阿里云 | 安全组 → 入方向规则 | | 腾讯云 | 安全组 → 入站规则 | | AWS | Security Groups → Inbound Rules | | **Oracle Cloud** | 网络 → VCN → 安全列表 → 添加入站规则(**必须**,且需同时配置本地 iptables) | | Vultr / Hetzner | 一般无需配置,ufw 放行即可 | Oracle Cloud 安全列表入站规则填写: - 源 CIDR:`0.0.0.0/0`(IPv6 填 `::/0`) - IP 协议:TCP - 目标端口:`8443` --- ## 三、客户端配置 ### 支持 Reality 的客户端 | 客户端 | 支持 Reality | 说明 | |--------|------------|------| | Xray-core | ✅ | 首选 | | sing-box | ✅ | 支持完善 | | clash-meta (mihomo) | ✅ | 支持 | | Passwall (OpenWrt) | ✅ | 内置 Xray-core | | v2ray-core | ❌ | 不支持 | > **注意:** Reality 客户端必须使用 Xray-core 或其他明确支持 Reality 的内核,v2ray 不可用。 ### Passwall (OpenWrt) 配置参数 确认 Xray-core 版本 >= 1.8.0: ```bash xray version ``` 节点配置填写: | 参数 | 值 | |------|----| | 类型 | Xray | | 协议 | VLESS | | 地址 | 服务器 IP | | 端口 | 8443 | | UUID | 你的 UUID | | Flow | xtls-rprx-vision | | 传输协议 | TCP | | TLS | Reality | | SNI | www.cloudflare.com | | Fingerprint | chrome | | PublicKey | 你的公钥 | | ShortId | 你的 shortId | ### Linux 客户端 JSON 配置 安装 Xray: ```bash bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install ``` 配置文件: ```json { "log": { "loglevel": "warning" }, "inbounds": [ { "listen": "127.0.0.1", "port": 10808, "protocol": "socks", "settings": { "udp": true } }, { "listen": "127.0.0.1", "port": 10809, "protocol": "http" } ], "outbounds": [ { "tag": "proxy", "protocol": "vless", "settings": { "vnext": [ { "address": "服务器IP", "port": 8443, "users": [ { "id": "你的UUID", "flow": "xtls-rprx-vision", "encryption": "none" } ] } ] }, "streamSettings": { "network": "tcp", "security": "reality", "realitySettings": { "show": false, "fingerprint": "chrome", "serverName": "www.cloudflare.com", "publicKey": "你的公钥", "shortId": "你的shortId", "spiderX": "/" } } }, { "tag": "direct", "protocol": "freedom" }, { "tag": "block", "protocol": "blackhole" } ], "routing": { "domainStrategy": "IPIfNonMatch", "rules": [ { "type": "field", "ip": ["geoip:private"], "outboundTag": "direct" }, { "type": "field", "domain": ["geosite:cn"], "outboundTag": "direct" }, { "type": "field", "ip": ["geoip:cn"], "outboundTag": "direct" } ] } } ``` 启动: ```bash xray run -c /path/to/client_config.json ``` --- ## 四、生成分享链接 ``` vless://UUID@服务器IP:8443?encryption=none&flow=xtls-rprx-vision&security=reality&sni=www.cloudflare.com&fp=chrome&pbk=公钥&sid=shortId&spx=%2F&type=tcp#节点名称 ``` IPv6 地址需用方括号包裹: ``` vless://UUID@[IPv6地址]:8443?... ``` --- ## 五、常用排查命令 ```bash # 查看服务状态 systemctl status xray # 查看实时日志 journalctl -u xray -f # 检查端口监听 ss -tlnp | grep 8443 # 抓包验证流量是否到达 tcpdump -i any port 8443 -n # 验证配置文件 xray -test -c /usr/local/etc/xray/config.json # 查看错误日志 cat /var/log/xray/error.log # 测试 dest 目标可达 curl -I https://www.cloudflare.com # 本地测试端口连通(在客户端执行) nc -zv 服务器IP 8443 ``` --- ## 六、注意事项 | 事项 | 说明 | |------|------| | **私钥保密** | privateKey 只放服务端,客户端只填 publicKey | | **flow 双端一致** | 服务端客户端都必须设置 `xtls-rprx-vision` | | **端口选择** | 建议使用 443 / 8443 等常见 HTTPS 端口 | | **低调使用** | 不要分享节点给太多人,避免 IP 被标记 | | **IP 被封** | 换 IP 即可,服务端配置不需要改动 | | **Oracle Cloud** | 必须同时配置控制台安全列表 + 本地 iptables | | **IPv6 优势** | IPv6 被封概率远低于 IPv4,可作为备用节点 | --- ## 七、备份信息模板 ``` 服务器 IP: 端口:8443 UUID: PrivateKey: PublicKey: ShortId: dest:www.cloudflare.com:443 ```