在一段相當長的時間跨度裡,網路訪問的體驗其實發生過幾次很明顯的變化。有些變化是可以直接感覺到的,比如解析結果異常,或者連線在建立過程中被突然打斷,也有一些變化沒那麼直觀,往往要在反覆失敗、對比不同情況之後,才慢慢察覺出來。
如果把這些體驗和一些公開的測量研究放在一起看,多少能對得上。尤其是當 DNS 干預的痕跡變少、連線超時變多之後,一種更難被直接觀察的控制方式開始變得明顯。單看某一個現象可能說不清,但放在一起看,會隱約看到一條從「明顯干預」走向「不太容易被察覺」的變化軌跡。
比較早的時候,干預其實很有“形”。你通常很快就能意識到哪裡不對,比如域名能解析,但 IP 看起來就不像是真的;換個網路環境,結果完全不一樣;或者連線剛建立就被直接打斷,有種中途被人插手的感覺。後來才慢慢知道,這些對應的是 DNS 汙染、TCP RST 注入之類的機制。它們有一個共同點,就是汙染 IP 往往是重複的,RST 的行為模式也相當固定。也就是說,系統在干預的同時,其實也在暴露自己。這一點讓事情變得相對可理解;只要有這些訊號,就能被觀察、被對比,甚至被反推。那時候的網路雖然有限制,但很多問題是能被解釋的,出問題時也往往能定位到一個比較具體的原因。
再往後,隨著加密通訊變得普遍,各種代理工具也越來越多,事情開始變得沒那麼單純。干預不再只停在域名解析或連線本身,而是慢慢往協議細節裡走,比如 TLS 的 SNI 會被識別,一些特定的流量模式會被針對性處理。系統會對可疑連線進行主動探測,等於是反過來確認你在做什麼。這一階段的感受有點微妙;有些連線不是完全不能用,而是換個埠、換種封裝方式又可以連上,但這種狀態通常維持不了太久。你會開始不斷調整設定,同時也隱約感覺到對面在跟著變。問題慢慢不再是「能不能連」,而更像是「這個方法還能用多久」。
真正讓人覺得不一樣的,是再後來的一段時間。很多連接失敗的訪問不再帶著明確的錯誤訊號,而是變得模糊。DNS 查詢有時候不回復錯誤答案,而是乾脆沒有答案。TCP 連線卡在建立階段,一直等,最後超時。同一個目標,有時候可以有時候又完全不行。乍看之下很像一般的網路問題,比如線路不穩或者服務端波動,但當這些情況反覆出現,而且多少帶點規律,就很難再把它當成純粹的偶發性問題來看。
和早期那種「給你一個錯誤結果」的方式相比,現在更像「什麼都不說」。如果要找一個比較貼近的描述,會更接近資料包在中途被丟掉的情況,連線在邏輯上是成立的,但在路徑中被悄悄截斷,沒有任何回應。這種處理方式帶來一個很直接的影響;你很難判斷問題到底出在哪裡。以前看到汙染 IP,大致可以確定是 DNS,看到 RST,也能猜到是中間被干預。但現在的超時,本身幾乎不提供線索,它既可能是網路問題,也可能是某種策略觸發。這種不確定感,慢慢變成了整個體驗的一部分。
DNS 汙染在過去很長一段時間都是最典型的干預方式,特徵非常明顯,也相對容易被測量。它的覆蓋範圍很大,同時也會帶來一些副作用,比如影響到共用基礎設施。不過從這些年的實際觀察來看,它的重要性似乎沒有以前那麼單一了。有些域名不再返回典型的汙染結果,而是直接超時或者間歇性沒有回應,不同網路路徑之間的差異也變得更明顯。感覺上,DNS 這一層更像是整體系統中的一個環節,而不是唯一的入口。
這種變化並不只是抽象上的判斷。在前幾年的兩次實際經驗裡,我使用的一個博客域名曾遭遇過全境性的 DNS 汙染,之後另一個 Mastodon 社群網站的域名也出現相同情況。兩者表面上都屬於 DNS 層的封鎖,但實際效果已經出現差異;前者在不使用 VPN 的情況下,仍然可以透過 DoH 服務繞過,後者則幾乎必須依賴代理才能正常訪問。再和如今一些被阻断的域名會被直接指向 127.0.0.1 的情況放在一起看,就會發現 DNS 干預本身也在變得更難旁路。它沒有消失,只是從早期較容易識別、較容易繞過的形式,逐漸轉向了更封閉、也更徹底的做法。
和返回偽造結果相比,黑洞式丟棄帶來的一個變化,是整體變得更難觀察。沒有回應這件事,本身不說明太多問題,因為超時可能來自很多原因。相關過濾行為在不同時間、不同位置並不一致,而這種不一致在這種機制下更難被看清。以前那種靠“異常回應”來判斷的方法,在這裡就沒那麼直接了,往往要透過多路徑對比、重複測試,甚至用統計方式去慢慢拼湊。從外部看起來,就像是系統刻意少留下了一些可以被抓住的特徵。
同時也能感覺到,干預不再只是卡在域名或連線入口,而是慢慢和流量本身綁在一起。即使在完全加密的情況下,還是可以透過一些統計特徵來區分流量,比如熵、封包長度分佈,或者握手過程的模式。在這種前提下,阻斷不一定需要明確知道你在連哪個域名,也可以在連線建立之後,再根據流量特徵決定要不要繼續放行,有時候甚至會呈現出一種不完全穩定的狀態。整個過程看起來不再像固定規則,而更像帶有條件判斷的動態決策。
如果把這些變化放在一起,會發現控制方式在幾個層面上都變了。干預的範圍從原本比較清楚的域名或 IP,慢慢延伸到更細的連線上下文;同一個目標在不同時間、不同條件下,可能出現完全不一樣的結果。明確的錯誤訊號變少,看起來就像一般的網路異常。連阻斷本身也不再總是穩定的,有時候會帶點隨機性。這些變化加在一起,讓整個系統看起來更安靜了,但同時也更難理解,不只是技術變複雜了,甚至連我們理解「為什麼連不上」這件事的方式,也在慢慢改變。
控制的邊界,已經從連線本身,延伸到對失敗的認知。

發佈留言