Shadowrocket 協定選擇與參數參考
先依既有伺服器資料選擇類型,再核對驗證、傳輸與路由。協定名稱本身無法決定速度、耗電量或連線結果。
- 驗證與加密
- TLS 與傳輸
- DNS 與規則
- 連線與耗電排查
- Shadowsocks
- VMess
- VLESS
- Trojan
- HTTP · SOCKS5
- WireGuard
- Hysteria2
本頁是供反覆查閱的系統參考,著重說明各參數的用途、不同協定的適用條件,以及連線失敗時應從哪一層著手檢查。使用說明提供從匯入到首次連線的快速入門流程;完成首次連線後,可回到本頁查閱各協定章節。所有操作均以使用者已有自己的訂閱或伺服器資料為前提,本說明站不提供、不販售也不推薦節點或訂閱。
01 / SELECTION
協定選擇:先確認伺服器端,再比較傳輸條件
分開理解協定、傳輸、安全性與路由
在 Shadowrocket 中選擇協定類型,代表指定用戶端與伺服器通訊時使用的格式,並非選擇可任意互換的速度等級。伺服器提供 Shadowsocks,就必須選用對應的 Shadowsocks 類型與驗證資料;伺服器提供 Trojan,也不能只把類型改成 VLESS 繼續使用。位址和連接埠相同,只能表示連線目的地相同,無法證明伺服器接受相同的交握、驗證或資料封裝。選擇類型時,首要依據始終是既有資料明確標示的協定。
可用的連線通常涉及四層資訊。第一層是位址與連接埠,決定資料傳送到哪裡;第二層是協定與身分驗證,決定伺服器是否接受請求;第三層是傳輸與安全性參數,例如 TLS、WebSocket 或 UDP;第四層才是本機路由,決定哪些請求會經由該連線。某些協定會整合其中數層,另一些則可採用不同組合。排查時應逐層檢查,否則容易把 DNS 錯誤當成密碼錯誤,或把規則未命中誤認為協定不相容。
速度與耗電量沒有固定排名
實際速度會受到接入網路、往返延遲、封包遺失、伺服器負載、出口頻寬及目標服務等因素影響。增加一層封裝通常會增加資料量與處理負擔,但不代表在所有環境中都更慢:如果某種傳輸方式更適合目前的網路,減少重傳所帶來的效益可能高於封裝成本。反過來說,同一協定在不同伺服器上的差異,也可能遠大於同一伺服器上兩種協定的差異。因此,本頁不會依協定名稱排列固定的速度快慢。
在 iPhone 與 iPad 上觀察耗電量,也要一併考量使用方式。持續大量傳輸會同時使用無線網路、加解密與應用程式的處理能力;零星請求則容易受到連線建立次數、背景維持連線和網路喚醒影響。頻繁自動測速、過短的更新間隔與反覆連線失敗,都可能掩蓋協定本身的差異。比較時應固定裝置、網路、伺服器與目標,並將螢幕亮度和其他背景工作納入考量,不能只因一次電量下降就歸因於某個協定。
| 既有條件 | 優先核對 | 不能直接推論 |
|---|---|---|
| 已有訂閱 | 匯入後的類型、驗證與傳輸欄位 | 名稱相似就能互換 |
| 已有伺服器設定 | 伺服器端實際啟用的協定與連接埠 | 某個連接埠必定使用 TLS |
| 網路有明顯封包遺失 | 傳輸相容性、重傳與連線穩定性 | UDP 一定比較快 |
| 需要存取已授權的內部網路 | 位址範圍、路由、DNS 與回程路徑 | 隧道已建立就代表資源可存取 |
建立可重複的比較方法
先保存一份已知可用的設定作為基準,再逐項調整。以同一目標分別觀察首次開啟、重複存取、持續傳輸和休眠後恢復,不要每輪測試都同時更換 DNS、協定與伺服器。Connectivity Test 可用來觀察連線狀態,但測試結果不代表所有服務都能正常使用。瀏覽網頁、播放影片和即時語音對傳輸的要求各不相同,應測試實際需要使用的服務,而非只比較單一數值。
如果既有資料只提供一種協定,正確做法是完整匯入這組資料並進行驗證,而不是只看名稱就改選另一種類型。若確實需要切換,應先取得伺服器端為新協定準備的完整參數。訂閱解析後清單空白,與協定選擇是不同層面的問題,可先查看匯入訂閱後清單空白的自我檢查說明。本頁後續章節假設至少已有一筆可編輯的伺服器記錄;介面是否顯示相關欄位,請以目前 App 中的實際選項為準。
02 / SHADOWSOCKS
Shadowsocks:位址、密碼與加密方法必須配套
設計重點:較直接的代理封裝
Shadowsocks 的設計著重於代理連線的資料轉送與加密,常見設定包含伺服器位址、連接埠、密碼和加密方法。它不像網頁應用程式那樣必定以 HTTP 請求作為入口,也不能因為伺服器端使用常見的網頁連接埠,就認定需要 TLS。對已有完整 Shadowsocks 參數的使用者來說,其設定關係較為直接:先連線至指定伺服器,再依約定的密碼與加密方法處理代理資料。伺服器端和用戶端必須使用相容的協定實作與參數。
不同加密方法不能任意互換,當成效能選項。密碼和方法會共同參與金鑰相關處理,某些方法也對憑證格式有特定要求。保留既有密碼,只把方法改成另一個看似較新的名稱,通常無法建立有效連線。匯入連結時應保留原始方法;手動輸入時請逐字核對,特別留意連字號、數字與方法名稱是否完整。如果伺服器提供的方法未出現在目前類型的選項清單中,應先確認相容性,而非選擇名稱相近的項目取代。
參數含義與輸入注意事項
Address 或伺服器位址可以是網域名稱,也可以是 IP 位址。網域名稱可透過 DNS 解析位址,也便於服務遷移,但會增加 DNS 這項前置依賴;直接填入 IP 則無法自動取得網域名稱後續變更的位址。Port 指定伺服器端的監聽連接埠,不能根據網頁能否開啟來判斷是否正確。Password 是伺服器驗證與加密設定的一部分,不是 App Store 帳號密碼,也不是裝置解鎖密碼。輸入時請避免前後空格、換行,以及輸入法自動替換字元。
如果既有資料包含額外的混淆或外掛相關參數,應將這些參數作為獨立條件核對。它們可能影響連線外層的格式,但不代表所有 Shadowsocks 記錄都需要啟用相同選項。漏掉必要的外層參數會導致交握失敗;為原本不需要的連線額外啟用某個選項,也可能讓伺服器無法辨識。最穩妥的做法是先確認是否確實存在這一層,再逐項比對既有資料與 App 中可用的欄位,未指定的選項則維持不變。
| 參數 | 用途 | 常見核對項目 |
|---|---|---|
| Address | 指定伺服器位置 | 網域解析結果與記錄完整性 |
| Port | 指定服務入口 | 與該協定的監聽連接埠一致 |
| Password | 參與驗證與加密處理 | 大小寫、空格與編碼是否有變 |
| Method | 指定加密方法 | 兩端的方法名稱與憑證要求一致 |
TCP 成功不代表 UDP 已可使用
網頁可以開啟,通常只能表示相關請求所經過的路徑有效。即時語音、部分遊戲或其他以 UDP 為基礎的服務,還需要用戶端設定、伺服器能力與網路路徑共同支援 UDP 轉送。即使 TCP 和 UDP 使用相同的數字連接埠,也屬於不同的傳輸入口,網路端的處理方式可能不同。如果一般網頁正常、即時服務卻無法使用,應先確認該服務實際採用的傳輸方式,再檢查 UDP 支援與相關規則,不要立即更換密碼或加密方法。
在行動裝置上,Shadowsocks 的實際耗電表現取決於加密方法、硬體處理能力、流量大小與重新連線頻率。持續傳輸和密集的小型請求是兩種不同負載,不宜混為一談。如果剛匯入設定就明顯發熱,請先暫停持續測速與反覆連線,確認是否有連線失敗迴圈,再以單一目標進行有限次數的驗證。耗電異常只是現象,須結合連線記錄和網路狀態判斷原因,不能直接證明加密方法選錯。
依故障發生的位置排查
完全無法建立連線時,先核對位址解析、連接埠與伺服器狀態;連線建立後立刻中斷,則檢查密碼、加密方法和外層參數是否配套;只有部分網站無法使用,則進一步檢查 DNS、規則與目標是否可連線。保留一份未修改的原始記錄,方便還原。如果記錄來自訂閱,更新可能會覆寫手動修改;建議測試前先確認目前編輯的是訂閱管理的記錄,還是獨立記錄,以免誤把更新覆寫當成 App 未儲存設定。
03 / VMESS · VLESS
VMess 與 VLESS:身分欄位相似,不代表協定相同
設計取捨與類型界線
VMess 將身分驗證與資料處理整合為專用的代理協定,設定通常包含 UUID,以及與安全性、傳輸相關的參數。VLESS 採用較精簡的協定層設計,本身不提供內容加密,理解完整連線時必須搭配安全傳輸方案。兩者都可能使用 UUID,也都可能搭配不同的外層傳輸,因此只看連結中的身分欄位無法判斷協定類型。應以原始訂閱或伺服器端明確標示為準,不能把同一個 UUID 當成跨協定通用的連線憑證。
VLESS 的設計較精簡,不代表完整連線一定耗用較少資源,也不代表可以省略安全層。如果連線再加上 TLS、WebSocket 或其他傳輸方式,實際資料開銷與交握流程取決於整套組合。VMess 的表現同樣受伺服器設定與網路條件影響,而非只由協定名稱決定。選擇類型時,應同時記錄協定、傳輸與安全層三個面向,再比較相容性和使用情境;只抽出其中一個面向比較,容易得出與實際運作不符的結論。
UUID、傳輸類型與路徑
UUID 用於識別伺服器端允許的使用者身分。複製時須完整保留所有字元與分隔格式,不能用備註名稱取代。備註只供使用者辨識記錄,不參與協定驗證。VMess 的部分參數也與協定實作和舊有設定格式有關,不應只根據網路上的單一截圖批次修改。如果協定驗證流程會檢查時間,裝置時間明顯有誤可能導致連線失敗;應先確認系統日期與時間正常,再判斷伺服器是否拒絕該身分。
傳輸欄位決定協定資料如何承載。使用 WebSocket 時,Path 是交握請求路徑,Host 則與 HTTP 層的主機資訊有關;它們不是伺服器備註,也不能把完整網址任意拆開填入不同欄位。路徑開頭的斜線、大小寫與查詢字串是否須保留,應依伺服器資料核對。選用其他傳輸方式時,欄位組合可能不同,不應將 WebSocket 參數照搬到其他傳輸類型。介面未顯示某欄位,也不代表可以用名稱相近的欄位取代。
| 層次 | 常見內容 | 核對原則 |
|---|---|---|
| 協定身分 | VMess / VLESS、UUID | 類型與身分都必須正確 |
| 外層傳輸 | TCP、WebSocket 等 | 依伺服器實際組合選擇 |
| HTTP 層資訊 | Host、Path | 不可與連線位址混為一談 |
| 安全層資訊 | TLS、Server Name、憑證驗證 | 分別核對名稱與信任關係 |
TLS 名稱與其他擴充參數
連線位址用於找到伺服器;TLS 的 Server Name 提供交握時使用的名稱資訊,並與憑證名稱驗證相關。兩者可能相同,也可能由伺服器資料明確指定為不同值。Host 則屬於另一層,不能只因內容看起來都是網域名稱就互相取代。如果資料還包含其他安全性擴充或特殊交握參數,應確認目前的 App 是否支援相應組合。欄位可以輸入,只表示有可供填寫的位置,並不足以證明任意組合都能與伺服器互通。
既有設定中的 Flow 等選用參數,屬於特定協定組合的設定,不是通用的加速開關。只有伺服器端明確要求,且用戶端提供相容選項時才應啟用。不要反覆嘗試各種安全性參數來取代核對原始資料,否則會同時改變交握條件,失去排查基準。對於從訂閱匯入的記錄,先保留原始結果,再建立獨立的測試副本,更容易判斷是匯入資料不完整,還是後續編輯造成連線變化。
行動網路中的比較方式
在 iPhone 或 iPad 上評估這兩類連線時,應區分首次交握與連線建立後的資料傳輸。多層交握會讓短時間請求更容易受到往返延遲影響;長時間傳輸則可能主要受頻寬與網路壅塞影響。切換網路後,舊連線失效並由 App 重新建立連線,也會造成短暫等待。如果只是某種傳輸方式恢復較慢,應記錄發生在解除鎖定後恢復、切換無線網路,還是一般連續使用期間,而不是直接歸因於 VMess 或 VLESS 的整體差異。
發生連線失敗時,依序排除位址與連接埠、協定與 UUID、外層傳輸、安全層及目標存取問題。如果連線記錄顯示請求根本沒有選到該伺服器,應先檢查 Global Routing 與目前的設定。更多常見狀況請參閱疑難排解,避免尚未確認路由就反覆修改身分欄位。
04 / TROJAN · TLS
Trojan 與 TLS:驗證正確,也要建立正確的信任關係
以 TLS 承載代理連線的設計
Trojan 會在 TLS 保護的連線中傳送代理請求,並以密碼進行協定層驗證。理解其設定時,須同時考量兩個獨立條件:用戶端是否與預期的伺服器建立可信任的 TLS 連線,以及伺服器是否接受協定層憑證。密碼正確無法彌補憑證名稱不符;憑證驗證通過也不能證明密碼正確。與只檢查位址和連接埠相比,核對 Trojan 參數時更要明確區分連線目標、TLS 名稱、憑證鏈與使用者驗證。
TLS 的用途是保護傳輸內容,並在憑證正確驗證的情況下協助確認伺服器身分。它不是速度選項,也不應只為了讓連線顯示成功就任意修改。交握需要網路往返,實際開銷與連線重用、網路延遲和實作方式有關;持續傳輸時的表現也與首次交握不同。因此,首次開啟稍慢,不足以證明 Trojan 的持續傳輸量有問題;一次成功存取,也不能證明所有安全性參數都正確。
Address、Server Name 與憑證驗證
Address 是用戶端實際連線的位址。Server Name 通常與 TLS 交握中的 SNI 及憑證名稱驗證有關,應依伺服器資料填寫。憑證必須涵蓋用於驗證的名稱,並具有有效期限與可接受的信任鏈。如果 Address 直接填入伺服器 IP,但伺服器憑證是核發給網域名稱,通常仍需要正確的名稱資訊。不能因為 IP 可以連線就移除網域名稱,也不能以任意可存取網站的網域名稱取代。
憑證驗證失敗可能有多種原因:裝置時間不正確、憑證已過期、伺服器未提供完整的中繼憑證、名稱不符,或目前網路將連線導向其他入口。排查時先查看具體錯誤,再核對資料與伺服器設定。如果 App 提供略過憑證驗證的選項,這會改變信任邊界,而不是修復憑證的工具。日常使用應優先修正名稱、時間或憑證鏈問題,不應預設長期關閉驗證。
密碼、ALPN 與外層傳輸
Trojan 的 Password 是協定驗證憑證,大小寫與特殊字元都須完整保留。訂閱匯入可能涉及連結編碼;若手動從連結截取一段作為密碼,容易把編碼後的內容誤當成實際密碼。請優先使用 App 支援的完整匯入方式,或依既有資料中的獨立欄位輸入。不要在公開截圖中顯示完整密碼,也不要將驗證失敗時的原始分享連結直接貼到公開回報區;排查通常只需要欄位結構,不需要公開憑證。
ALPN 用於 TLS 中的應用層協定協商,是否需要指定以及可接受哪些值,取決於伺服器端與外層傳輸的安排。它不是項目越多越好的清單,也不能靠加入常見名稱來保證相容。如果記錄包含 WebSocket 等額外傳輸,也須核對相應路徑與主機資訊。此時 TLS 成功只代表安全層已建立,後續傳輸交握或 Trojan 驗證仍可能失敗,應依失敗先後順序判斷問題所在。
如何區分憑證問題與服務問題
如果所有目標都在連線初期同時失敗,並出現憑證或交握錯誤,應優先檢查 TLS 條件;如果連線已建立,但特定網站無法使用,則檢查目標 DNS、路由與遠端可達性。如果只有即時服務失敗,進一步確認 UDP 轉送支援與網路路徑。將這些狀況分開處理,可避免目標服務暫時無法使用時去更換憑證設定,或在網域解析錯誤時重設密碼。每次只調整一個條件,並記錄錯誤前後的變化。
觀察耗電量時也應著眼於實際使用狀況。頻繁建立 TLS 連線、失敗後連續重試,以及背景小流量讓無線網路持續運作,都可能增加耗電;這與大量傳輸時的加密處理並非同一種負擔。測試時關閉不必要的持續探測,保留一筆明確可用的基準記錄,再觀察常用服務。關於 App 取得方式、官方圖示與開發者資訊的核對,請參閱正版核驗說明,不要用連線表現判斷 App 來源。
05 / HTTP · SOCKS5
HTTP 與 SOCKS5:先辨識代理入口,再確認保護範圍
兩種通用代理介面的設計出發點
HTTP 代理是為轉送 HTTP 請求而設計,處理網頁請求時可使用代理格式的請求目標;對於 HTTPS 等情境,通常會透過 CONNECT 請求建立通往目標的通道。SOCKS5 則提供較通用的代理連線協商,用於指定目標位址、連接埠與連線請求。兩者都是代理入口的協定規範,不代表入口天然具有相同的加密保護、驗證機制或 UDP 能力。既有伺服器若標示為 HTTP,就不能只因位址相同而改選 SOCKS5。
這裡尤其要區分目標網站使用 HTTPS,與用戶端至代理入口使用 TLS。HTTPS 通常會保護到目標網站的內容,但若用戶端與 HTTP 代理之間未使用 TLS,代理協商資訊及部分驗證資訊的保護範圍,就與加密的代理入口不同。目標網站使用安全連線,不代表外層代理鏈路的每個部分都具備相同的安全特性。判斷保護範圍時,應逐段檢視連線,而不是只看瀏覽器網址列或伺服器備註中的某個詞。
位址、連接埠與驗證模式
HTTP 與 SOCKS5 的基本資料通常包含伺服器位址、連接埠,以及可能需要的 Username 和 Password。是否需要驗證由伺服器端決定,不能假設留白就能連線,也不能把其他協定的 UUID 填入使用者名稱,期待它自動相容。驗證失敗與網路無法連線可能呈現相似狀況,應結合連線錯誤和既有資料判斷。手動輸入時也要留意某些帳號含有網域或其他前綴,是否保留應以伺服器提供的完整格式為準。
如果代理入口要求 TLS,應選擇對應的安全性設定,並核對憑證名稱。連接埠數字本身無法證明入口使用明文或加密,也不能證明它接受 CONNECT。部分伺服器會限制可存取的目標、目標連接埠或驗證方式;即使用戶端成功連上入口,後續請求仍可能遭拒。遇到特定目標連接埠無法使用時,應先確認授權範圍與伺服器政策,而不是反覆修改本機 DNS,或誤以為所有 HTTP 代理都只能存取網頁。
| 檢查項目 | HTTP | SOCKS5 |
|---|---|---|
| 常見運作方式 | 請求轉送或 CONNECT | 協商後建立代理連線 |
| 驗證 | 取決於入口支援的方式 | 取決於協商與伺服器設定 |
| 入口加密 | 須另行確認是否使用 TLS | 協定本身不提供內容加密 |
| UDP | 一般 HTTP 代理不能直接視為支援 UDP 轉送 | 須由端到端支援 UDP ASSOCIATE |
DNS 解析與 UDP 支援條件
SOCKS5 的目標位址可以網域名稱表示,但實際請求是否將網域名稱交由代理端解析,仍取決於用戶端的處理方式、DNS 策略,以及目標資訊是否已轉換成 IP。不能只因選用 SOCKS5,就認定所有 DNS 請求都在遠端完成。HTTP 代理也可能在請求中取得目標主機名稱,但 App 產生的其他 DNS 查詢則須另行檢查。排查網域名稱問題時,應觀察實際連線目標與 DNS 結果,而不只是檢查伺服器類型。
SOCKS5 規範包含 UDP ASSOCIATE,不代表每個伺服器、每種接入網路和每種用戶端組合都能完成 UDP 轉送。相關協商通常還涉及控制連線與轉送位址,網路端可能會限制其中一部分。如果 TCP 服務可用、UDP 服務卻失敗,應分別確認伺服器端是否啟用、回傳位址是否可達,以及規則是否選到同一筆記錄。不能將單一網頁測試的結果直接套用到語音、遊戲或其他 UDP 服務。
適用情境與行動裝置使用評估
這兩類入口常見於既有組織代理、已授權的網路存取,或明確提供通用代理協定的環境。使用者應依管理單位提供的類型與安全要求設定,不要因為參數較少就認為更適合長期使用。對 iPhone 和 iPad 而言,連線穩定性仍會受到網路切換、驗證有效期限與伺服器限制影響。代理持續顯示驗證失敗時,應先檢查憑證狀態與授權範圍,不要以頻繁重新連線取代確認。
如果服務需要持續低延遲或 UDP,應先確認入口確實具備相應能力;如果只需存取特定授權資源,則更應重視目標路由與驗證範圍。選擇協定應配合既有連線條件,無法創造伺服器端未提供的能力。儲存記錄時,可在備註中標明用途與網路條件,但不要填入密碼;如此切換不同入口時,既能辨識使用情境,也不會在清單截圖中洩露驗證資訊。
06 / WIREGUARD
WireGuard:金鑰、隧道位址與允許位址共同決定可達性
從代理請求轉向 IP 隧道
WireGuard 採用加密 IP 隧道,與前面以單一代理請求描述目標的協定不同。理解其設定時,須留意隧道介面位址、對端身分、UDP 端點與允許位址之間的關係。它以公私鑰識別通訊對端,不是只要向伺服器傳送使用者名稱與密碼就能完成驗證。既有設定通常由伺服器管理者提供,用戶端須依照完整關係輸入,並非取得 Endpoint 就能建立可用的服務路徑。
WireGuard 的設計著重於精簡的協定與明確的金鑰關係,但這不代表較不容易設定錯誤,也不代表在所有行動網路上速度最快。底層通常使用 UDP;如果目前網路無法正常傳送相關流量,交握與資料傳輸都會受到影響。即使對端能夠回應,遠端網路仍須正確設定轉送、存取控制與回程路徑。隧道已建立與目標資源可達是兩個不同層面,測試時應分別確認。
Private Key、Public Key 與選用的共享金鑰
Private Key 用於識別本端身分,必須保密;本端對應的 Public Key 則提供給對端設定。用戶端填入的 Peer Public Key 應是遠端的公鑰,不能重複填入自己的公鑰。常見錯誤包括填反兩端欄位,或以新產生的私鑰取代舊值,卻未同步更新伺服器端登記的使用者公鑰。金鑰格式看起來正確,只能表示字元結構可能有效,不能證明兩端已正確配對。
如果設定包含 Preshared Key,它是公私鑰關係以外的額外共享資料,兩端必須一致。沒有這個欄位的設定,不應自行加入隨機值;原本有這個欄位的設定,也不能只在用戶端刪除。排查或截圖時,應遮蔽 Private Key 與 Preshared Key。公鑰雖不是私密驗證資料,也可能連結到裝置身分,不宜連同端點與內部網路拓樸一起公開。需要協助時,可提供欄位是否存在、錯誤類型與已遮蔽敏感資訊的設定結構。
Address、Allowed IPs 與 DNS 各自的作用
Address 通常是分配給本端隧道介面的位址,不是遠端伺服器的公網位址,也不是任意填入的本機無線網路位址。Endpoint 才是遠端可連線的主機與連接埠。Allowed IPs 與對端可處理的位址範圍有關,也會參與 WireGuard 的位址選擇與驗證邏輯;它與 Shadowrocket 上層規則並非完全相同的概念。只有兩層設定都涵蓋目標,相關請求才可能依預期通過隧道。
DNS 參數負責安排名稱解析,不會自動補上缺少的位址路由。存取內部網路的網域名稱時,DNS 必須能回傳正確位址,同時目標位址須有可用路徑,遠端也須允許存取並能傳回回應。如果 IP 可以存取、網域名稱卻不行,優先檢查 DNS;如果網域名稱已解析出預期位址但仍無法連線,則檢查 Allowed IPs、上層規則與遠端回程。切勿反覆更換 DNS,試圖修復實際上未經隧道接管的目標網段。
| 欄位 | 對應對象 | 核對重點 |
|---|---|---|
| Private Key | 本端身分 | 須與遠端登記的本端公鑰相符 |
| Peer Public Key | 遠端身分 | 不可誤填成本端公鑰 |
| Endpoint | 遠端網路入口 | 主機、連接埠與 UDP 可達性 |
| Allowed IPs | 對端位址範圍 | 與目標和上層路由一併檢查 |
MTU、保活與行動網路恢復
MTU 與隧道封裝後的封包大小有關。數值過大可能導致部分網路路徑上的大型封包傳輸異常,表現為小型請求正常、較大的內容卻停頓;數值過小則會增加封包數量與額外負擔。應先依照既有設定建議使用,只有在有證據支持時才逐步調整。Persistent Keepalive 用於在必要時維持網路映射,並非間隔越短就越穩定;過於頻繁會增加背景通訊與無線網路喚醒,是否設定應視網路設備行為與遠端要求而定。
切換行動網路後,端點可達性、映射狀態與網域名稱解析都可能改變。觀察時應分別記錄是否重新交握、是否只有部分網段無法使用,以及問題是否在鎖定螢幕後才出現。如果目標是已授權的內部網路,先測試單一已知資源,再逐步擴大範圍,避免用無關的公網網站判斷隧道是否完整運作。iPad 的基本檢查方式相同;裝置購買與復原事項可另參閱iPad 使用說明。
07 / HYSTERIA2
Hysteria2:基於 QUIC 的傳輸須先確認 UDP 條件
設計目標與網路前提
Hysteria2 以 QUIC 為基礎安排代理傳輸,著重於複雜網路環境中的資料傳送與壅塞處理。QUIC 運作於 UDP 之上,並結合 TLS 完成安全交握。它可以在單一連線中安排多個資料流,各資料流的處理方式與單一 TCP 位元組串流不同,但多個資料流共用連線,仍會受到整體頻寬、壅塞情況與伺服器資源限制。多流特性不代表某個請求完全不受其他流量影響,也不能只憑協定名稱推測實際傳輸量。
使用前最重要的條件是 UDP 路徑可用。有些網路可以正常瀏覽網頁,卻限制 UDP 入口或採取不同的處理方式;此時,基於 TCP 的記錄正常,並不能證明 Hysteria2 入口也應該正常。發生故障時,先核對網域解析、連接埠與 UDP 可達性,再檢查驗證和 TLS。如果底層路徑不通,調整頻寬參數或新增保活通常無法補足缺少的網路條件。
驗證、TLS 與混淆參數
既有的 Hysteria2 資料通常包含伺服器位址、連接埠、驗證資訊與 TLS 相關設定。驗證欄位須依伺服器要求完整保留,不能直接拿其他協定的密碼嘗試。TLS 名稱與憑證驗證原則和前文相同:連線目標、Server Name 與憑證涵蓋的名稱必須正確對應。即使底層使用 UDP,憑證時間、名稱與信任鏈仍然重要,不能將所有交握失敗都歸因於 UDP 受到限制。
如果伺服器啟用了混淆,用戶端也須設定對應類型與密碼等參數。混淆、驗證與 TLS 屬於不同層,各自負責不同功能,不能因其中一項設定正確就忽略其他兩項。未啟用混淆的入口,也不應自行新增不明參數。匯入後若可用記錄與手動重建的記錄結果不同,應優先逐項比較欄位,特別留意簡略資料中容易省略的選用設定。
頻寬欄位不是測速結果
有些設定包含上傳與下載頻寬欄位,這些數值可能會影響特定壅塞控制模式的運作。欄位中的數值不是用戶端即時測得的速度,也不代表伺服器承諾持續提供相應傳輸量。伺服器政策與協商方式可能影響這些數值是否生效,不能藉由填入很大的數值增加實際頻寬。輸入時也要確認 App 欄位使用的單位,不要混淆每秒位元組與每秒位元,也不要把自己的下載能力誤填到上傳欄位。
如果設定值明顯高於實際接入能力,在相關模式下可能造成排隊、封包遺失與連線不穩;設定過低則可能限制可用的傳輸能力。應依實際網路條件與伺服器說明設定,並保留原始設定作為基準。測試時同時觀察下載是否持續、互動請求是否延遲,以及其他 App 是否受到排隊影響。短時間內曾達到較高速度,不足以證明參數設定合理,更不能取代較長時間的穩定性觀察。
在 iPhone 與 iPad 上觀察資源使用情況
QUIC 的協定處理、加密與資料收發都會占用裝置資源。實際耗電表現會受到實作方式、流量、封包遺失與無線訊號強度影響,沒有適用於所有裝置的固定結論。大量傳輸測試時,App 處理和無線傳輸會同時運作;裝置溫度升高,不能單獨證明設定錯誤。更有參考價值的是相同服務量下的持續表現、背景是否反覆重新連線,以及弱訊號或解除鎖定後恢復時是否明顯異常。
如果只有特定無線網路無法連線,可改用另一個已獲授權的接入網路,確認路徑是否不同;如果所有網路都失敗,再檢查原始驗證資料、TLS 與伺服器狀態。如果可以建立連線,但大量傳輸時停頓,應檢查路徑上的封包遺失、封包大小、頻寬設定與遠端資源,而非立即改用另一種協定。只有伺服器端實際提供新協定,切換才有意義。記錄故障發生階段與簡短錯誤資訊,比只寫「無法使用」更有助於後續判斷。
完成測試後,停止反覆測速與不必要的持續傳輸,還原日常設定後再觀察耗電量。如果問題只在更新訂閱後出現,應先比較記錄中的參數變化,區分伺服器端調整與本機網路變化。設定來自既有訂閱時,手動修改也可能在後續更新時被覆寫;因此應確認測試副本與訂閱記錄的管理方式,避免更新後同一問題再次發生。
08 / ROUTING · VALIDATION
規則、DNS 與驗證:分別確認協定可用性與請求路徑
Global Routing 的三種模式
選對協定只解決與伺服器通訊的條件;實際請求是否使用該伺服器,還取決於 Global Routing。設定檔模式對應 Config,依目前設定檔中的規則決定策略;代理模式對應 Proxy,主要將請求交由所選代理處理;直連模式對應 Direct,主要透過直接路徑存取。不同模式用來控制請求的路徑,無法修復協定驗證錯誤。在 Direct 模式下某個網站正常,也不能證明代理伺服器可用,因為這次存取可能根本沒有經過代理。
| 模式 | 介面用詞 | 驗證重點 |
|---|---|---|
| 設定 | Config | 目前檔案、規則順序與命中策略 |
| 代理 | Proxy | 所選記錄與實際請求路徑 |
| 直連 | Direct | 直接網路路徑與目標可達性 |
規則順序與預設策略
規則通常依序比對,前面的具體條件可能讓後續規則不再參與該請求的選擇。DOMAIN 比對完整網域名稱,DOMAIN-SUFFIX 用於網域後綴,DOMAIN-KEYWORD 依關鍵字比對;IP-CIDR 與 IP-CIDR6 用於位址範圍,GEOIP 依 IP 歸屬資料比對。FINAL 用於前面的規則都未命中時作為預設策略。以下片段僅展示 Shadowrocket 設定中的規則結構,不含連線資料,也不是適用於所有網路的完整設定。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
GEOIP,CN,DIRECT
FINAL,PROXY
範例中的 PROXY 與 DIRECT 是策略關鍵字,不等同於某筆記錄的備註名稱。GEOIP 判斷依據是 IP 歸屬資料,不代表頁面使用的文字、營運主體或實際內容所在地;網域名稱可能解析出多個位址,結果也可能改變。使用 IP 類規則前,應先了解解析發生的位置與時機。如果規則看似正確卻未生效,應檢查實際請求是否帶有可供比對的網域名稱、最終目標位址為何,以及是否已命中前面的規則。
REJECT 是拒絕連線的策略,不是用來語意辨識頁面內容。同一網域名稱可能同時提供多種功能,拒絕該網域可能影響需要保留的內容;App 自身的連線方式也會影響可觀察到的比對資訊。相關限制請參閱REJECT 規則原理與適用範圍。USER-AGENT 等依賴應用層資訊的規則,也應先確認目前連線是否提供可用的比對資訊,不能假設所有加密請求都能直接讀取這些欄位。
DNS、IPv6 與目標位址
DNS 負責將網域名稱轉換為位址,代理協定負責後續資料傳輸,兩者彼此相關,但不是同一項設定。網域解析失敗時,可能根本無法連線至目標;解析成功但取得不可達位址時,則可能表現為連線逾時。如果目標同時有 IPv4 和 IPv6,目前網路對兩種位址的可達性可能不同。檢查時應記錄實際使用的位址類型,而不是只看網域解析是否回傳任何結果。整體停用某項功能前,先確認故障確實與它有關。
網域規則和 IP 規則也可能得到不同結果,因為請求比對時可用的資訊不一定相同。針對同一目標,可先確認 DNS 回傳結果,再核對連線記錄中的目標位址與策略;不要同時更換 DNS、規則檔案與協定。存取已授權的內部網路時,外部 DNS 不一定知道內部名稱,內部 DNS 也不一定能透過目前路徑存取。這類問題應依序驗證名稱解析、DNS 伺服器路徑、目標路由與回程路徑。
完整的排查流程
第一步確認原始記錄來自自己的有效資料,並保留未修改的副本;第二步核對類型、位址、連接埠與驗證資料;第三步確認傳輸、TLS 與選用參數;第四步檢查 Global Routing、目前的 Config 與請求命中情況;第五步以單一目標測試實際服務。每一步都要先確認可觀察的結果,再進入下一步。Connectivity Test 可協助判斷,但不能取代目標服務驗證;Data 中的流量變化也只能作為通訊活動的線索。
若要回報問題,提供裝置平台、接入網路類型、協定與傳輸組合、故障階段及已遮蔽敏感資訊的錯誤內容即可。不要公開完整訂閱連結、密碼、私鑰或含有身分參數的 QR Code。重新安裝前先保存自己的設定與必要資料,避免在沒有記錄的情況下失去排查基準。購買復原與安裝事項請參閱已購項目復原說明;首次連線步驟請返回使用說明,常見狀況則可依疑難排解分類繼續查閱。