安全讀取 Xray 伺服器日誌:分層排查、遮蔽敏感資料與復原設定

安全讀取 Xray 伺服器日誌:分層排查、遮蔽敏感資料與復原設定

Marcus Reid
2026年10月11日· 8 分鐘讀完

讀取 Xray 伺服器日誌是為了找出哪一層失敗,而不是收集每一條連線。先確認使用中的設定,在短時間範圍內重現一次授權失敗,然後還原正常日誌政策,只保留診斷所需證據。

關鍵要點

  • 服務負責人與實際設定決定日誌真正去向。
  • 啟動、認證及出站失敗需要不同證據。
  • 連接埠衝突先查歸屬,不隨意終止程序。
  • 分享副本要遮蔽敏感資料,受保護原件只按約定期限保留。
  • 臨時 debug 結束須驗證運行狀態復原,不只是改回檔案。

Xray 伺服器日誌可以證明甚麼?

自建服務的歸屬與職責劃分解釋了營運者為何同時負責排查與私隱。本流程適用於已有授權的 Xray-core v26.3.27 實例,系統參考 Ubuntu 24.04 LTS,journal 參考 systemd 255。執行前確認實際版本及管理程序;容器或面板管理的實例須找自己的日誌負責人,不能假設有 xray.service。

作者未做完整端到端部署實驗。以下指令是讀者驗證方法,沒有將成功或失敗當作實測結果。毋須修改日常使用的代理、VPN 或其他網絡客戶端;重現問題使用獨立授權客戶端。

日誌只反映元件記錄了甚麼,不會證明全部事件。沒有記錄,可能是被過濾、寫到別處,或流量根本未到 Xray。TLS 連線也可能只到備援網站,未成功通過代理認證;相關區別見Trojan 憑證與驗證流程。

步驟 1:確認運行實例及日誌入口

先辨識服務負責人、執行檔、版本與設定路徑。systemd 安裝要按盤點選準確單元;以下檢查示例單元,若授權實例名稱不同,先替換。輸出只在本機查看,服務參數及環境可能包含秘密。

XRAY_UNIT='xray.service'
systemctl show "$XRAY_UNIT" -p FragmentPath -p ExecStart -p User -p Group -p MainPID
systemctl cat "$XRAY_UNIT"
xray version

按 ExecStart 找出真正執行檔,shell 路徑中的 xray 未必是服務所用版本。在本機查看引用的設定及目錄參數,不把服務單元、環境檔或完整設定貼入工單。歸屬不明就停止,不能先開 debug 或重啟。

Xray 提供存取日誌、錯誤日誌目的地與 loglevel。持續更新文件說明含義,固定 tag 的解析器確認本文欄位。[1][2]以下只是合併至已審查設定的日誌片段,並非完整伺服器設定:

{
  "log": {
    "access": "none",
    "error": "",
    "loglevel": "warning",
    "dnsLog": false
  }
}

錯誤目的地為空表示主控台輸出;只有單元確實擷取輸出時,才會進入 journal。Xray 錯誤日誌若指定檔案路徑,則指向另一入口。停用存取日誌不代表錯誤輸出不含個人資料;先確定去向,不可因 journal 空白便判斷沒有日誌。

步驟 2:限時擷取一次失敗

約定短重現時段、一個客戶端、一個目的地及最大擷取量。記錄 UTC 時間和不含用戶身份的案例標籤,在空間充足、權限受限的私人目錄操作。示例最多選取時間範圍內 300 條記錄;單條異常大時,須進一步收窄範圍。

執行前替換兩個時間預留值,只涵蓋這一次授權重現,不擷取整天無關工作階段。Ubuntu 參考手冊列有 journal 的單元及時間過濾參數。[3]

START_UTC='YYYY-MM-DD HH:MM:SS UTC'
END_UTC='YYYY-MM-DD HH:MM:SS UTC'
umask 077
journalctl --unit "$XRAY_UNIT" --since "$START_UTC" --until "$END_UTC" \
  --no-pager --output short-iso --lines 300 > xray-case.private.log

先選未使用的私人案例目錄,避免覆寫原有證據檔案。在本機核對單元、時間範圍、檔案權限及大小。找不到失敗時先查入口,再只延伸必要邊界;不要啟用內容載荷擷取、匯出訂閱,或反覆重現直至磁碟滿。

warning 資訊不足時,先私下備份確切使用中的設定及權限。在獲准維護時段,只將本實例臨時改為支援的診斷等級,以實際執行檔及設定路徑驗證,再經所屬管理程序套用。記錄原等級和明確結束時間;語法通過不保證重啟成功,須保留獨立管理連線。

步驟 3:分辨啟動、認證與出站問題

按事件順序閱讀,不找「萬能錯誤字眼」。啟動失敗發生在接納客戶端之前;認證需要適當的入站連線;出站錯誤則表示請求至少到達可嘗試目標的階段。不可只憑時間相近的無關訊息推斷缺失階段。

層次要確認的事實下一項有界檢查
啟動正確執行檔、設定已載入、預期監聽存在服務退出狀態及首個相關錯誤
監聽衝突位址、傳輸協議、連接埠與所屬程序行動前將 PID 對應到管理程序
TLS 或入站認證客戶端端點、身份與協議匹配一次正確及一次故意錯誤的臨時認證資料
出站已接納請求指向授權目標該目標的路由與名稱解析設定
缺乏證據入口與時間範圍涵蓋嘗試先修正選取範圍,再提高詳細度

遇到 address already in use,在本機檢查 TCP 與 UDP 監聽。只有連接埠號碼並不足夠,位址族及綁定位址同樣重要。將 PID 追溯至執行檔、服務單元、容器或面板負責人。以下只供檢查,不是終止程序的做法:

sudo ss -lntup
systemctl status "$XRAY_UNIT" --no-pager

連接埠可能屬於合法網站或另一實例。不要 kill、搶佔連接埠或重啟整部主機。停止變更,與負責人安排未佔用的監聽或獲准遷移;無法確認 PID 歸屬時保留現狀。

認證排查使用臨時測試身份,完成後撤銷。不要要求別人分享真實訂閱、密碼或私鑰;訂閱連結保密指南解釋編碼連結為何仍是認證資料。先確立伺服器階段,再用VLESS/REALITY 連線排查處理客戶端不匹配,別以猜測調校代替證據。

步驟 4:處理副本中的敏感資料並保留上下文

原件只放在受限位置,指定負責人及刪除期限;另做分享副本。替換密碼等認證資料、訂閱 URL、UUID、電郵標籤、私鑰及帳戶識別碼;同時檢查客戶端 IP、目標主機名、查詢參數與檔案路徑有否洩露個人或內部資料。

使用 CLIENT_A、INBOUND_A、DESTINATION_A 等一致標籤保留關係。保留時間、相對順序、嚴重等級、階段與相關錯誤類別。若憑證不匹配必須使用真實主機名診斷,只經獲准私人渠道交給授權接收者。

不要相信一個正則表達式可以找出所有秘密。逐行查看上下文,尤其多行異常及複製的指令輸出。完整移除載荷,不是只遮住對話片段。實作內的位址遮蔽有用,但不能代替檢查最終副本中的身份、URL 及應用程式資料。

步驟 5:限制權限、磁碟使用量與保留期限

服務身份只獲得日誌目的地必需的寫入權限,證據僅供授權營運人員讀取。不要用所有人可寫的權限「修好」日誌。設定秘密、日誌與已處理的匯出檔面向不同受眾,不應共用公開網站目錄。

檔案日誌輪替前,先記錄大小上限、保留期限及所選實作支援的重新開啟方式。檔案改名後,程序可能繼續寫舊描述符。用下一次授權事件確認輸出到活動檔案;不要猜訊號,也不要把通用 copytruncate 視作所有 Xray 日誌輪替都安全的做法。

journal 有 SystemMaxUse、RuntimeMaxUse 等儲存限制,屬 journal 儲存政策,不是單一 Xray 實例預算。[4]共用主機上,不可為一個實例更改全域限制或 vacuum journal;應與儲存負責人訂政策,或隔離本實例日誌目的地。

磁碟滿時,先在獲准且有空間的位置保全少量相關樣本,記錄時間與磁碟、inode 使用量;有權時由管理程序停止本實例的過量輸出。再按保留政策刪除可明確歸屬本實例的過期檔案。不可刪其他服務日誌或整個 journal;若不能安全保全證據或歸屬不明,停止並交予負責營運者。

步驟 6:還原日誌政策並驗證生命週期

還原原有等級及臨時目的地設定,驗證最終設定並由實例負責人套用。重新檢查運行版本、服務、監聽與獨立管理路徑;產生一次獲准普通事件,確認正常日誌可用而沒有臨時診斷細節。改回檔案不證明程序實際載入甚麼。

檢查約定大小上限、保留機制與實際權限。檔案輪替須確認新輸出進入活動目的地,過期自有檔案按預期移除。撤銷臨時認證資料,私人及分享副本到期刪除。重啟失敗則還原上一組相容執行檔與設定,獨立確認原服務後才可再重現問題。

反覆診斷亦是維運成本。決定誰保管日誌、維護伺服器時,可比較VPS 維運與託管 VPN 服務。這不會把託管服務的私隱聲明套到你的自建實例,也不保證換服務就能修復故障。

總結

  • 先確認實際執行檔、設定、管理程序及日誌入口。
  • 訂明時間與擷取量,只收集一次失敗。
  • 先分清監聽、認證及出站,再改設定。
  • 人工審查分享副本,限制原件保留。
  • 還原運行日誌政策、撤銷測試身份、驗證原服務健康。

常見問題

Xray 伺服器日誌為何空白?

事件可能被過濾、寫入檔案或容器執行環境,也可能流量未到 Xray。先確認運行實例、入口及時間範圍,再提高詳細度;空白不代表認證成功或沒有用戶活動。

應一直開啟 debug 嗎?

本流程沒有這項預設建議。採用事件所需的最少細節,訂明結束時間與保留預算。重現完成後還原舊政策,並驗證程序確實載入。

隱藏訂閱前綴後可以分享嗎?

不可以。編碼內容及查詢參數仍可能包含認證資料。分享副本須替換完整秘密,使用一致無害標籤;已洩露便撤銷。真實認證資料不能放入工單或公開聊天。

可以終止佔用 Xray 連接埠的程序嗎?

先辨識負責人並取得授權。核對監聽位址、TCP 或 UDP、PID 及管理程序;合法網站或另一實例可能擁有連接埠,應另選空閒位置或安排受控遷移。

TLS 成功證明代理登入成功嗎?

不能。TLS 可能只到備援網站,或之後才認證失敗。使用明確設定的測試客戶端、授權目標及故意錯誤的臨時認證資料,比較代理結果,而不是只看網頁是否可用。

journal vacuum 適合處理單一服務噪聲嗎?

它可能刪除其他服務的 journal 資料,不屬本文的窄範圍清理。先保全少量樣本,只控制本實例輸出,再與儲存管理員按所屬檔案保留政策處理。

怎樣才算結束排查?

運行程序還原原日誌政策、普通日誌仍可用、原服務及管理通道健康、臨時認證資料已撤銷,證據有負責人及刪除期限。只改設定或擷取完畢並不足夠。

免責聲明: 本流程依據所列官方文件及固定實作,並非作者親自重現的成功或失敗報告。只檢查獲授權實例與流量,遵守法律及供應商條款;無法確立歸屬、儲存安全或復原方式時停止。

來源:

  1. Log Configuration https://xtls.github.io/en/config/log.html
  2. Xray-core v26.3.27 log configuration implementation https://github.com/XTLS/Xray-core/blob/v26.3.27/infra/conf/log.go
  3. journalctl — systemd 255 on Ubuntu 24.04 LTS https://manpages.ubuntu.com/manpages/noble/man1/journalctl.1.html
  4. journald.conf — systemd journal service configuration https://github.com/systemd/systemd/blob/v255/man/journald.conf.xml

Sources checked 2026 年 10 月 11 日。

開啟 3 天免費試用

註冊即可免費體驗全部高級功能。

*只限新用戶;每位用戶只可獲得一次試用。

安全讀取 Xray 伺服器日誌:分層排查、遮蔽敏感資料與復原設定 | AethoVPN