VPN 洩漏與偽裝檢查

所謂洩漏,是指任何關於你的讀數逃出了 VPN 建構的隧道:某個數值仍走舊路線,或網頁可以直接向你的瀏覽器索取、完全繞過隧道。所謂偽裝檢查是與之配套的測試:網站收集它能拿到的每一個讀數——地址、時鐘、語言、硬體、解析器——再把它們彼此對照,找的不是秘密,而是矛盾。偽裝很少因為某一個數值看起來不對而失敗,而是因為兩個本應一致的數值不一致。親自在瀏覽器指紋測試中跑完這兩半,並閱讀網站對你了解多少,了解在改任何設定之前頁面能讀取的完整清單。

VPN 只改變一件事

VPN 只做一件機械的工作,而且做得很好:它把你的流量包進一條通往出口伺服器的加密隧道,你造訪的網站看到的是那台伺服器而不是你。你的公用 IP 地址變了,附在該地址上的城市和國家也隨之改變,擁有該地址的網路——通常是託管公司或 VPN 服務商,而不是家庭寬頻——也變了。如果你的唯一問題是「這個網站認為我從哪個地址來?」,一個正常工作的 VPN 就能完整回答它,本文沒有任何內容與此矛盾。

其他一切都原地不動。你的裝置沒有移動:螢幕尺寸、圖形晶片、已裝字型、電池行為、音訊堆疊,以及組合成瀏覽器指紋的幾十項軟硬體讀數,在隧道開啟前後完全相同。你的時鐘沒有移動,所以系統時區仍報告你實際所在的地方。瀏覽器和系統語言沒有移動。Cookie、已登入帳號和瀏覽歷史也沒有移動。隧道改的是封包的路線,而不是路線盡頭那台機器的樣貌。

這種分裂正是大多數所謂「VPN 偵測」名不副實的原因。常見情況下,沒有人偵測到了 VPN 協定、隧道或加密連線。他們偵測到的是不匹配:IP 聲稱在一個國家,時鐘卻聲稱在另一個國家;地址屬於資料中心,指紋卻描繪一台家用筆電;語言列表描繪一個從不出行的人。網站給「已移動的那一層」與「未移動的那些層」之間的差距打分。所以理解洩漏,其實與隧道關係不大,而是稽核隧道留下的每一樣東西。

WebRTC:繞出隧道的地址

WebRTC 是頁面內語音、視訊和點對點資料的瀏覽器技術。要讓兩個瀏覽器直連,它必須先發現各自如何被觸及,這個發現過程叫 ICE。用通俗的話說,你的瀏覽器收集候選地址——它自己的可能地址——並提供給對方。它有些靠問自己得知,有些靠問 STUN 伺服器一個簡單問題得知:「從你那裡看,我是從哪個地址打來的?」答案以不同候選類型返回,而它們之間的區別就是整個洩漏故事。

一個主機候選是你機器直接持有的地址:歷史上就是你的區域網路地址,比如路由器給你的 192.168 地址。一個伺服器反射候選是 STUN 伺服器觀察到的公用地址——外界看到的地址。WebRTC 剛出現時,頁面可以自由收集兩者,於是產生了兩個經典洩漏:區域網路地址逃了出去,儘管它對網站毫無用處;更糟的是,當瀏覽器在 VPN 隧道之外或之旁詢問 STUN 伺服器時,反射候選揭示了偽裝背後的真實公用地址。VPN 對網頁流量工作得完美無缺,一個側通道卻悄悄公布了它在隱藏的東西。

現代瀏覽器已大幅收窄了這一點。Chrome 和 Firefox 現在通常用隨機 mDNS 名替換主機地址——一個輪換的 .local 主機名,而不是你真實的區域網路 IP——頁面看到的候選無法對應回你的路由器。實作因瀏覽器和版本而異,有的能正確把 WebRTC 路由進隧道,企業或裝了擴充功能的設定又不同,這就是為什麼兩個誠實的測試會給出不同結論。對粗暴修復要謹慎:完全停用 WebRTC 能止洩,也會破壞正常通話;而承諾「偽造」候選的擴充功能,常常把可信地址換成不可信的——不可信的候選本身就是偽裝檢查可以打分的矛盾。

DNS:留在家裡的解析器

你造訪的每個網域名稱在連線之前都要被翻譯成地址,這個翻譯由解析器完成。如果你瀏覽器或系統繼續使用網際網路服務商指派的解析器——直接存取、在隧道之外——那麼每次查詢同時以兩種方式洩漏。查詢本身以普通 DNS 流量的明文模式發給你的 ISP,即使隨後的頁面走 VPN,也暴露了你解析了哪些域名。任何能觀察到哪個解析器替你發問的網站,都能知道你大概在哪裡,因為人們絕大多數使用離自己真實位置很近的解析器。

第二種洩漏比聽起來更微妙,而它的標準測試很巧妙。測試頁面讓你的瀏覽器查詢一個從未存在過的名字——測試者控制的網域下一個長長的隨機子網域。因為名字是唯一的,任何快取都沒有它,你的解析器被迫直接去問測試者的權威伺服器。那台伺服器由此看到解析器的地址,並能把它的網路和國家報告回頁面。使用 EDNS 用戶端子網路資訊的變體還能進一步縮小範圍,因為有些解析器會熱心地把你自己地址範圍的一部分隨查詢一起轉發。這一切都不需要破壞隧道,只需要你的查詢與你的頁面走不同的路。

陷阱大多是設定問題,而不是惡意。分流設定故意把部分流量——通常包括 DNS——送到 VPN 之外,以求速度或本地存取。向每台裝置下發 ISP 解析器的路由器會在 VPN 在其中一台上運作時繼續這麼做。自帶加密 DNS 設定的瀏覽器可能繞過系統和 VPN 服務商的解析器,修復了一個洩漏,卻在新解析器與出口不同國家時悄悄製造一致性問題。工作規則與本文其餘部分一致:解析器應位於出口聲稱所在的地方,並應透過隧道到達它,而確認這兩點的方法只有從外部測試。

矛盾:自我爭吵的偽裝

想想頁面一秒鐘能讀取的四個讀數。你的 IP 把你放在阿姆斯特丹。你的系統時區報告 UTC−5 和美洲的一座城市。你的瀏覽器語言列表以一種在荷蘭很少說的語言開頭,裡面沒有任何荷蘭語。你的使用者代理聲稱是 Windows 桌面,而圖形算繪器報出的是行動晶片。這些值沒有一個單獨能證明什麼——旅行者、外派人員、虛擬機和古怪設定每天都無辜地產生每一個。合在一起,它們就吵起來了。偽裝檢查不過是一台傾聽這場爭吵並給它賦權的機器。

有些矛盾出現得如此頻繁,已成為標準測試組合。時區與 IP 國家最響亮,因為時鐘對頁面來說極易讀取,而大多數 VPN 使用者從沒想過改它。語言與 IP 國家更柔和——人們合理地用第二語言瀏覽——但出口國家的語言完全缺席仍然計入。使用者代理與平台能抓住粗糙的偽造:一個字串聲稱一種作業系統,而觸控支援、螢幕形狀或 GPU 算繪器描繪的是另一種。託管 ASN 與住宅敘事最安靜,往往也最決定性:出口地址屬於資料中心網路,而工作階段的其他一切都描繪一個普通家庭使用者——他實際上應該從寬頻服務商那裡來。

這就是為什麼網站真正打分的是本身的一致性,而不是任何單一數值。詐欺系統、濫用過濾器或串流媒體目錄很少需要證明 VPN 存在;它需要一個風險數字,而矛盾是廉價、穩健的證據來源。一個地址、時鐘、語言、解析器和硬體講同一個故事的工作階段可能仍是 VPN 工作階段——但它沒有可被打的內在爭吵,所以會被按它所講的故事處理。反過來,一個根本沒用 VPN 的使用者也可能因為純粹的混亂而得分很差:在另一個國家製作映像的工作筆電、被留在外語的瀏覽器、位於另一大陸的企業解析器。檢查測的是連貫性,它從來測的都不是隧道。

保持一致的清單

按檢查器讀取你的順序來做。先選定出口國家,有意地選,讓其他一切都跟隨它——與一個你選定的地方保持一致,勝過事後裝扮隨機出口。把系統時區設為匹配那個國家,不只是瀏覽器時鐘,因為頁面讀的是系統時區。對齊瀏覽器語言:把出口國家的語言放在首位或至少放進列表,並盡可能用它瀏覽。每一步消去一層與另一層之間的一次爭吵,合起來就覆蓋了網站最常檢查的矛盾。

然後關閉側通道。讓 WebRTC 留在隧道內,或者如果你從不在瀏覽器裡通話,就乾脆關掉——並且重新檢查你的瀏覽器實際是哪種行為,而不是想當然。確保 DNS 透過隧道解析到一個符合出口敘事的解析器,當你呈現的故事是住宅使用者時,優先選擇住宅出口,因為沒有任何時鐘設定能修復資料中心的 ASN。在每一次改動之後,重跑瀏覽器指紋測試,並像網站那樣讀它:不是找一個紅旗,而是問整頁是否講同一個故事。想了解為什麼這種測試可以在不收集它所展示讀數的情況下運作,請看隱私測試如何不保留資料。

以誠實的提醒收尾,因為一份承諾隱形的清單是在騙你。一致性消去矛盾,它不消去身分。你的瀏覽器指紋——第一部分裡原地不動的硬體、字型、圖形和設定的組合——仍能在不同造訪和不同地址之間認出你的裝置,而你的行為、帳號和習慣比任何網路讀數都更可靠地識別你。一套連貫的偽裝提高了隨手偵測的成本,擋住了容易的、自動化的那種。面對一個能長期觀察行為的堅定觀察者,它從來都不是保證,任何向你出售這種保證的工具或服務商都應該被更少信任,而不是更多。

來源與延伸閱讀

常見問題

VPN 會隱藏我的指紋嗎?

不會。VPN 改變網站看到的地址,而不改變其背後的裝置。你的螢幕、圖形算繪器、字型、語言、時區和其餘指紋讀數在隧道開或關時完全相同,這就是為什麼指紋能跨不同出口和不同地址關聯你的工作階段。隱藏或隨機化指紋值是另一個瀏覽器層面的問題——而隨機得不好的值會製造自己的矛盾,就像瀏覽器指紋測試在聲稱平台與真實算繪器不一致時所展示的那樣。

如果我信任我的 ISP,DNS 洩漏危險嗎?

取決於你買 VPN 是為了什麼。如果你信任服務商,只是想要一個不同的出口地址,DNS 洩漏可能問題不大——儘管你的解析器仍會向任何執行回聲測試的網站暴露你的真實國家,即使沒有其他危害,也能破壞偽裝。如果你想讓服務商看不到你解析哪些名字,這個洩漏就完全擊敗了那個目的,因為查詢模式大致就是瀏覽模式。用「危險」來框定是錯的;正確的問題是,這個洩漏是否悄悄取消了你買隧道來做的那件具體工作。

為什麼這個測試說我的 WebRTC 沒問題,另一個網站卻不同意?

通常是因為兩個測試看的是不同的東西,而且兩者都誠實。現代瀏覽器把主機候選藏在輪換的 mDNS 名之後,所以一個測試報告「沒有 IP 洩漏」,因為它只看到了 .local 佔位符,而另一個則標記候選本身的存在、一個反射地址,或候選國家與出口國家不匹配。權限也重要:被授予麥克風或攝影機權限的頁面,可能比沒有的了解更多,瀏覽器和版本預設暴露的內容也不同。測試者之間的分歧是關於各自讀取哪一層的資訊——不是誰壞了的證明。