- Published on
低配 NAT VPS 上部署 Xray(完整可行方案)
- Authors
- Name
低配 NAT VPS 上部署 Xray
适用对象:
- 低配 VPS(1 核 / 256MB / 10GB)
- NAT / LXD / 端口映射型 VPS
- 目标:安全、稳定、速度优先、可长期运行
本文不是一键脚本,而是在真实环境中完整跑通、可验证、可维护的方案。
一、整体设计思路(先看这个)
在 低配 + NAT VPS 上,正确思路不是“功能越多越好”,而是:
- ❌ 不用 UDP(WireGuard / QUIC 在 NAT VPS 上不稳定)
- ❌ 不用 Docker / 面板(内存吃紧,维护复杂)
- ❌ 不搞多端口、多协议
- ✅ 单进程、单入口、TCP 行为
- ✅ 可选 TLS(有域名更好,没有也能用)
推荐技术组合
Xray-core + VLESS + TCP
- 无域名:VLESS + TCP(基础可用)
- 有域名:VLESS + TCP + TLS(最终形态)
这两种方案 共用同一套 Xray 配置结构,后期可以无缝升级。
二、VPS 与网络前提
VPS 条件
- CPU:1 核
- 内存:256MB
- 磁盘:10GB
- 系统:Debian 12
- 网络:NAT + 端口映射(非独立公网 IP)
端口映射示例
| 公网端口 | 容器端口 | 用途 |
|---|---|---|
| 27207 | 22 | SSH |
| 21468 | 443 | Xray |
⚠️ 外部访问必须使用 公网端口,不是容器端口。
三、安装 Xray-core(官方方式)
apt update && apt upgrade -y
apt install -y curl unzip socat cron
cd /usr/local/bin
curl -L -o xray.zip https://github.com/XTLS/Xray-core/releases/latest/download/Xray-linux-64.zip
unzip xray.zip
chmod +x xray
xray version
生成 UUID:
xray uuid
四、方案 A:不使用域名(基础方案)
适合场景:
- 没有域名
- 想先跑通、确认稳定性
- 内部或个人使用
Xray 配置(无 TLS)
/etc/xray/config.json
{
"log": { "loglevel": "warning" },
"inbounds": [
{
"listen": "0.0.0.0",
"port": 443,
"protocol": "vless",
"settings": {
"clients": [{ "id": "YOUR_UUID" }],
"decryption": "none"
},
"streamSettings": {
"network": "tcp"
}
}
],
"outbounds": [{ "protocol": "freedom" }]
}
创建 systemd 服务:
cat > /etc/systemd/system/xray.service << 'EOF'
[Unit]
Description=Xray Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/xray run -config /etc/xray/config.json
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable xray
systemctl restart xray
验证监听:
ss -lntp | grep 443
客户端使用(无 TLS)
vless://YOUR_UUID@VPS_IP:21468?encryption=none&type=tcp#vps-notls
说明:
- 使用 IP + 公网端口
- 无 TLS,协议简单,稳定性高
五、方案 B:使用域名 + TLS(推荐长期方案)
适合场景:
- 有可控域名(一级或自有二级域名)
- 希望更安全、更像正常 HTTPS
- 长期使用
DNS 要求(以 Cloudflare 为例)
vps.example.com -> VPS 公网 IP
(仅 DNS,灰云)
使用 acme.sh + DNS 验证申请证书
curl https://get.acme.sh | sh
/root/.acme.sh/acme.sh --set-default-ca --server letsencrypt
export CF_Token="YOUR_CF_TOKEN"
/root/.acme.sh/acme.sh --issue --dns dns_cf -d vps.example.com
mkdir -p /etc/xray/cert
/root/.acme.sh/acme.sh --install-cert -d vps.example.com \
--key-file /etc/xray/cert/key.pem \
--fullchain-file /etc/xray/cert/cert.pem
Xray 配置(TLS)
{
"log": { "loglevel": "warning" },
"inbounds": [
{
"listen": "0.0.0.0",
"port": 443,
"protocol": "vless",
"settings": {
"clients": [{ "id": "YOUR_UUID" }],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"security": "tls",
"tlsSettings": {
"certificates": [
{
"certificateFile": "/etc/xray/cert/cert.pem",
"keyFile": "/etc/xray/cert/key.pem"
}
]
}
}
}
],
"outbounds": [{ "protocol": "freedom" }]
}
重启并验证:
systemctl restart xray
ss -lntp | grep 443
客户端使用(TLS)
vless://YOUR_UUID@vps.example.com:21468?encryption=none&security=tls&type=tcp#vps-tls
⚠️ TLS 模式 必须使用域名,不能用 IP。
六、验证与排障(核心方法)
本地验证
curl ifconfig.me
返回 VPS 公网 IP 即成功。
底层验证(NAT / 监听)
apt install tcpdump
tcpdump -ni eth0 tcp port 443
看到 SYN → SYN/ACK → ACK 表示链路完全正常。
七、经验总结
- 一个低配 NAT VPS = 一个节点,是最优解
- 多设备使用同一节点即可
- 扩展方式推荐:多个 UUID,而不是多个端口
- 无域名方案适合起步,有域名方案适合长期
少即是多,简单即是稳定。
v2ray 剪贴板导入:
