部落格

看哪一條在漲,不要看圖示亮不亮。

狀態列的 VPN 標記只說明延伸在跑。策略停在 Direct 時,標記可以同樣亮著,位元組卻全部從原路徑離開。要問「這次訪問進了目前記錄沒有」,只能看 Data。

四組訊號

它們各自在回答一個不同的問題

Shadowrocket 的 Data 頁:備份、Statistics 與日誌入口
Data 頁。兩條累加器在 Statistics。截自 App Store,以你裝置上的版本為準。

主介面同時亮著好幾樣東西:開關、策略、Data、列表旁邊的毫秒數。人的眼睛會自動把它們收成一句「連上了」或「沒連上」。這是誤讀的起點。這四組訊號彼此獨立,把其中任何一組當成另外一組的別名,後面所有判斷都會反著來。完整對照寫在手冊的 Data 一章;本篇只把 Data 這一組拆開,並說明它為什麼比圖示更值得看。

開關回答的是:Network Extension 有沒有跑起來。停在接通、狀態列有 VPN 圖示,只表示隧道這一層在。策略回答的是:進了隧道之後,還要不要問規則。Config 才跑規則,Proxy 強制進目前記錄,Direct 強制走原路徑。列表探測回答的是:這一跳此刻探不探得通。Data 回答的是:已經發生的位元組,走了 Direct 還是 Proxy。四個問題疊在同一次觀察裡,只看第一問,會得到「已經連上了怎麼還不行」這種無法動手的結論。

VPN 圖示尤其容易騙人。它跟開關繫結,不跟策略繫結。Direct 下圖示可以亮,請求仍從行動網路或 Wi-Fi 原路徑離開,完全不經過你選中的那條記錄。把圖示當成「走了節點」的證明,等於用隧道的存在去代替出口的使用。隧道如何啟動,見 隧道

兩條累加器

Data 統計的是已經發生的位元組

Data 裡有兩個累加器,名字就叫 Direct 和 Proxy。它們寫在本機上,統計已經發生的位元組。不是套餐餘量,看不到任何第三方帳號裡還剩多少流量,重置之後從零再計,遠端配額也不會跟著動。把 Data 當成「節點還剩多少 G」,會在數字很大或很小的時候做出完全不相關的決定。

一次訪問之後,只應有一側明顯增加。訪問一個你認為應該進目前記錄的主機,然後立刻看:Proxy 增加,說明有位元組進了這條記錄。網頁仍然失敗,問題多半在對端、解析、或這個 App 自己拒絕隧道,而不是「沒走節點」。這時再去改規則,是在修一個已經證明走了記錄的路徑。只有 Direct 增加,說明請求被留在了原路徑。若你預期它該進記錄,去看策略是不是 Direct,或 Config 下規則是不是先把它寫成了 DIRECT / REJECT。見 規則

兩條几乎都不動:請求可能沒進隧道——開關沒穩住、系統裡沒有可用的 VPN 配置、另一款 VPN 佔著槽——或者根本沒有出站,例如飛航模式、門戶頁沒過、應用還在本地快取裡打轉。先看開關和 系統,再懷疑記錄。

REJECT 命中時,通常不會像一次成功載入那樣推高計數。應用報錯、Data 安靜,和「節點沒流量」長得像。把策略切到 Proxy 再訪問一次,才能把「規則丟掉了」和「記錄握手失敗」分開。前者在 Proxy 下會通,後者在 Proxy 下仍然失敗。

這兩條累加器只分左右,不分「是哪一條記錄」。換高亮行之前的 Proxy 數字還在,不會按行清零。要把計數和某一行對應起來,先重置,再固定那一行做一次訪問。連續開啟十個頁面再回頭看總數,Direct 與 Proxy 可能都動了,無法對應到某一次。對照的粒度是「一次訪問」,不是「一個下午」。

對照

固定一行,只改策略

選定列表裡的一行之後,按 Direct → Proxy → Config 的順序切。不要同時換記錄、改 FINAL、重新整理容器。Direct 下本機訪問、門戶認證頁應可用;這裡已經沒有網,先處理 Wi-Fi、行動網路或登入頁,與記錄無關。Proxy 下預期走記錄的主機能開啟:隧道和這條記錄在應用層可用;這裡也打不開:問題在記錄或對端,不要先改規則。Config 僅在 Proxy 已經證明記錄可用之後再調,一次改一個條件,用 Data 看計數站在哪一側。

這個順序的用處是歸因。Direct 失敗,修本地網路。Proxy 失敗,修記錄。Config 失敗而 Proxy 成功,修規則。三步同時做,螢幕上每一次變化都可以用另外兩個變數解釋,等於沒有解釋。手冊把同一套順序寫進了 Data 章,本篇只強調:圖示不參與這三步裡的任何一步。

探測數字很小,網頁仍可以打不開

列表探測通常只走到這一跳的握手,並不載入你正在用的那個網站。探測成功、網頁失敗:這一跳目前探得通,失敗在 DNS、規則、對端站點、或該 App 拒絕隧道。探測失敗、個別網頁卻能開啟:那些網頁可能走了 DIRECT,看 Data,不要看毫秒數。

系統時間未自動同步時,TLS 會批次失敗,開關在任何記錄上都會表現異常,探測也會一起壞。先開啟「自動設定」時間,再談記錄。目的地址是 IPv6、規則只寫了 IPv4 的 IP-CIDR 時,請求掉到 FINAL,看起來像規則「有時靈有時不靈」,見 DNS。另一款 VPN 正處於連線:系統可能不把流量交給本延伸,開關亮著也不表示位元組進了 Shadowrocket,Data 兩條都不動。

圖示亮著、探測很小、網頁失敗、Data 只漲 Direct:四件事可以同時為真。只看第一件,會得出無法行動的結論;四件一起看,結論是策略或規則把這次訪問留在了原路徑。下一步是固定那一行,只動策略,而不是再買一條新的記錄、或再匯入一份新的名單。

還有一種常見誤讀:把 Data 的 Proxy 數字當成「今天用了多少套餐」。那條數字只說明本機曾經把多少位元組送進過目前這條或此前高亮過的記錄,它既不按網站拆開,也不按日期清零,除非你手動重置。換了一條記錄再訪問,新的增量會疊在舊的 Proxy 上。若要回答「這一條行不行」,必須先重置,再只訪問一次,再看哪一側動了。不重置、連續換行、同時開著好幾個 App,得到的是一筆糊塗帳,不能用來給任何一行定罪。