知識庫 使用 Profitserver 服務的簡單說明
主要 知識庫 Xray VLESS Reality Guide:VPS、Windows、Mac、Android、iPhone

Xray VLESS Reality Guide:VPS、Windows、Mac、Android、iPhone


本Xray VLESS Reality 伺服器設定指南將引導您在 VPS 上部署現代代理程式。目前,使用 Reality 傳輸安全層的 VLESS 是最受歡迎的自託管代理設定:與傳統 VPN 不同,它不會產生獨特的握手或固定的資料包簽章。 Reality 會複製一個真實、熱門網站(目標網站)的 TLS 1.3 握手,因此對於監控網絡的深度包檢測 (DPI) 系統來說,連接到您伺服器的行為與訪問該網站的行為完全相同——因為您的服務器會在握手期間短暫轉發目標網站的實際證書,所以不存在偽造或自簽名證書可供識別。

協定堆疊包括:VLESS(一種輕量​​級、無狀態的代理協議,用於處理身份驗證)、運行在XTLS Vision(一種流控制模式,透過在原始套接字層級複製已加密的 TLS 記錄來加速連接)之上,並由Reality(上文所述的偽裝層)提供安全保護。這三者均來自同一個專案 Xray-core,它是原始 V2Ray/V2Fly 專案的積極維護的後續專案。

本指南將指導您如何手動設定 Xray 伺服器,完全透過命令列操作,無需 Web 控制面板,也無需 Docker——最大限度地減少 VPS 上的資源佔用。無需域名,也無需購買 TLS 憑證:Reality 會借用目標網站的憑證進行握手,而不會提供自己的憑證。接下來,在「your_IP」處,您需要輸入您指派的 IP 位址。

你需要:一台運行 Ubuntu 22.04/24.04 或 Debian 11/12 的 VPS、root 權限、你的 VPS 的 IP 位址,以及空閒的 TCP 連接埠 443(沒有 web 伺服器、面板或其他代理正在監聽該連接埠)。

還沒有伺服器?請參閱「如何訂購服務器並支付費用」。

想先將它與其他自架方案進行比較嗎?請參閱AmneziaWG 伺服器部署指南,以了解基於 WireGuard 的替代方案;或參閱Hysteria2 和 TUIC 設置,以了解另外兩種現代的、抗審查的協議。

正在連接伺服器

Windows(PuTTY)

開啟 PuTTY,在主機名字段中輸入您的 VPS IP 位址,將連接埠設定為 22,然後使用您的 VPS 提供者透過電子郵件傳送給您的密碼以 root 使用者身分登入。

伺服器 IP 位址:您的 IP 位址
以 root 使用者登入
密碼:您的密碼

  • 開啟 PuTTY,在主機名字段中輸入您的 VPS IP 位址。
Xray VLESS Reality 伺服器設定 — PuTTY 連線視窗
  • 將連接埠設定為 22。
會話已填入 VPS IP 位址和連接埠 22,已儲存的會話「我的 VPS」已選中,可以按一下「開啟」。
  • 輸入以root使用者身分登入。
開啟一個新的 PuTTY 終端機窗口,建立 SSH 會話並提示輸入登入使用者名稱。
  • 使用您的VPS提供者透過電子郵件發送給您的密碼。然後您應該會進入伺服器的shell提示字元。
輸入 root 後,PuTTY 會提示輸入帳號密碼。

有關透過 PuTTY/SSH 連線的詳細步驟,請參閱如何透過 SSH 連線至 Linux 伺服器。

Xray VLESS Reality 伺服器設定已成功透過 SSH 登入。

Linux / macOS(終端機)

ssh root@your_IP

以下所有命令均在伺服器上的相同 SSH 會話中執行—這涵蓋了第 2 節到第 6 節,以及第 10 節中的伺服器端檢查。第 7 節到第 9 節(安裝和設定 VPN 用戶端)則在您自己的 Windows/Android/iOS 裝置上進行,因為代理程式需要在該裝置上執行;這些章節中明確說明了哪些行(如果有)仍然需要與伺服器互動。

準備伺服器

更新系統

在安裝任何軟體之前,請先刷新軟體包清單並升級已安裝的軟體包:

apt update -y && apt upgrade -y
執行 apt update 來刷新軟體包清單。 執行 apt upgrade 來安裝可用的軟體包更新。 升級過程仍在繼續——正在解壓縮和配置新軟體包。 升級完成-如果核心已更新,建議重新啟動。

如果在 apt 升級後會話中斷,這是預期的(dbus/polkit 已重新啟動) - 只需透過 SSH 重新連線。 

如果此操作升級了內核,建議重新啟動系統後再繼續。 (如需複習 apt 以及 Linux 軟體套件管理器的工作原理,請參閱Linux 軟體套件管理器。)檢查:

cat /var/run/reboot-required

如果檔案存在,請先使用「reboot」指令重啟,等待約 30 秒,然後重新連線。

安裝本指南使用的工具

apt install -y curl wget unzip openssl ufw qrencode

Xray 安裝程式本身需要 Curl 和 unzip;openssl 在第 4 節中產生短 ID;ufw 是下面配置的防火牆;qrencode 在第 7 節中將完成的用戶端連結轉換為可掃描的二維碼。

正在安裝所需工具:curl、wget、unzip、openssl、ufw、qrencode。

檢查系統時鐘

Reality 的握手過程包含時間戳檢查(maxTimeDiff 字段,預設為停用但值得了解),如果時鐘出現明顯偏差,也可能導致伺服器上其他地方的普通 TLS 憑證驗證出現異常。請確認時鐘已同步:

timedatectl status
Timedatectl 狀態輸出確認系統時脈已同步。

如果“系統時鐘同步”顯示為“否”,請啟用它:

timedatectl set-ntp true

配置防火牆(UFW)

有關 UFW 規則的更多信息,請參閱在 Linux 上配置防火牆。

打開你需要的兩個端口:22/tcp 用於 SSH(跳過此規則,你可能會失去對伺服器的訪問權限)和 443/tcp,Xray 將監聽該端口,也是普通 HTTPS 流量使用的端口——這正是它成為 Reality 正確選擇的原因。

ufw allow 22/tcp
允許 SSH(連接埠 22/tcp)通過 UFW 防火牆。
ufw allow 443/tcp
允許 Xray 代理埠 (443/tcp) 通過 UFW。
ufw --force enable
使用 --force 選項啟用 UFW 防火牆。
ufw status
Ufw 狀態輸出顯示兩條規則(22 和 443)均已啟動並允許。

ufw 狀態輸出中這兩條規則都應該顯示為 ALLOW。

為 VLESS Reality Server 安裝 Xray-core

Xray-core 專案 (XTLS) 發布了一個官方的安裝和升級腳本,該腳本會將二進位檔案安裝為 systemd 服務。在將任何第三方腳本透過管道傳遞給 bash 之前,請務必先進行審查——此腳本直接來自專案本身的程式碼庫。

bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install
安裝用於 VLESS Reality 伺服器設定的 Xray-core。

確認二進位已安裝到位並檢查已安裝的版本:

/usr/local/bin/xray version
使用 /usr/local/bin/xray 版本檢查已安裝的 Xray-core 版本。

如果命令輸出分頁且似乎卡住,請按 Q 退出。 Xray 二進位已安裝到 /usr/local/bin/xray其設定檔儲存在 /usr/local/etc/xray/.

您也可以使用相同的安裝腳本來升級現有安裝。若要查看完整的選項清單(包括卸載、僅更新地理資料和日誌輪替),請執行:

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

產生金鑰和憑證

真實性認證依賴四項數據。請立即產生所有資料;您將在第 5 節中將它們貼到伺服器配置中。

為客戶端產生 UUID

/usr/local/bin/xray uuid
使用 xray uuid 產生 VLESS 用戶端 UUID。

這是 VLESS 用戶 ID——請將其視為憑證,因為它用於驗證客戶端與伺服器之間的連線。對於您要授予存取權限的每個其他裝置或用戶,請再次執行此命令。

產生 Reality X25519 金鑰對

/usr/local/bin/xray x25519
產生 Reality X25519 金鑰對——私鑰、密碼和 Hash32。

這會列印三行:PrivateKey、Password和Hash32。 PrivateKey僅用於伺服器配置,絕對不能共享。 Password 是對應的公鑰——儘管名稱如此,但這是每個客戶端都需要輸入的值;Xray 特意將該欄位從 PublicKey 重新命名為 Password,以防止用戶隨意發布。 Hash32 僅用於獨立的 VLESS 加密功能,Reality 設定中不需要它。

產生一個短 ID

openssl rand -hex 8
使用 openssl rand -hex 8 產生一個短 ID。

這將產生一個 16 個字元的十六進位字串,用於區分不同的客戶端或客戶端群組。伺服器和客戶端必須使用相同的值。

選擇並測試一個現實目標

目標是真實網站,您的伺服器需要模仿其 TLS 握手過程。目標網站應支援 TLS 1.3 和 HTTP/2,不能位於 Cloudflare 等 CDN 服務之後(Xray 會將所有 Reality 驗證失敗的流量直接轉送至目標網站,因此,如果目標網站位於 CDN 服務之後,您的伺服器可能會變成該 CDN 服務的開放中繼)。理想情況下,目標網站應與您的 VPS 託管在同一網路區域,以獲得合理的延遲情況。直接從伺服器測試候選目標網站:

/usr/local/bin/xray tls ping www.microsoft.com:443
使用 xray tls ping 測試 Reality 目標的 TLS 握手。

使用主機名,不要使用 URL。以下幾個網域常被用作 Reality 測試目標,因為它們穩定、支援 TLS 1.3 且未使用 CDN:www.microsoft.com、addons.mozilla.org、dl.google.com。測試幾個域名,選擇一個從您的 VPS 伺服器位置可以穩定回應的域名;您需要在目標域名和第 5 部分中的 serverNames 條目中使用相同的主機名稱。

編寫伺服器配置

備份安裝程式自帶的設定文件,然後開啟該文件進行編輯:

cp /usr/local/etc/xray/config.json /usr/local/etc/xray/config.json.orig
nano /usr/local/etc/xray/config.json
編輯 Xray config.json 檔案以進行 VLESS Reality 伺服器設定。

開啟設定檔進行編輯:

nano /usr/local/etc/xray/config.json
在 nano 文字編輯器中編輯 config.json 檔案。

請將整個檔案替換為以下模板,並將第 4 部分中的 UUID、私密金鑰、短 ID 和目標主機名稱替換為您自己的 UUID、私密金鑰、短 ID 和目標主機名稱(如果您在第 2 部分中將其從 443 連接埠變更為其他連接埠,則還需要替換為該連接埠):

{
  "log": {
    "loglevel": "warning"
  },
  "inbounds": [
    {
      "listen": "0.0.0.0",
      "port": 443,
      "protocol": "vless",
      "settings": {
        "users": [
          {
            "id": "YOUR-UUID-HERE",
            "flow": "xtls-rprx-vision",
            "email": "client1"
          }
        ],
        "decryption": "none"
      },
      "streamSettings": {
        "method": "raw",
        "security": "reality",
        "realitySettings": {
          "show": false,
          "target": "www.microsoft.com:443",
          "serverNames": ["www.microsoft.com"],
          "privateKey": "YOUR-SERVER-PRIVATE-KEY",
          "shortIds": ["YOUR-SHORT-ID"]
        }
      }
    }
  ],
  "outbounds": [
    { "protocol": "freedom", "tag": "direct" },
    { "protocol": "blackhole", "tag": "blocked" }
  ]
}

按 Ctrl+O(WriteOut)儲存檔案。

按回車鍵確認檔案名稱。

按Ctrl+X退出nano程式。

重要欄位:users[].id 是第 4 節中的 UUID;users[].flow 啟用 XTLS Vision;method(以前稱為 network)選擇 RAW 傳輸方式,即 Reality 所需的純 TCP 傳輸方式;target 和 serverNames 是您在第 4 節中測試的網站;privateKey25519 鍵列出了客戶端允許使用的所有短 ID。要稍後新增更多用戶,請將其他物件追加到 users 陣列中,每個物件都應具有自己的 UUID 和電子郵件標籤,然後重新啟動服務。

自 Xray 26.3.27 版本起,如果 Reality 入站請求中沒有明確指定 minClientVer 字段,則會強制使用伺服器本身的核心版本-舊版的用戶端應用(例如,使用過時的 v2rayN、v2rayNG 或 Streisand 建置並重新導向將舊版 Xray 捆綁的版本)會被重新導向的版本)會被重新導向伺服器而建立並重新導向的版本)會被重新導向的版本)會被重新導向伺服器而被重新導向伺服器而被重新導向伺服器而被重新導向的版本)會被重新導向伺服器而被重新導向伺服器而被重新導向的版本)會被重新導向伺服器而被重新導向的版本伺服器而被重新導向伺服器而被重新導向的版本)會被重新導向伺服器而被重新導向伺服器而被重新導向的版本)會被重新導向伺服器而被重新導向的版本伺服器就不會被重新導向的版本)客戶端不會報錯,伺服器日誌中也不會出現明顯的異常。如果某個用戶端在更新後突然逾時,請先嘗試更新用戶端應用程式本身;如果無法更新,請在 realitySettings 中新增 "minClientVer": "25.9.11"(或其他更早的版本),但這樣做會導致舊客戶端的 TLS 指紋與現代瀏覽器的兼容性略有下降。

驗證並重啟

在重啟線上服務之前測試配置-這樣可以避免因 JSON 拼字錯誤和不支援的欄位導致代理伺服器宕機:

/usr/local/bin/xray run -test -c /usr/local/etc/xray/config.json
使用 xray run -test 驗證新設定-未發現錯誤。

啟動服務並啟用自動啟動

使用新設定重新啟動 Xray,並啟用開機自動啟動功能:

systemctl enable --now xray
啟用 Xray 在系統啟動時自動啟動。
systemctl restart xray
正在重新啟動 Xray 服務以套用新配置。
systemctl status xray --no-pager
Systemctl status xray 輸出 — 服務處於活動狀態(正在執行)。

狀態應顯示為活動(正在運行)。請確認確實有程式在監聽 443 連接埠:

ss -lntp | grep ':443'
使用 ss -lntp 確認 Xray 正在監聽連接埠 443。

如果 Xray 啟動失敗,最快的查看原因是查看 systemd 日誌(有關閱讀 Linux 日誌的一般背景知識,請參閱如何閱讀 Linux 日誌以及在哪裡可以找到它):

journalctl -u xray -n 50 --no-pager

建立客戶端連結連結

Xray 用戶端匯入的是單一 vless:// 共享鏈接,而不是設定檔。根據第 4 節中產生的值建立該連結(客戶端應用程式的共用連結格式仍然使用舊的傳輸類型 type=tcp,即使 JSON 欄位本身現在稱為 method):

YOUR-UUID — 來自 xray uuid(例如,a1b2c3d4-e5f6-7890-abcd-ef1234567890)

YOUR-PASSWORD-PUBLIC-KEY — 是來自 xray x25519 的密碼(不是私鑰!)

YOUR-SHORT-ID — 來自 openssl rand -hex 8(例如,a1b2c3d4e5f67890)

您的IP位址 — (您的伺服器IP位址)

SNI — www.microsoft.com(或您的目標網站)

vless://YOUR-UUID-HERE@your_IP:443?encryption=none&security=reality&sni=www.microsoft.com&fp=chrome&pbk=YOUR-PASSWORD-PUBLIC-KEY&sid=YOUR-SHORT-ID&type=tcp&flow=xtls-rprx-vision#My-Xray-Server

範例連結: 

vless://a1b2c3d4-e5f6-7890-abcd-ef1234567890@your_IP:443?encryption=none&security=reality&sni=www.microsoft.com&fp=chrome&pbk=xyz_public_key_here&sid=a1b2c3d4e5f67890&type=tcp&flow=xtls-rprx-vision#My-Xray-Server

pbk 是來自 xray x25519 的密碼值(公鑰,而不是私鑰),sni 與目標主機名稱匹配,# 後面的文字只是一個顯示標籤,您可以在任何客戶端中自由重命名。

將其轉換為二維碼,以便行動用戶可以直接掃描:

qrencode -o ~/vless-client.png "vless://YOUR-UUID@your_IP:443?encryption=none&security=reality&sni=www.microsoft.com&fp=chrome&pbk=YOUR-PASSWORD-PUBLIC-KEY&sid=YOUR-SHORT-ID&type=tcp&flow=xtls-rprx-vision#My-Xray-Server"

或直接將其列印到終端,而不儲存檔案:

qrencode -t ansiutf8 "vless://YOUR-UUID@your_IP:443?encryption=none&security=reality&sni=www.microsoft.com&fp=chrome&pbk=YOUR-PASSWORD-PUBLIC-KEY&sid=YOUR-SHORT-ID&type=tcp&flow=xtls-rprx-vision#My-Xray-Server"
使用 qrencode 從 vless:// 客戶端連結產生二維碼。

使用 scp 命令將 PNG 檔案複製到您自己的電腦上,並在您電腦的終端機(或 Windows 上的 PowerShell)中執行該命令,而不是在伺服器上執行:

scp root@your_IP:~/vless-client.png .

從 Windows 連線

本節中的所有操作都在您的 Windows PC 上進行,而不是透過 SSH 進行——用戶端必須在實際使用代理程式的裝置上執行。

安裝 v2rayN

v2rayN 是一款免費且積極維護的 GUI 用戶端,它捆綁了 Xray-core,並原生支援 VLESS/Reality。請從專案頁面下載最新版本:

取得 Windows 64 位元 .zip 資源(自包含版本,從最新的 v2rayN 版本開始,無需單獨的 .NET 執行時間),將其解壓縮到任意位置,然後執行 v2rayN.exe。

導入伺服器

將第 7 部分中內建的 vless:// 連結複製到剪貼簿(或使用 scp 命令複製 QR PNG 檔案並開啟),然後在 v2rayN 中選擇“伺服器”,然後選擇“從剪貼簿批次匯入 URL”(或使用內建掃描器掃描 QR 碼)。新的伺服器設定檔將出現在清單中,並在 # 後顯示您設定的標籤。

右鍵單擊設定檔並將其選為活動設定文件,然後從主視窗工具列啟用系統代理程式(或 TUN 模式,用於路由整台電腦)。

透過 Android 連接

這裡的所有操作都在您的安卓設備上進行,而不是透過 SSH。

安裝 v2rayNG

v2rayNG 是 v2rayN 的 Android 版本,由同一維護者開發,也是 Android 上使用最廣泛的 X 光用戶端。您可以從 Google Play 安裝,如果 Play 在您所在的地區不可用,也可以直接從專案的發布頁面下載 APK 檔案:

導入伺服器

開啟 v2rayNG,點擊右上角的“+”按鈕,複製 vless:// 連結後選擇“從剪貼簿匯入配置”,或掃描二維碼並將相機對準第 7 部分產生的 PNG 檔案。點擊匯入的設定檔進行選擇,然後點擊底部的圓形連接按鈕。 Android 系統首次連線時會提示授予 VPN 權限-請允許以建立連線。

從 iOS 連接

所有操作都在您的 iPhone 或 iPad 上進行,而不是透過 SSH。根據蘋果 App Store 的準則,iOS 上的 Xray/VLESS 用戶端通常是免費的,但偶爾也會有付費的獨立應用,而不是系統整合功能。

安裝一個支援 Reality 的客戶端

Streisand 是一款免費的開源用戶端,支援 VLESS with Reality 以及其他幾種協定。您可以在 App Store 中搜尋它,或點擊此連結。

App Store 的目錄因商店/地區而異,並且會隨著時間而改變;如果 Streisand 在您的商店中不可見,支援 VLESS+Reality 的替代應用程式包括 Happ、V2Box 和 V2rayTun — 在 App Store 中搜尋適用於您帳戶的應用程式。

導入伺服器

將 vless:// 連結複製到剪貼簿,開啟用戶端,然後使用其「從剪貼簿新增」(或等效的「匯入」)選項,或使用用戶端內建的掃描器掃描第 7 部分中的二維碼。啟用新設定檔;iOS 系統首次啟用時會提示授予 VPN 設定權限,您需要透過面容 ID、觸控 ID 或密碼進行授權。

驗證連接

從第 8、9 或 10 節啟動隧道後,回到您自己的裝置(而不是 SSH 會話),在瀏覽器中開啟任何「我的 IP 位址是什麼」檢查器——顯示的位址應該與您的 VPS 的 IP 位址相符。

若要從伺服器端進行驗證,請檢查 systemd 日誌中的連線活動,並確認連接埠 443 上已建立 TCP 會話:

journalctl -u xray -n 50 --no-pager
ss -tnp | grep ':443'

在預設的「警告」日誌等級下,Xray 不會列印太多關於單一連線的資訊;如果您在排查故障時需要查看更多詳細信息,請暫時在 config.json 中將「loglevel」設定為「info」並重新啟動服務,然後在一切正常後將其切換回「警告」。

參考:

場

價值

地址

您的VPS的公網IP位址

港口

443(與第 2 部分開啟的連接埠相同)

UUID / id

您的 UUID 在此 — 在第 4 節中使用 xray uuid 生成

流

xtls-rprx-vision — 兩側必須匹配

安全性

現實

SNI / 伺服器名稱

在第 4 節中測試的目標主機名,例如 www.microsoft.com

指紋(fp)

chrome — 支援的 uTLS 指紋;必須在客戶端上設定

公鑰 / pbk

xray x25519 中的密碼值-絕非私鑰

短 ID / SID

使用 openssl rand -hex 8 產生;必須與 shortIds 中的值相符

結語

按照本指南操作,您的 VPS 將運行一個獨立的 Xray VLESS+Reality 伺服器,該伺服器偽裝成指向真實網站的普通 HTTPS 流量,無需網域和憑證維護。該服務以 systemd 單元 xray 的形式運行,並且在您無需任何操作的情況下,重新啟動後仍然有效。

隨時可以透過在 config.json 的 users 陣列中新增另一個物件來新增客戶端,該物件具有來自 xray uuid 的新 UUID 和不同的電子郵件標籤,然後重新啟動服務 (systemctl restart xray) 並根據第 7 節為該使用者建立自己的共用連結。每個人或設備使用單獨的 UUID 可以撤銷某個使用者或設備,而不會影響其他人。

伺服器運行後,以下幾個習慣值得保持:

  • 保持 Xray 補丁更新。定期重新執行第 3 節中的安裝腳本(它會就地升級現有安裝),並根據第 5 節中提到的 minClientVer 行為,保持客戶端應用程式更新。
  • 將 config.json 檔案備份到伺服器以外的私密位置。該檔案保存著伺服器的 Reality 私鑰和每個用戶端的 UUID;遺失該檔案意味著需要為每個裝置重新產生憑證。
  • 立即撤銷遺失的設備。從 config.json 檔案中的 users 陣列中刪除對應的項目,然後重新啟動服務。

如果連線始終無法建立,請依照下列順序檢查:

  • 服務狀態(systemctl status xray --no-pager)和日誌(journalctl -u xray -n 50 --no-pager)
  • 防火牆規則(ufw 狀態 — 連接埠 443/tcp 必須開啟)
  • 連接埠 443 沒有被其他服務佔用(ss -lntp | grep ':443' 應該只顯示 xray)。
  • 客戶端中的 UUID、公鑰、短 ID、SNI 和流程必須與 config.json 完全匹配——即使只有一個字元不匹配,握手也會靜默失敗。
  • 現實目標本身,帶有X射線TLS ping :443,以防網站更改其 TLS 配置

想將 Xray 與其他方案進行比較?請參閱AmneziaWG 伺服器部署指南和如何在伺服器上設定 WireGuard VPN,以了解基於 WireGuard 的替代方案;或參閱Hysteria2 和 TUIC 設置,以了解另外兩種專為丟包或過濾嚴重的網路設計的抗審查協定。如果您只需要一個簡單的代理程式而不是完整的隧道設置,那麼在 CentOS/ArchLinux 上配置 3proxy是一個更輕量級的選擇;而 Linux 上的舊版VPN 伺服器設定:PPTP 還是 OpenVPN?則涵蓋了設定更簡單但更容易被深度包檢測 (DPI) 檢測和屏蔽的協議。代理程式上線後,如需進行常規伺服器加固,請參閱Linux 使用者:管理和權限。

❮ 上一篇文章 AmneziaWG 伺服器部署指南

向我們諮詢有關 VPS 的問題

無論白天或黑夜,我們隨時準備好解答您的問題。