Shadowrocket Trojan 設定教學:Address、Port、Password、SNI 與 TLS 憑證驗證

Trojan 以 TLS 為基礎。本文先說明協定原理,再介紹如何在 Add Server 填寫 Address、Port、Password、SNI,以及憑證驗證選項常見的錯誤。

本文摘要

本文適合已取得服務參數,準備在 Shadowrocket 新增 Trojan 連線的使用者。先分清網路位址、TLS 身分與協定憑證,再依照 Add Server 的欄位完成設定,最後透過分層檢查找出連線逾時、憑證錯誤或連線後無法存取等問題。範例中的網域與密碼皆為虛構資料,無法用於連線。

Trojan 原理:TLS 連線與 Password 驗證各自負責什麼

Shadowrocket(小火箭)的 Trojan 類型用於連線至相符協定的伺服器。一般 Trojan 連線會先與伺服器建立 TCP 連線,再進行 TLS 握手;TLS 通道建立後,客戶端才會傳送 Trojan 協定驗證資料與目標請求。TLS 負責傳輸保護及伺服器身分驗證,Password 負責協定層驗證,兩者不能互相取代。

解析位址 TCP 連線 TLS 握手 協定驗證 轉送至目標

Address 指向實際連線的伺服器,Port 指定伺服器的監聽連接埠。SNI 會在 TLS 握手時告知伺服器預期連線的主機名稱;憑證驗證還會確認憑證信任鏈、有效期限及主機名稱是否符合要求。因此,位址連得上不代表 TLS 驗證一定通過;TLS 驗證通過也不代表 Password 正確。

本文以一般 Trojan over TLS 為例。若既有參數另有指定 WebSocket、Host 或 Path,請逐項依照伺服器設定,不要直接用本文的基本範例覆蓋原有設定。只變更 Type,無法將其他協定的伺服器轉換成 Trojan 伺服器。

443
常見的 TLS 監聽連接埠,並非固定要求
1–65535
Port 的有效數值範圍
4 項
先確認 Address、Port、Password、SNI

設定前準備:分開整理連線參數與 TLS 參數

以下內容以使用者已有服務供應商與訂閱為前提。本網站不提供、不販售,也不推薦節點或訂閱。開始前應先取得完整參數,不要只憑伺服器位址猜測其他欄位。密碼、訂閱連結及完整分享連結都可能含有存取憑證,請勿放入公開截圖或疑難排解紀錄。

基本連線範例

Type
Trojan
Address
edge.example.com
Port
443
Password
demo-only-not-valid

以上皆為說明用的虛構資料;實際設定時請使用自己已有的參數。

TLS 檢查範例

SNI
tls.example.com
憑證身分
憑證名稱須涵蓋用於驗證的主機名稱
憑證信任
信任鏈與有效期限須通過驗證
Allow Insecure
若有此選項,正常使用時請保持關閉

SNI 與 Address 可以不同,但必須有伺服器設定作為依據。

如果 Address 是 IP 位址,而伺服器使用網域憑證,通常仍須依提供的參數,將對應網域填入 SNI。不要為了「保持一致」就直接把 IP 位址複製到 SNI,也不要隨意改成常見網站的網域名稱。此名稱須符合伺服器的 TLS 設定,也須符合憑證身分驗證的要求。

Add Server 操作:先填寫,再儲存並選取連線

在 Shadowrocket 中,Home 用來管理及選取連線,Config 用來管理設定檔與規則,Settings 用來調整 App 設定。新增單一 Trojan 連線時,應從 Home 的新增入口開啟 Add Server,而不是把 Address 或 Password 填進 Config 的規則清單。

  1. 開啟 Home,點選右上角的新增按鈕進入 Add Server,將 Type 設為 Trojan。
  2. 依照原始參數填寫 Address 與 Port。若原始資料以「主機名稱:連接埠」的格式提供位址,請拆開填入兩個欄位。
  3. 填寫 Password。此處使用伺服器提供的 Trojan 密碼,不是 App Store 購買憑證,也不是憑證檔案的內容。
  4. 檢查 TLS 相關設定,依照原始參數填寫 SNI;若畫面顯示 Allow Insecure,正常使用時請保持關閉。其他傳輸選項也應與伺服器設定一致。
  5. 儲存後返回 Home,選取剛新增的連線,再開啟連線開關。首次出現系統 VPN 設定授權提示時,確認 App 後完成授權。
  6. 檢查 Global Routing,再前往明確需要透過此連線存取的目標,記錄存取結果與錯誤訊息。

若透過既有訂閱匯入,請先檢查匯入後的 Type、Address、Port 與 TLS 參數是否完整。更新訂閱可能會重新寫入由訂閱管理的項目;暫時排除問題前,請先記錄修改內容,並區分「本機手動修改」與「訂閱來源回傳的值」。不要長期依賴修改訂閱項目的方式來修正來源端錯誤。

欄位與錯誤現象:依失敗階段檢查,不要只看延遲

連線測試結果只反映特定測試目標與測試方式下的狀況。出現延遲數值,不代表所有目標都能存取,也無法證明驗證、DNS 與規則全都正確。排除問題時,先記下失敗階段,再檢查相應欄位;下表列出的是常見線索,並非錯誤與原因一一對應。

欄位或階段常見現象優先檢查項目
Address無法解析主機名稱,尚未建立連線網域拼寫、目前網路的 DNS、是否誤加 URL 路徑
Port / TCP連線逾時或遭拒絕實際監聽連接埠、網路是否可連通、伺服器是否接受連線
SNI / TLS憑證名稱不符或 TLS 握手失敗SNI、憑證涵蓋的名稱、伺服器 TLS 設定及裝置時間
Password建立連線後請求失敗或連線很快中斷密碼大小寫、空白字元,以及伺服器驗證紀錄
規則與目標部分網站正常,特定目標無法存取Global Routing、命中策略、目標 DNS 與目標本身的狀態

結論:憑證錯誤先檢查 SNI,不要以略過驗證取代修正

遇到憑證名稱不符時,先逐字比對 SNI 與伺服器提供的憑證網域;遇到有效期限錯誤時,檢查裝置日期與憑證狀態。不要長期以開啟 Allow Insecure 作為解決方式。

略過憑證驗證會削弱伺服器身分確認,無法修正連接埠錯誤、密碼錯誤或伺服器無法連線等問題。即使關閉驗證後狀況有所變化,也只表示問題可能與 TLS 身分驗證有關,不能據此確認連線安全。若環境需要使用自訂信任資料,應由服務管理方提供可供核對的設定說明。

連線後仍無法存取:區分 Global Routing 與 Trojan 參數

Trojan 參數決定如何連線至選取的伺服器,Global Routing 則決定請求採用哪種路由模式。Proxy、Direct、Config、Scene 並非四種協定:Proxy 使用代理路徑,Direct 採用直接連線,Config 依設定規則決定策略,Scene 則依設定的情境處理。排查單一連線時,應先確認目前的路由模式,再判讀存取結果。

以下僅示範規則順序,網域為說明用的虛構資料,並非可用服務。第一條讓更精確的網域直接連線,第二條讓該網域後綴下的其他請求使用 PROXY,最後以 FINAL 作為預設規則。套用前也須確認目前設定中的 PROXY 指向預期的代理選項。

DOMAIN,local.example.com,DIRECT
DOMAIN-SUFFIX,example.com,PROXY
FINAL,PROXY

Settings → On Demand 用來設定依條件觸發連線,不會修正 Trojan 的 Address、SNI 或 Password。手動連線尚未確認成功前,請先維持可控的手動測試流程;基本連線正常後,再檢查 On Demand 條件是否符合預期。自動觸發 VPN 與目標命中 PROXY 是兩項不同的判斷。

Trojan 設定常見問題

Address 填 IP 時,SNI 可以留空嗎?

請先確認已有的參數。如果伺服器依靠網域選擇 TLS 服務,或使用網域憑證,就應填入指定的 SNI。若只有 IP 位址而缺少 TLS 身分資訊,請向服務管理方確認,不要逐一嘗試網域名稱。

Port 一定要填 443 嗎?

不一定。443 是常見連接埠,實際值必須與伺服器的監聽設定一致。若提供的連接埠是 8443,就在 Port 填入 8443,並確認 Address 中沒有重複附加連接埠。

Password 需要先編碼或轉換嗎?

手動填寫時請使用原始密碼,不要自行計算摘要,也不要把分享連結中的跳脫文字直接當成密碼。匯入連結後若驗證失敗,請將解析出的 Password 與原始參數核對,特別檢查特殊字元及多餘空白。

更新訂閱後又無法連線,該先檢查哪裡?

先在 Home 開啟該項目的編輯頁面,確認 Type、Address、Port、SNI 是否已更新,並確認目前選取的項目沒有變更。若訂閱來源持續回傳錯誤值,應修正來源端參數;更新訂閱本身不代表連線已確認可用。

可以直接把 TLS 錯誤截圖傳給別人嗎?

可以提供已遮蔽敏感資訊的錯誤文字、失敗階段與發生條件,但請隱藏 Password、完整訂閱連結及分享連結中的憑證。排除問題通常只需說明連接埠、SNI 與憑證名稱是否一致,不必公開完整連線資料。

完成設定後,請依序複核:選取正確項目、確認 Global Routing、驗證目標存取,再還原日常規則與自動連線條件。若要繼續查閱協定與規則,請前往技術參考;若只在特定網路下失敗,請記錄 Wi-Fi 與行動網路的差異,避免將網路連通性問題誤判為密碼錯誤。

App Store 正版入口核對開發者與 App ID