Shadowrocket Trojan 節點設定:協定原理與 Add Server 參數指南

說明 Trojan 如何透過 TLS 建立連線,並逐項介紹 Add Server 的位址、連接埠、密碼、SNI 與憑證驗證設定,以及填寫錯誤時的影響。

本文摘要

本文適合已取得服務商提供的參數,準備在 Shadowrocket(小火箭)中手動新增 Trojan 的使用者。先分辨伺服器位址、TLS 身分與協定密碼,再依照 Add Server 欄位填寫並驗證,最後根據連線失敗的階段逐步排查。訂閱與節點請向你的服務商取得;文中的網域與參數僅用來說明欄位,並非可用的連線資訊。

Trojan 的運作方式:先建立 TLS,再進行協定驗證

Trojan 會將代理協定資料傳送至 TLS 加密連線中。常見的基本連線使用 TCP:用戶端先連線至伺服器位址與連接埠,接著完成 TLS 交握與憑證驗證,再傳送 Trojan 驗證資訊及目標請求。伺服器驗證通過後,才會繼續轉送流量。因此,「連接埠可連線」、「TLS 交握成功」、「密碼驗證通過」和「目標網站可存取」是不同的檢查結果,不能互相取代。

伺服器位址解析 TCP 連線 TLS 交握 協定驗證 轉送至目標

TLS 負責加密連線並驗證伺服器身分;Trojan 密碼則用於協定存取驗證,兩者用途不同。密碼正確無法修復過期憑證,憑證有效也不代表密碼正確。伺服器使用 443 連接埠,只能表示該連接埠接受連線,不能據此判定它一定提供 Trojan 服務。

443
常見的 TLS 服務連接埠;實際值以服務商提供的參數為準
1–65535
可填寫的目標連接埠範圍,必須與伺服器監聽的連接埠一致
2 種憑證資料
憑證用於驗證伺服器身分,Password 用於 Trojan 驗證

本文以基本的 Trojan over TLS 為例。如果服務商也提供 WebSocket、路徑或其他傳輸參數,只填位址、連接埠與密碼可能無法建立連線。請依照同一份完整設定核對,不要混用不同項目的 SNI、Password 與傳輸設定。

進入 Add Server 前:備妥完整參數

手動輸入前,先確認資料明確標示 Trojan,不要只憑連接埠或網域推測類型。匯入訂閱適合保留服務商提供的完整欄位;手動新增則方便逐項核對參數。兩種方式使用相同的連線資訊,差別在於由誰負責填寫。

Home → Add Server:逐項填寫位址、連接埠與密碼

在 Home 點選右上角的新增按鈕,進入 Add Server,將 Type 設為 Trojan,再填寫下表項目。欄位排列與可見的其他選項會依目前的應用程式介面而異;請根據欄位含義核對資料,不要照著舊版介面的位置輸入。

欄位填寫依據填錯時的常見影響
Type選擇 Trojan,與伺服器端協定一致即使位址可連線,也可能無法完成協定驗證
Address服務商提供的主機名稱或 IP,例如 edge.example.com網域解析失敗、連線至錯誤位址,或連線逾時
Port伺服器監聽的連接埠,例如 443連線遭拒、逾時,或連至其他服務
Password服務商提供的 Trojan 密碼原文TLS 可能成功,但後續驗證或請求失敗
SNI服務商指定的 TLS 主機名稱,例如 tls.example.com可能取得錯誤的憑證,或發生主機名稱驗證失敗
Allow Insecure使用一般有效憑證時,維持關閉並保留憑證驗證開啟會降低伺服器身分驗證的保障,無法修正連線參數錯誤
  1. 先填寫 Type、Address 與 Port,並確認 Address 沒有重複包含連接埠。
  2. 貼上 Password 後,確認字元完整無誤。手動填寫密碼欄位時,請輸入密碼原文,不要自行進行 URL 編碼。
  3. 依照資料設定 SNI,核對憑證驗證選項;若有其他傳輸需求,也一併填寫。
  4. 儲存後返回 Home,選取剛新增的項目,再啟用連線。若系統要求新增 VPN 設定,請依照系統提示確認。

連接埠相同不代表參數可以互換;修改 Port 也不會自動變更伺服器端的監聽設定。若資料沒有提供連接埠,請先向服務商確認,不要連續嘗試多個常見連接埠。Password 也不是應用程式的購買密碼或裝置解鎖密碼。

SNI 與憑證驗證:位址相同不代表身分相同

Address 決定連線目的地;SNI 是 TLS 交握期間傳送的伺服器名稱提示,讓伺服器選取相應的網站與憑證。在一般網域設定中,用戶端還需要驗證憑證是否可信、是否仍在有效期限內,以及憑證名稱是否符合預期身分。SNI 不是密碼,也不能用來增加憑證的信任度。

服務商提供的設定核對方式
Address 與 TLS 主機名稱相同依照資料填入相同主機名稱,不要加上通訊協定前綴或路徑
Address 是 IP,另有指定的 SNIIP 用於連線定址,指定的主機名稱用於 TLS;兩者分別保留
Address 與 SNI 是不同網域保留服務商提供的配對,不要自行將 SNI 改成 Address
憑證驗證失敗檢查裝置時間、SNI、憑證有效期限與信任鏈,再確認伺服器端的憑證部署

結論:憑證出錯時先核對身分,不要先略過驗證

保持 Allow Insecure 關閉,先檢查 SNI 是否與服務商要求完全一致;若裝置日期與時間正確但仍出錯,請提供錯誤類型給服務商,以便核對憑證鏈與有效期限。

例如,連線位址是某個 IP,而伺服器憑證是核發給 tls.example.com,就不能直接把該 IP 當成憑證名稱。反過來,隨意填入無關網站的網域,也不會讓伺服器取得相應憑證或自動完成網站設定。SNI 必須是該連線實際支援的名稱。

自訂憑證或特殊信任設定需要另外確認信任方式。不要只為了暫時消除錯誤訊息,就長期設定為略過憑證驗證。TLS 已建立,也只表示用戶端到該伺服器這一段連線正常,不代表所有目標網站都能存取。

儲存後驗證:區分協定問題與規則問題

新增成功只表示資料已儲存在本機,不代表伺服器已完成驗證。請先確認選取的項目與 Global Routing,再進行可重複的存取測試。在 Config 模式下,請求會依設定規則選擇策略,部分請求可能使用 DIRECT,因此某個網頁能開啟,不能單獨證明 Trojan 可用。

  1. 確認選取項目:返回 Home,確認目前選取的是剛儲存的 Trojan 項目,而不是清單中的其他項目。
  2. 確認路由模式:在 Global Routing 查看目前使用的是 Proxy、Direct、Config 還是 Scene。Direct 不適合用來驗證此代理;使用 Scene 時,應先確認其實際採用的策略。
  3. 進行隔離測試:確有需要時,可暫時切換至 Proxy,使用自己有權存取且確認可用的 HTTPS 網頁進行測試;完成後恢復原設定。Proxy 只用於排除規則分流的影響,無法修正錯誤密碼。
  4. 檢查請求記錄:搭配請求記錄與可用的錯誤資訊,分辨網域解析、建立連線、TLS 與後續轉送等階段。請依測試類型判讀測試數值;延遲讀數本身不能完整證明連線可用。
  5. 返回 Config 複查:若 Proxy 模式可用、Config 模式異常,請檢查規則順序與對應策略,確認該請求是否確實選用了預期的代理。

規則通常依序由上而下比對,命中第一條規則後便採用對應策略。以下僅示意規則語意,不是建議用來取代現有 Config 的完整設定;範例中的 PROXY 必須對應實際設定中可用的策略。

[Rule]
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT

此示意會將 example.com 及其子網域交由 PROXY 處理,其他未命中的請求則交由 DIRECT。若只用其他網域測試,流量可能完全沒有經過 Trojan。相同原則也適用於設定中的 GEOIP、IP-CIDR 等規則:先確認請求命中了哪條規則,再判斷出站參數是否有問題。FINAL 應放在規則清單末尾。

常見問題:依失敗階段檢查,別反覆重建

以下內容是排查方向,不能單憑某一種錯誤訊息下定論。同樣的逾時可能是位址無法連線、伺服器沒有回應,或後續請求沒有回應;應一併檢視錯誤資訊與發生階段。

位址和密碼都填了,為什麼一直連線逾時?

返回 Home 編輯該項目,先確認 Address 沒有包含通訊協定前綴、路徑或空格,再檢查 Port 是否與服務商提供的資料一致。連線尚未建立時,修改 Password 通常無助於找出問題;可改用其他可用網路重複相同測試,再向服務商確認該位址與連接埠的服務狀態。

出現憑證錯誤,需要開啟 Allow Insecure 嗎?

先保持關閉。檢查裝置日期與時間,再對照資料核對 SNI,確認沒有貼上完整 URL。若仍然失敗,請服務商確認憑證名稱、有效期限與完整憑證鏈。略過驗證無法修正錯誤的連接埠,也不能證明連線至預期的伺服器。

TLS 沒有報錯,但網頁還是打不開,該先檢查什麼?

先確認選取的項目與 Global Routing,再檢查 Password 是否含有多餘空格,以及是否漏填其他傳輸設定。若 Proxy 模式正常、Config 模式異常,請檢查規則與策略;若兩種模式都失敗,則搭配請求記錄繼續檢查驗證與伺服器端轉送。

訂閱中已經有 Trojan,還需要手動新增一次嗎?

通常不需要。先使用向服務商取得的訂閱,並確認匯入的項目完整。若確實需要手動測試,請另外儲存並設定不同名稱;訂閱更新通常不會同步修改另行建立的手動項目,密碼或位址變更後需要分別核對。

可以把 SNI 改成任意網域來解決連線失敗嗎?

不能把任意網域當成通用修正方式。SNI 會影響伺服器選取 TLS 網站,而使用的憑證也必須符合身分驗證要求。請還原為服務商指定的值,再排查憑證或網路問題;若另有 Host 或路徑,也應維持同一份參數的配套關係。

App Store 正版確認