麦青春的博客
返回博客列表

通用 Linux 服务器部署 Xray (VLESS + REALITY) 节点标准教程

分类: 技术 | 发布于:

提示1:这篇文章已经假定您拥有合适的网络环境、支付手段、收信配置。

提示2:请您严格遵守相关法律,并将服务器做备案与合法化处理。如您因未遵守本条提示产生了任何其他问题(包括但不限于法律问题),本站及其所有人将不承担对于您过失行为的任何责任。

目标

在 Linux 服务器上安装并配置 Xray-core,使用 VLESS 协议和 REALITY 安全特性,实现网络代理服务。

适用环境

  • 任何 VPS 或物理服务器
  • 操作系统: Linux (本教程命令主要基于 Ubuntu/Debian,会提供 CentOS/Fedora 等系统的命令提示)
  • 具有 root 或 sudo 权限的用户账户
  • 可通过 SSH 远程访问服务器

前置要求

  • 服务器拥有一个公网 IPv4 地址。
  • 防火墙配置: 确保所有相关防火墙已允许外部访问 Xray 服务所需的 TCP 端口(本教程默认使用 443)以及 SSH 端口(TCP 22)。这可能包括:

    • 云服务商防火墙/安全组: 如果你使用 AWS, GCP, Azure, DigitalOcean, Vultr 等云服务商,你需要在他们的管理控制台中配置防火墙/安全组规则,放行所需端口的入站流量(例如,TCP 443 端口来源设为 0.0.0.0/0,TCP 22 端口来源限制为你的 IP 地址)。
    • 操作系统防火墙: 服务器操作系统自带的防火墙(如 ufw, firewalld)也需要配置。具体步骤见教程 Step 6。

步骤 1: 系统环境准备

1.1. 更新系统软件包:

对于 Ubuntu/Debian 系统:

sudo apt update && sudo apt upgrade -y

对于 CentOS/RHEL/Fedora 系统:

sudo yum update -y # 或者 sudo dnf update -y (适用于较新 Fedora/RHEL)

1.2. 安装必要工具:

对于 Ubuntu/Debian 系统:

sudo apt install curl wget socat unzip -y

对于 CentOS/RHEL/Fedora 系统:

sudo yum install curl wget socat unzip -y # 或者 sudo dnf install curl wget socat unzip -y

步骤 2: 安装 Xray-core

使用官方提供的安装脚本进行安装。该脚本通常能兼容多数主流 Linux 发行版(如 Ubuntu, Debian, CentOS, Fedora 等)。

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

脚本会自动检测系统并进行安装,同时设置 systemd 服务。

  • Xray 主程序路径: /usr/local/bin/xray
  • 配置文件目录: /usr/local/etc/xray/
  • 服务名称: xray

步骤 3: 生成所需参数

VLESS + REALITY 配置需要以下独一无二的参数,请在服务器上生成并务必安全保存。

3.1. 生成 UUID (用户 ID):

/usr/local/bin/xray uuid

复制输出的 UUID 字符串 (格式: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)。将其记为 YOUR_UUID

3.2. 生成 REALITY 密钥对:

/usr/local/bin/xray x25519

复制输出的 Private key:Public key:。将私钥记为 YOUR_PRIVATE_KEY,公钥记为 YOUR_PUBLIC_KEY

3.3. (可选) 生成 Short ID:

openssl rand -hex 8

生成一个或多个 16 进制短 ID。将其记为 YOUR_SHORT_ID (如果生成多个,则区分)。如果不用,则配置中保持 ""

步骤 4: 配置 Xray 服务器 (config.json)

4.1. 编辑配置文件:

sudo nano /usr/local/etc/xray/config.json

(如果你偏好 vim,请使用 sudo vim ...)

4.2. 写入配置:

删除文件内所有内容,粘贴以下 JSON 模板,并替换其中的占位符。

{
  "log": {
    "loglevel": "warning"
  },
  "api": {
    "tag": "api",
    "services": [
      "StatsService"
    ]
  },
  "routing": {
    "rules": [
      {
        "type": "field",
        "inboundTag": [
          "api"
        ],
        "outboundTag": "api"
      }
    ]
  },
  "policy": {
    "levels": {
      "0": {
        "statsUserUplink": true,
        "statsUserDownlink": true
      }
    },
    "system": {
      "statsInboundUplink": true,
      "statsInboundDownlink": true
    }
  },
  "inbounds": [
    {
      "listen": "0.0.0.0",
      "port": 443,                  // **确保此端口已在所有防火墙中放行**
      "protocol": "vless",
      "settings": {
        "clients": [
          {
            "id": "YOUR_UUID",      // ***替换为你的 UUID***
            "flow": ""
          }
        ],
        "decryption": "none"
      },
      "streamSettings": {
        "network": "tcp",
        "security": "reality",
        "realitySettings": {
          "show": false,
          "dest": "www.microsoft.com:443", // **目标伪装域名 (可按需更换)**
          "xver": 0,
          "serverNames": [
            "www.microsoft.com"     // **需包含 dest 中的域名**
          ],
          "privateKey": "YOUR_PRIVATE_KEY", // ***替换为你的 Private Key***
          "minClientVer": "",
          "maxClientVer": "",
          "maxTimeDiff": 60000,
          "shortIds": [
             ""                     // ***替换为你的 Short ID(s),或保持 ""***
          ],
          "fingerprint": "chrome"     // **TLS 指纹 (需与客户端一致)**
        }
      },
      "sniffing": {
        "enabled": true,
        "destOverride": ["http", "tls", "quic"]
      }
    },
    {
      "listen": "127.0.0.1",
      "port": 62789,
      "protocol": "dokodemo-door",
      "settings": {
        "address": "127.0.0.1"
      },
      "tag": "api"
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom",
      "tag": "direct"
    },
    {
      "protocol": "blackhole",
      "tag": "block"
    },
    {
      "protocol": "freedom",
      "settings": {},
      "tag": "api"
    }
  ],
  "stats": {}
}

4.3. 保存并退出:

(在 nano 中: Ctrl + X, Y, Enter)。

步骤 5: 管理 Xray 服务

以下命令适用于使用 systemd 的系统 (目前绝大多数主流 Linux 发行版)。

5.1. 测试配置:

sudo /usr/local/bin/xray -test -config /usr/local/etc/xray/config.json

确保输出 Configuration OK.

5.2. 重启 Xray 服务:

sudo systemctl restart xray

5.3. 设置开机自启:

sudo systemctl enable xray

5.4. 检查运行状态:

sudo systemctl status xray

确保状态是 active (running)

步骤 6: 配置操作系统防火墙

重要: 你必须同时确保云服务商的防火墙(如果使用云服务器)和服务器操作系统的防火墙都允许 Xray 端口(例如 443)的入站 TCP 连接。云服务商防火墙请在其网页控制台配置。

以下是配置操作系统防火墙的常用方法:

6.1. 对于 Ubuntu/Debian (使用 ufw):

检查状态: sudo ufw status

如果是 inactive,则无需操作。

如果是 active,确保端口已允许。如果未允许,执行:

sudo ufw allow 443/tcp
sudo ufw reload

6.2. 对于 CentOS/RHEL/Fedora (使用 firewalld):

检查状态: sudo systemctl status firewalld

如果是 inactive,则无需操作 (除非你想启用它)。

如果是 active,执行以下命令永久允许端口 443 并重载规则:

sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload

步骤 7: 客户端配置参数汇总

你需要以下信息来配置你的客户端软件:

  • 类型 (Type/Protocol): VLESS
  • 地址 (Address/Host): YOUR_SERVER_IP (你的服务器的公网 IP 地址)
  • 端口 (Port): 443 (或你在 config.json 中设置的端口)
  • 用户 ID (UUID): YOUR_UUID (步骤 3.1 生成的 UUID)
  • 加密 (Encryption): none
  • 传输协议 (Network): tcp
  • 安全 (Security/Type): reality
  • SNI (Server Name Indication / Host / Peer): www.microsoft.com (或你在服务器配置中使用的域名)
  • 公钥 (Public Key / pbk): YOUR_PUBLIC_KEY (步骤 3.2 生成的 Public Key)
  • 指纹 (Fingerprint / fp): chrome (或你在服务器配置中使用的指纹)
  • Short ID (sid): (与服务器 shortIds 配置匹配,如果服务器是 [""],客户端通常留空)
  • (可选) Flow: 通常留空
  • (可选) SpiderX / Dest: www.microsoft.com:443 (与服务器 dest 配置匹配)

部署完成。请使用这些参数配置客户端并测试连接。