Shadowrocket
協定類型與參數參考
先核對伺服器支援的協定,再了解驗證、傳輸與規則各自的作用。協定名稱不代表速度排名,也不能取代實際連線測試。
Shadowrocket 支援 iPhone、iPad、Mac、Windows、Android 和 Linux。iPhone / iPad 版可從 App Store 以 $2.99 一次性購買;Mac(Apple 晶片與 Intel)、Windows、Android、Linux 版免費。系統需求以 App Store 頁面標示為準。取得方式與安裝放行說明請見取得應用程式;電腦與 Android 安裝檔由本站 /dl/ 提供。
本頁以使用者已有自己的訂閱或伺服器資訊為前提,重點說明如何在 Add Server 選擇正確類型、理解欄位並找出協定層問題。首次連線請先依照快速入門流程完成匯入、選擇與驗證,再回到本頁查閱各協定;本頁不重複說明操作步驟。
協定選擇:先拆解連線層次
依據現有資訊確認可選範圍
選擇協定時,第一步不是比較名稱,而是確認伺服器實際開放哪些服務。現有訂閱通常包含類型、位址、連接埠與驗證資訊;匯入後應先保留原始參數,再逐一核對。手動新增時,Add Server 的類型必須與伺服器端一致;將同一個位址從 Shadowsocks 改成 Trojan,不會讓伺服器自動改用另一種協定。若只有一份完整設定,先驗證它,不要為了嘗試而改寫驗證欄位。
一次連線至少涉及四個層面:裝置到伺服器的網路可達性、協定身分驗證、承載資料的傳輸方式,以及用戶端決定哪些請求經由該連線的規則。位址或連接埠錯誤屬於可達性問題;密碼或 UUID 錯誤通常是驗證問題;WebSocket 路徑不符屬於傳輸問題;網站未套用預期策略則可能是規則問題。這些層面可能各自失敗,因此「開關已開啟」只表示連線服務已啟動,不能證明所有請求都成功送達。
代理協定、傳輸與加密並非同一個欄位
Shadowsocks、VMess、VLESS、Trojan 描述不同的代理協定設計;TCP、UDP、WebSocket 涉及資料承載方式;TLS 則負責連線中的身分驗證與加密保護。有些類型會整合這些功能,有些則需另外提供外層設定。訂閱中出現多個相關欄位,不一定是重複設定;核對時應保留彼此的組合關係,不要因為已填入密碼,就認為可以任意刪除 TLS 的 Server Name。
速度也要分開觀察。首次開啟網頁會經過網域解析、建立連線、完成交握與下載內容;單次延遲測試通常無法涵蓋整個過程。大型檔案下載看持續傳輸量,互動式應用更在意往返延遲與抖動,網路切換則考驗重新連線的表現。協定只會影響其中一部分,伺服器負載、跨網路路徑與無線訊號仍可能是主要限制。因此,本手冊不提供脫離網路條件的固定速度或耗電排名。
| 層次 | 核對項目 | 常見情況 |
|---|---|---|
| 網路入口 | 位址、連接埠、TCP / UDP 可達性 | 連線逾時,尚未進入驗證階段 |
| 協定驗證 | 密碼、UUID、金鑰與方法 | 伺服器可連線,但工作階段建立失敗 |
| 傳輸保護 | TLS、Server Name、路徑與 Host | 憑證錯誤或傳輸交握失敗 |
| 請求分流 | Config、規則順序與策略 | 只有部分請求未依預期處理 |
完整釐清 iOS 耗電來源
iOS 耗電不只來自密碼運算。無線電頻繁喚醒、連線反覆失敗並重試、背景 App 持續上傳,都會延長裝置的活躍時間。理論上運算量較少的協定,若需要不斷重新交握,也可能比維持穩定連線更耗電。比較時應記錄螢幕是否亮著、使用 Wi-Fi 或行動網路、測試時間,以及是否同時播放影片或下載,避免把整台裝置的耗電都歸因於用戶端。
規則模式也會影響測試範圍。Global Routing 的 Config、Proxy、Direct 分別代表不同連線模式:Config 依目前設定分流,Proxy 將適用流量交由所選代理策略處理,Direct 則直接連線。排錯時可暫時切換模式以排除規則影響,但每次只改一項,測試結束後恢復原狀。若同時切換模式與更換協定,即使結果改善,也無法確認是哪個步驟發揮作用。
實際選擇順序應是:先符合伺服器端的相容性,再符合使用需求,最後比較裝置上的表現。確認是否需要 UDP、是否涉及內網位址,以及是否常在不同網路間切換,再用現有可用設定進行相同條件的測試。想快速辨認各種類型,可搭配閱讀協定概覽文章;首次匯入不順利時,請回到快速入門確認資訊是否完整,而不是直接重寫整份設定。
Shadowsocks:對稱式加密與精簡轉送
設計背景與適用範圍
Shadowsocks 著重以相對精簡的協定完成加密代理轉送:用戶端向伺服器提供目標資訊,再由伺服器建立到目標的連線。它主要依靠雙方約定的密碼與加密方法,不以網站憑證作為基本驗證條件。了解這點有助於分辨欄位:一般 Shadowsocks 設定中的 Password 與 Method 缺一不可,不能直接套用另一種協定的密碼,也不能只因連接埠相同,就認定兩種服務可以互換。
不同加密方法的封包格式與金鑰要求可能不同。較新的方法與較早的方法不只是「強弱」之別,也可能使用不同的金鑰編碼、長度及實作相容條件。伺服器端提供哪種方法,用戶端就應選擇相同方法;若清單沒有對應選項,應確認資訊是否適用於目前的用戶端,而不是找名稱相近的選項代替。匯入後仍要檢查方法名稱,尤其留意訂閱轉換過程是否遺漏該欄位。
逐一核對位址、連接埠、密碼與方法
Server 填寫伺服器網域或 IP 位址,Port 填寫實際監聽的連接埠。位址通常不包含網頁路徑,連接埠也不應填入位址欄位。Password 必須完整保留提供的內容,複製時留意空格、換行與全形字元。Method 表示特定加密方式,不是可任意選擇的偏好。若位址可以解析但連線持續失敗,應同時核對連接埠與方法;網域能開啟網頁,不代表代理連接埠正常。
有些設定還附帶額外傳輸參數,但並非所有 Shadowsocks 服務都需要這些參數。只有在現有資訊明確提供時才啟用,並確保名稱與參數相符。不要因為其他設定中有某個選項,就照樣加到目前的連線;額外封裝會改變伺服器端預期的資料格式。若匯入項目與手動填寫結果不同,可以逐欄比較,但應先保留匯入項目作為參照,避免修正時遺失原始資訊。
| 欄位 | 意義 | 檢查方式 |
|---|---|---|
| Server / Port | 服務入口 | 核對網域與監聽連接埠,不附加網頁路徑 |
| Password | 驗證與金鑰衍生相關資訊 | 完整複製,檢查空格與編碼 |
| Method | 加密方法與封包格式約定 | 與伺服器端完全一致 |
| UDP | 資料封包轉送能力 | 同時確認伺服器端、網路與目標需求 |
TCP 成功不代表 UDP 可用
瀏覽網頁大多可透過 TCP 完成,但即時通訊、部分網域解析與使用 QUIC 的 App 可能會用到 UDP。Shadowsocks 的 TCP 與 UDP 轉送須分別符合條件:伺服器端支援相應功能、網路允許相關資料通過,而且用戶端設定未停用該功能。網頁正常但即時服務失敗時,應檢查這個分支。不要只憑一次網頁載入,就認定目前連線適用於所有 App;也不要只因一個 App 失敗,就認定整條連線失效。
在 iPhone 和 iPad 上,精簡轉送通常代表需要檢查的封裝層較少,但不表示一定更快或更省電。裝置晶片處理演算法的效率、長連線數量與網路重傳,都可能改變實際結果。同一設定在 Wi-Fi 正常、行動網路逾時時,應先比較入口連接埠與網路可達性;若只有高負載時明顯變慢,則應一併觀察伺服器負載與持續傳輸量,不能單憑協定名稱下結論。
排錯可依序確認「資訊是否完整、入口是否可達、驗證是否一致、特定服務是否支援」四個面向。先查看訂閱是否更新成功,再核對目前選取的項目,避免修改一個項目卻測試另一個。驗證錯誤應回頭檢查密碼與方法;逾時優先檢查位址、連接埠與目前網路;只有部分請求異常時,再檢查規則與 UDP。這樣可以保留明確的因果關係,不必在多個設定間反覆嘗試。
若現有伺服器只提供 Shadowsocks,優先使用完整相符的設定即可,不必為了協定名稱更換類型。若使用者同時有多種可用設定,再以相同目標與相近時間比較網頁首次載入、持續傳輸與背景待機表現。記錄改善發生在哪個環節,比替協定貼上「輕量」或「高速」標籤更有用,也更方便日後在網路條件改變時重新判斷。
VMess 與 VLESS:分別核對驗證與傳輸
欄位相似不代表協定相同
VMess 結合使用者身分驗證與協定本身的資料保護機制,設定中常見 UUID、加密選項與傳輸設定。VLESS 的驗證與轉送設計較精簡,協定本身不負責同等程度的內容加密,通常需要搭配適當的外層安全機制。兩者都可能使用 UUID,也都可能搭配 TCP 或 WebSocket,但欄位形式相似不代表可以混用類型。伺服器標示為 VLESS 時,即使選擇 VMess 並填入相同 UUID,仍然不相符。
這類設計將協定與傳輸組合使用,可配合不同的部署方式,也增加了需要核對的欄位。檢視現有資訊時,建議分成「協定類型、使用者驗證、底層傳輸、TLS 保護」四組,而不是把所有欄位看成一份沒有區分的清單。若缺少其中一組資訊,應向原資訊提供者確認,不要從網域或連接埠猜測。使用常見的安全網頁連接埠,也不能單獨證明服務已啟用 TLS。
UUID、加密與時間條件
UUID 用來識別協定中的使用者身分,不是任意備註。複製時應保留完整格式,避免將顯示名稱、訂閱網址或其他憑證填入此欄。VMess 的加密選項應依照提供的參數設定;若舊設定包含額外驗證參數,也應保留原值,不要把舊教學中的固定數字當成所有服務的標準。用戶端匯入結果與伺服器端實際設定一致,比追求通用範例更重要。
裝置時間也可能影響驗證或外層憑證檢查。發生驗證失敗時,先確認系統日期、時間與時區正常,再檢查 UUID 與相關參數;不要任意更改系統時間來規避錯誤。若更新訂閱後才出現異常,而舊項目仍可連線,可以比較協定類型與驗證欄位是否有變更。請注意,匯入成功只表示用戶端已解析資訊,不代表遠端已接受這組身分。
WebSocket 的 Host 與 Path 各有用途
WebSocket 為代理資料提供一種承載方式。Path 是伺服器端接收升級請求的路徑,通常須保留開頭的斜線與大小寫;Host 則是 HTTP 請求中的主機識別。兩者可能與連線入口位址相同,也可能不同,取決於部署方式。缺少路徑、將路徑誤填至 Server,或 Host 與伺服器端預期不符,都可能造成底層 TCP 已連線,但無法完成傳輸交握。
TLS 的 Server Name 又有不同用途,主要用於交握中的伺服器名稱指示與憑證名稱驗證。Host 正確不代表 Server Name 也正確,反之亦然。若現有設定明確提供這三項資訊,應分別填寫,不要為了「統一」而全部改成伺服器 IP。使用 IP 連線、以網域驗證憑證是可行的安排,前提是原有伺服器端設定確實支援,而非由用戶端自行拼湊。
| 欄位群組 | 常見內容 | 錯誤影響 |
|---|---|---|
| 協定身分 | VMess / VLESS、UUID | 類型或驗證不符 |
| 資料保護 | 協定加密選項、TLS | 雙方安全參數不一致 |
| 傳輸承載 | TCP / WebSocket、Path | 無法建立預期的傳輸連線 |
| 名稱欄位 | Host、Server Name | 路由或憑證驗證異常 |
了解額外封裝的實際成本
在 iOS 上,增加傳輸層可能帶來額外交握、封包標頭與緩衝處理;實際成本則取決於連線是否重複使用,以及業務持續時間。短暫的網頁請求可能較受首次交握影響,持續下載則更容易受連線吞吐量限制。不能因為 VLESS 的協定職責較精簡,就認定所有 VLESS 組合都比所有 VMess 組合快;若兩者使用的伺服器、TLS 與傳輸方式不同,比較結果反映的首先是整套連線,而非單一協定。
只有使用者已有多種伺服器端設定時,比較不同組合才有意義。先固定規則模式與目標,保留一份可運作的基準設定;接著分別觀察首次請求、連續請求與網路切換後的恢復情況。若只有 WebSocket 組合失敗,應回頭檢查路徑與 Host;若所有 TLS 組合都出現憑證錯誤,則優先檢查系統時間與 Server Name。將問題範圍縮小到特定欄位群組,可避免同時擴大驗證、傳輸與規則問題。
Trojan:先建立 TLS,再完成協定驗證
分清憑證身分與使用者密碼
Trojan 將代理工作階段置於 TLS 連線內,先透過 TLS 建立受保護的通道,再於通道中提交協定驗證與目標資訊。這裡涉及兩種不同身分:憑證用來驗證連線對象是否為指定伺服器,Password 則用來證明用戶端具有存取權限。密碼正確無法彌補憑證名稱錯誤,憑證有效也不代表伺服器已接受密碼。排錯時應依交握順序檢查,而不是把所有失敗都歸因於密碼錯誤。
這種組合將較多安全職責交由 TLS 處理,因此伺服器名稱、憑證有效期限與裝置信任條件格外重要。這不代表使用者需要手動填入每種 TLS 選項;現有訂閱通常已提供必要設定。應先保留匯入結果,再依錯誤訊息找出缺少的欄位。若沒有完整參數就任意嘗試不同名稱,可能會連到另一個服務入口,讓問題更難判斷。
Server、Server Name 與憑證鏈
Server 是網路連線實際要連到的位址,Server Name 則是 TLS 交握與名稱驗證使用的重要資訊。以網域連線時,兩者通常相同;以 IP 連線時,則可能仍須保留原有網域作為 Server Name。憑證驗證也涉及有效期限與信任鏈,因此名稱正確只是必要條件之一。若憑證已過期或中繼憑證設定錯誤,應修正伺服器端,而非一再更換用戶端密碼。
裝置時間不準、網路認證頁面與錯誤的網域解析,都可能造成看似相近的 TLS 問題。公共 Wi-Fi 尚未完成網頁登入時,連線可能被導向認證入口;若解析到錯誤位址,也可能連上不屬於該服務的憑證。遇到這類問題,應先確認網路本身可正常使用,再檢查網域解析結果與 Server Name。尚未確認連線對象前,不要提交更多憑證或擴大信任範圍。
驗證、傳輸與業務支援的界線
Trojan 的 Password 應完整保留大小寫與符號,不要直接將訂閱網址中的整段文字填入。若現有資訊另外指定傳輸方式,也必須與伺服器端一致;不能因為一般 Trojan 常見於某種承載方式,就刪除設定中明確要求的附加欄位。匯入後可先檢查類型、位址、連接埠、密碼與 TLS 名稱,再查看其他傳輸參數。依此順序可先排除最常見的結構錯誤。
UDP 是否能正常使用,仍取決於伺服器端支援、用戶端設定與實際網路條件。即使協定能轉送某類資料,也不代表所有 App 的表現都相同。即時服務對延遲與抖動更敏感,長時間下載則更容易受到伺服器出口頻寬影響。若一般網頁正常但某個即時 App 異常,應單獨驗證該項服務;不要用網頁成功取代實際業務測試,也不要盲目調大逾時參數來掩蓋問題。
在 iOS 上觀察連線重複使用與重新連線
TLS 交握需要交換資料並進行運算,首次連線的成本與後續穩定傳輸並不相同。在頻繁建立短連線的情境中,交握次數可能影響回應速度與耗電;長連線持續運作時,這部分成本會分攤,連線品質往往更重要。伺服器端與用戶端是否使用相關重複使用機制,也會改變觀察結果。因此測試時應分別記錄首次開啟與連續瀏覽,不要將已建立工作階段後的速度當成初次連線表現。
從 Wi-Fi 切換到行動網路,可能改變裝置位址與可達路徑,既有 TCP 連線通常需要重新建立。切換後若長時間未恢復,應先停止目前工作,確認新網路正常,再測試重新連線所需時間;不要立刻清除設定。背景連線反覆失敗會增加重試次數與無線電活躍時間,造成耗電上升。此時應查明失敗原因,而不是先認定耗電來自加密運算。
若使用者已有穩定可用的 Trojan 設定,日常使用時更重要的是保留正確的憑證驗證與驗證參數,並在訂閱更新後確認未遭意外覆寫。若要與其他協定比較,應選擇相近的網路路徑、相同目標與相同測試時段,並明確記錄比較的是整套服務的表現。協定層的說明有助於定位問題,但不能取代對伺服器端運作狀態與業務目標可達性的確認。
HTTP 與 SOCKS5:區分代理入口與目標連線
兩種通用代理的設計起點
HTTP 代理源自網頁請求轉送情境,用戶端可向代理提交請求,也可透過 CONNECT 要求建立通往目標的通道。SOCKS5 則是更通用的代理協商協定,用來指定目標位址與連接埠,不要求業務內容一定是網頁。兩者都能在 Shadowrocket 中作為伺服器類型,但只憑類型名稱,無法推斷入口已加密、支援所有業務,或具備與其他協定相同的驗證機制。
請特別區分「連線到代理伺服器」與「代理伺服器連線到目標網站」。目標網站使用 HTTPS,保護的是相應 TLS 工作階段中的內容;這不代表裝置到代理入口的所有協商資訊也受到外層加密保護。一般 HTTP 或 SOCKS5 入口不應被視為加密通道的同義詞。應依據現有服務說明確認入口是否受保護,以及是否適合在不受信任的網路中使用。
HTTP CONNECT 與 HTTPS 入口並不相同
透過 HTTP 代理存取安全網站時,CONNECT 通常用來要求建立通往目標的連線,之後目標的 TLS 資料會在其中傳輸。支援 CONNECT 不代表代理入口本身使用 TLS,兩者是不同概念。有些入口也會限制可連線的目標連接埠,因此一般網頁正常、其他業務卻失敗。遇到這類情況,應確認服務允許的範圍,而不是不斷修改目標網域,或認定用戶端規則一定有誤。
若現有資訊明確提供受 TLS 保護的 HTTP 代理入口,應依要求選擇相符類型並設定相關憑證名稱。反之,不能只將連接埠改成常見的安全連接埠,就認為一般入口已變成安全入口。驗證方式也必須一致:使用者名稱與密碼應填入相應欄位,不宜拼接成位址後再嘗試匯入。若服務採用特定驗證限制,也應確認用戶端與伺服器端是否支援。
SOCKS5 的位址類型與 UDP 條件
SOCKS5 可在協定中表示 IP 位址或網域,但實際由哪一端解析網域,仍取決於用戶端的請求處理方式與 DNS 設定。若裝置已將網域解析為 IP,交給代理的可能就是 IP;若保留網域格式,則可能由遠端解析。不能只看「SOCKS5 支援網域」,就推斷所有解析都在遠端進行。排查特定網域連線失敗時,應一併檢查 DNS 與代理請求,不要混為一談。
SOCKS5 規範中的 UDP ASSOCIATE 提供資料封包轉送機制,但伺服器是否實作、是否允許,以及網路能否連到其 UDP 轉送位址,都必須分別確認。只支援 TCP CONNECT 的入口可能足以瀏覽網頁,卻無法滿足即時 App 的需求。若業務必須使用 UDP,應先確認現有服務說明是否支援,再進行實際業務測試。單次 TCP 延遲測試無法驗證這項功能。
| 檢查項目 | HTTP | SOCKS5 |
|---|---|---|
| 主要協商方式 | 請求轉送或 CONNECT | 目標位址與連線指令 |
| 入口加密 | 視入口是否另有 TLS 而定 | 基礎協定本身不提供內容加密 |
| 使用者驗證 | 依入口支援方式設定 | 依入口要求填寫使用者名稱與密碼 |
| UDP | 不能從一般 CONNECT 推斷是否支援 | 須由伺服器端與網路支援相應機制 |
適用範圍與 iOS 測試方式
這兩種類型常用於既有組織網路入口、測試環境或特定業務代理;選用理由通常是相容既有設備,而非協定名稱帶來的效能優勢。只有在使用者已取得允許使用的位址與憑證時,才進行設定。若入口只在指定網路中可連線,離開該網路後失敗可能是部署範圍限制,不一定是手機設定問題;應先確認存取範圍,而非重複匯入相同資訊。
在 iOS 上,協定協商較簡單不代表整體耗電一定較低。若入口限制連線數、頻繁關閉工作階段,或 App 持續重試不支援的業務,無線電活躍時間仍會增加。比較時應將網頁載入與 UDP 業務分開,並觀察失敗是否集中在特定目標類型。確認權限、入口保護與業務支援後,再判斷是否適合目前情境;不要透過關閉驗證或忽略憑證檢查來追求偶然成功。
WireGuard:金鑰身分、隧道位址與路由範圍
先了解它處理的是網路層資料
WireGuard 以網路層隧道為設計基礎,與「為特定目標建立代理連線」的概念不同。設定除了遠端位址,還需要本端位址、金鑰身分,以及允許進入隧道的位址範圍。將它納入用戶端的統一連線管理,不會消除這些網路層條件。使用者應取得完整設定,而不是只憑網域與密碼手動拼湊;缺少隧道位址或對端公鑰時,通常無法建立預期的通訊關係。
WireGuard 使用公鑰識別通訊對端,本端私鑰用來證明本端身分,對端公鑰則用來指定要接受的遠端身分。兩者不能互換。本端私鑰應妥善保密,伺服器端也必須設定與該用戶端相對應的公鑰;只在手機填入一組新金鑰,伺服器不會自動識別。若設定由管理者提供,應保留雙方已約定的金鑰配對,不要任意重新產生並覆寫。
Endpoint、Address 與 Allowed IPs
Endpoint 是隧道對端的網路入口,通常由主機與 UDP 連接埠組成;Address 是本端在隧道中的位址,不是伺服器的公網位址。Allowed IPs 在 WireGuard 的基本語意中,同時涉及目標路由範圍與允許交由對端處理的位址範圍;整合至用戶端後的實際處理方式,還須參照 App 設定。了解這些用途,有助於排查「交握成功但無法存取」的情況:身分交握只代表雙方建立了工作階段,不表示每個目標都有正確路由。
若需要存取組織內網,目標網段必須符合提供的設定範圍,伺服器端也須具備轉送功能與回程路徑。若本地 Wi-Fi 網段恰好與遠端內網重疊,也可能造成路由選擇歧異。這時反覆更換金鑰通常沒有幫助,應先確認目標位址實際會經由哪條路徑傳送。IPv6 也須確認是否具備相應位址與路由條件,不能只因 IPv4 可用,就假設另一套位址空間也能使用。
| 欄位 | 用途 | 注意事項 |
|---|---|---|
| Private Key | 本端身分 | 妥善保密,不要貼到公開的排錯紀錄 |
| Public Key | 對端身分 | 區分本端公鑰與伺服器公鑰 |
| Endpoint | 遠端網路入口 | 確認 UDP 位址與連接埠可達 |
| Address / Allowed IPs | 隧道位址與允許範圍 | 核對網段、回程路徑與位址衝突 |
Keepalive 與行動網路的取捨
WireGuard 使用 UDP。行動裝置透過網路位址轉換設備連線至遠端時,閒置的映射可能逾時。Persistent Keepalive 的用途之一,是定期傳送封包以維持相關映射,並非提高頻寬。較頻繁的保活會增加無線電活動,較少的保活則可能讓某些網路在閒置後需要較久才能恢復。應依照現有設定;只有確實遇到閒置後無法恢復時,才針對性測試,不要套用所有手機都相同的固定間隔。
切換網路後,底層出口位址可能改變。WireGuard 的機制可在符合條件時適應對端位址變化,但實際體驗仍受新網路的 UDP 可達性、位址轉換與伺服器端策略影響。Wi-Fi 正常、行動網路無法連線時,先確認 UDP 是否可達,再檢查電信網路與對端限制。具備位址更新機制不代表每次切換都不會中斷,也不能因為某次恢復很快,就推斷任何網路都能維持工作階段。
分別驗證 MTU 與 DNS
隧道封裝會占用封包空間;若路徑可承載的有效大小與 MTU 設定不符,可能出現小型請求正常、大型回應停滯的情況。不過,丟包或伺服器問題也可能造成相同現象,因此調整前應先記下原值,每次只修改一個參數,再重複相同請求。不要把網路上某個 MTU 數字當成通用答案,也不要只因網頁無法開啟,就立刻將數值調得很小,以免不必要地降低傳輸量。
DNS 決定網域如何解析成位址,路由則決定資料要送往何處;兩者在隧道情境中經常同時出現,但用途不同。若直接連線到已知內網位址成功,使用名稱卻失敗,應優先檢查內網 DNS 與其可達路徑。需要內網互通時,完整的位址規劃比協定速度測試更重要;一般網頁情境則仍須透過 Shadowrocket 確認請求是否套用預期策略。
Hysteria2:QUIC、UDP 路徑與頻寬參數
著重傳輸行為,不承諾固定速度
Hysteria2 以 QUIC 為基礎進行代理傳輸。QUIC 建立於 UDP 之上,結合加密、連線管理與多路資料流,因此傳輸方式不同於一般 TCP 承載。這種設計在某些高延遲或丟包環境中,可能帶來不同表現,但無法消除實際頻寬限制,也不保證在所有無線網路中都更快。伺服器、網路是否允許 UDP,以及壅塞控制相關參數是否合理,都會影響最終結果。
了解多路資料流時,也要注意其限制:不同資料流之間可減少某些傳輸層阻塞的相互影響,但同一條連線仍共用網路資源與壅塞狀態。底層無線連線嚴重壅塞時,改用 QUIC 不會憑空增加頻寬。若比較時也更換了伺服器或目標,很難判斷差異是否來自協定。應先確認現有服務支援 Hysteria2,再以相同條件與其他可用設定比較,不要把協定名稱當成效能最佳化開關。
分組核對驗證、憑證與選用參數
基本資訊通常包含伺服器位址、連接埠、驗證資訊與 TLS 相關名稱。驗證字串必須與伺服器端一致,Server Name 與憑證檢查也應設定正確。底層使用 UDP,不代表 TLS 的身分驗證功能會消失。驗證失敗時,應檢查驗證欄位;憑證檢查異常時,則應檢查名稱、時間與信任鏈。兩者的排查方式不同,反覆修改密碼無法解決名稱不符的問題。
有些服務也會提供額外的混淆參數;只有伺服器端明確啟用並提供對應資訊時,才填寫這些欄位。若用戶端單獨開啟某個選項,伺服器端就無法依原本格式處理資料。匯入訂閱後若連線失敗,可先逐項比對原始資訊,尤其確認參數是否在轉換或手動編輯時遺漏。不要複製另一條連線的附加欄位,也不要依賴預設值猜測伺服器端的實際設定。
頻寬欄位不是購買額度,也不是越大越好
部分設定會包含上傳與下載頻寬提示,這些數值可能會影響特定壅塞控制行為。它們不代表用戶端可獲得的頻寬額度,也不是填得越大速度就越快。估值過高可能增加排隊、丟包或抖動;估值過低則可能限制傳輸量。實際影響也與協商方式和伺服器端策略有關。應先閱讀現有設定說明,並以實際連線能力為準,不要把行動網路的瞬間峰值當成可持續的速度。
填寫時也要確認單位與方向:上傳是裝置向外傳送,下載是裝置接收資料;不同介面或資訊來源使用的單位可能不同,不能直接複製一個數字就假設意義相同。若需要調整,先在穩定網路上多次觀察持續傳輸,再小幅修改並記錄效果。只測試一個很小的檔案,通常主要反映連線建立與快取情況,不足以判斷頻寬參數,也不能說明長時間使用時的耗電表現。
在 iOS 上分別觀察傳輸量、溫度與恢復情況
高傳輸量代表更多資料處理、無線傳輸與 App 活動;即使更快完成工作,短時間耗電也可能較高。比較電量時應一併記錄工作是否提早結束、螢幕狀態與裝置溫度,不能只看某一刻電量下降的速度。若行動網路持續高負載時明顯發熱,應先降低測試負載並確認訊號品質;弱訊號與反覆重傳也會提高整機耗電,不應只歸因於協定運算。
若 Wi-Fi 可用、另一個網路卻逾時,可先確認相同位址與連接埠的 UDP 路徑;若小型請求正常、持續傳輸不穩,再檢查丟包、壅塞參數與封包大小相關問題。網路切換後的恢復能力需要在實際裝置上驗證,不能只因 QUIC 具備某些機制,就推斷用戶端與伺服器端在所有組合中都能維持連線。經常移動的使用情境,應將網路切換測試列為獨立項目。
現有 Hysteria2 服務是否適合目前工作,應以實際結果判斷:網頁是否穩定、長時間工作能否按時完成、即時通訊是否出現抖動,以及背景閒置時是否持續重試。若只是想改善網頁首次開啟速度,應先排除 DNS 與 TLS 設定問題;若持續下載受限,再檢查路徑與伺服器端能力。依照實際情況選擇測試項目,比不清楚單位與伺服器端條件時反覆調大參數更有效。
情境驗證:分開排查協定、DNS 與規則
使用相同測試建立基準
協定比較應以實際工作需求為依據。日常瀏覽網頁先觀察首次回應與連續載入;大型檔案傳輸看穩定傳輸量與途中是否中斷;即時通訊看延遲、抖動與 UDP 業務;內網存取則優先檢查位址規劃、DNS 與回程路徑。使用者有多個設定時,先選一個能完成工作的設定作為基準,再比較其他設定。若所有設定都失敗,應先檢查目前網路與目標本身,避免在不具備測試條件時下協定結論。
有效比較應盡可能固定裝置、網路、目標、規則模式與測試時間,並暫停背景的大量資料傳輸工作,同時記錄是否為首次連線。每組重複測試幾次,以常見表現而非最佳單次結果作為參考。Connectivity Test 可協助找出明顯無法連線的項目,但結果不等於完整的網頁體驗,更不能證明 UDP、內網或長連線一定正常。將連線測試、實際存取與持續傳輸分開,才能判斷差異來自哪個環節。
使用 Global Routing 三種模式隔離變因
Config 依目前設定中的規則決定連線策略,Proxy 將適用流量送往代理路徑,Direct 則直接連線。若 Config 異常但 Proxy 正常,通常應回頭檢查規則與策略指向,而非立刻更改密碼;若兩種需要代理的模式都失敗,再檢查入口、驗證與傳輸。Direct 測試只能提供本地網路基準;若目標在直接連線時無法到達,也不能單獨證明代理協定有問題。
以下片段示範如何依網域後綴選擇策略、依位址區段直接連線,並用最終規則處理其餘請求。這是 Shadowrocket 的 .conf 規則內容範例,不是可連線的伺服器設定,也不包含驗證資訊。PROXY 必須在實際設定中對應有效策略;匯入或修改前請先備份,並確認目前 Config 確實選取了正在編輯的檔案。規則通常依序比對,前面的寬泛條件可能使後面的具體條件無法生效。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.168.0.0/16,DIRECT
GEOIP,CN,DIRECT
FINAL,PROXY
網域規則依賴用戶端在適當階段取得網域資訊,IP 規則則比對位址;兩者不能簡單互換。網站可能使用多個資源網域,App 也可能直接使用 IP,因此「主頁面套用預期策略」不代表所有相關請求都相同。GEOIP 結果也會受位址資料庫與目標位址變動影響。若只想讓指定網站使用代理,可繼續閱讀指定網站使用 PROXY 的規則說明,再依自身需求補上條件。
根據錯誤現象回到相應層次排查
完全逾時時,先檢查網路、位址與連接埠;明確的驗證錯誤則檢查密碼、UUID 或金鑰配對;TLS 錯誤應檢查系統時間、Server Name 與憑證;交握成功但業務失敗時,再檢查目標可達性、DNS、UDP 與路由。若只有一個網域失敗,先測試其他已知目標;若所有網域都失敗但已知 IP 可達,再集中檢查 DNS。每次只修改一組設定,驗證後記錄結果,不要同時將多種猜測寫入設定。
| 使用情境 | 優先檢查 | 應避免的結論 |
|---|---|---|
| 首次開啟網頁很慢 | DNS、交握、初次連線與目標回應 | 只憑延遲數值判斷完整載入速度 |
| 即時業務異常 | UDP、抖動、規則與 App 需求 | 網頁正常就認為所有業務都正常 |
| 無法開啟內網名稱 | 內網 DNS、網段與回程路徑 | 只更換協定驗證資訊 |
| 背景耗電增加 | 重試、保活、App 活動與訊號 | 把整台裝置的耗電全歸因於加密 |
保留可重現的紀錄,再決定是否更換協定
排錯紀錄應包含裝置網路、目標類型、Global Routing 模式、錯誤階段與發生條件,不必公開完整訂閱網址、密碼或私鑰。分享截圖或文字前,應移除驗證資訊與個人識別資料;只保留有助於重現問題的協定類型與非敏感欄位。訂閱更新後若出現問題,可以比較類型、傳輸與名稱欄位,但要保留原項目,避免尚未確認新設定可用前,就失去可運作的基準。
最終選擇應以相容性與可重現的結果為準:能完成工作、切換網路後可恢復、持續運作時沒有異常重試,比單次測試的最高數值更有參考價值。常見匯入與連線問題可回到快速入門的故障排查;介面用語可查閱概念速查;功能行為可參考功能說明。若問題涉及伺服器端驗證、憑證或路由範圍,應向原資訊提供者確認相應設定,而非在用戶端不斷更換無關選項。