WebRTC協議如何繞過你的VPN並向網站洩露你的真實IP地址——以及消除這一風險的瀏覽器設置和擴充功能。
WebRTC(網絡實時通信)是一種瀏覽器技術,使瀏覽器之間能夠建立直接的對等連接,用於音頻、視頻和數據傳輸——被Google Meet、Zoom的網絡客戶端和許多其他視頻會議和文件共享應用程式使用。為了建立這些直接連接,WebRTC使用一種稱為ICE(交互式連接建立)的機制,發現並測試你的設備可以訪問的多個IP地址,包括你的公共IP、本地網絡IP和VPN IP。問題是,這個IP發現過程可以被任何網站通過JavaScript觸發,而不仅仅是合法的視頻通話應用程式。
當VPN活躍時,WebRTC的ICE協商可以同時發現並暴露你的VPN的IP地址和你的真實公共IP地址。真實IP的出現是因為WebRTC通過STUN(用於NAT的會話穿越實用程序)協議進行通信,發現你的ISP分配的IP地址——而這個STUN請求可以繞過VPN隧道,直接通過你的真實ISP連接到STUN伺服器。惡意或只是有追蹤動機的網站可以通過JavaScript運行WebRTC STUN請求,在沒有任何瀏覽器警告或用戶提示的情況下接收你的真實IP地址。
WebRTC洩漏默認影響Chrome、Firefox和Edge。Safari和Brave都在其默認配置中實現了WebRTC洩漏防護——Safari封鎖本地IP地址披露,Brave通過VPN隧道路由WebRTC流量。然而,Chrome和Firefox需要瀏覽器設置更改或擴充功能來防止WebRTC洩漏。這是VPN用戶中最常見的私隱漏洞之一——他們可能擁有完全功能、正確連接的VPN,卻仍然讓任何通過WebRTC檢查的網站看到其真實IP地址。
使用免費的在線工具測試WebRTC洩漏大約需要30秒。在VPN連接並活躍的情況下,導航至browserleaks.com/webrtc或ipleak.net。這些網站自動從你的瀏覽器運行WebRTC STUN請求,並顯示任何被揭露的IP地址。如果頁面只顯示屬於你的VPN供應商的IP地址——通常是與你選擇的VPN伺服器位置匹配的外國IP——則沒有WebRTC洩漏。如果頁面還顯示屬於你實際ISP的香港IP地址(HKT、中國移動香港、數碼通等),你的真實IP正在通過WebRTC洩漏。
重要的是要在VPN連接時測試,而不是在沒有VPN的情況下。沒有VPN時,通過WebRTC看到你的真實IP是預期的,不是問題。洩漏測試專門檢查WebRTC是否繞過VPN——因此只有在你認為VPN應該屏蔽你的IP時,測試才有意義。在你的主要瀏覽器中運行測試,然後在Brave中比較結果(默認應顯示無洩漏),以了解正確保護和未保護的WebRTC配置之間的差異。
某些WebRTC測試區分不同類型的IP披露。本地IP披露顯示你的內部網絡IP(如192.168.x.x)——這通常比公共IP披露問題少,但仍可能揭示有關你的網絡配置的信息。通過WebRTC的公共IP披露是更嚴重的私隱問題,因為它揭示了你的ISP分配給你連接的IP地址。IPv6地址也通過WebRTC披露,應加以檢查——只保護IPv4流量的VPN可能在IPv4被正確隧道傳輸時仍然允許IPv6 WebRTC洩漏。
Firefox通過about:config提供了禁用WebRTC洩漏防護的內建設置。在Firefox地址欄中輸入about:config並按回車。當提示時點擊「接受風險並繼續」。在搜索框中,輸入media.peerconnection.enabled並按回車。雙擊結果將其值從「true」更改為「false」。這將在Firefox中完全禁用WebRTC,防止任何網站發起WebRTC連接,包括STUN請求。通過重新訪問browserleaks.com/webrtc驗證修復——WebRTC部分現在應顯示無數據。
在Firefox中完全禁用WebRTC會破壞依賴WebRTC的網絡應用程式中的視頻通話功能,包括Google Meet、Zoom和Discord的網絡版本。如果你通過Firefox使用這些服務,考慮使用更有針對性的方法:不是完全禁用WebRTC,而是安裝「WebRTC Control」擴充功能,它提供一個瀏覽器工具欄按鈕,可以按會話快速啟用和禁用WebRTC。這讓你在一般瀏覽時禁用WebRTC,只在你特別需要視頻通話應用程式時重新啟用它。
在保持WebRTC功能的同時防止IP洩漏的替代Firefox方法,是在about:config中將media.peerconnection.ice.no_host設置為true——這防止WebRTC披露你的本地網絡IP地址,同時仍允許通過你的VPN IP路由的WebRTC連接。此外,將media.peerconnection.ice.default_address_only設置為true,將ICE候選項限制為僅VPN接口,防止通過STUN發現真實IP。這些更具外科性的設置允許視頻通話繼續,同時防止IP暴露。
Chrome沒有提供內建設置來禁用或限制WebRTC。防止Chrome中WebRTC洩漏的唯一方法是安裝瀏覽器擴充功能。最可靠的選項是Google自己的「WebRTC Network Limiter」,它限制ICE候選生成,以及可以配置為通過在其進階設置中啟用選項來封鎖WebRTC的「uBlock Origin」。WebRTC Network Limiter擴充功能配置簡單——安裝後,打開其選項,設置為「禁用非代理UDP」以防止STUN請求繞過VPN。這是無法切換瀏覽器的Chrome用戶的推薦方法。
Brave Browser開箱即正確處理WebRTC。Brave在使用VPN時通過VPN隧道路由WebRTC流量,並防止WebRTC通過STUN發現真實IP地址。Brave的私隱設置包括設置 > 私隱和安全性 > 安全性下的「WebRTC IP處理策略」選項,默認設置為「默認」,但可以更改為「禁用非代理UDP」以在你想要最大IP隱藏的網絡上獲得額外保護。Brave用戶應通過運行browserleaks測試驗證WebRTC防護正常工作,但在大多數情況下不需要更改配置。
iOS和macOS上的Safari處理WebRTC的方式與Chrome和Firefox不同。Safari默認限制WebRTC發現本地IP地址的能力,這防止了最常見形式的IP披露。然而,在某些配置中,Safari仍可能披露VPN IP。對關注WebRTC的iOS用戶最乾淨的解決方案是使用iOS版Brave,它提供全面的WebRTC防護以及Brave的所有其他私隱功能。對於macOS用戶,Safari的原生限制和Brave的加固WebRTC配置都在不需要任何擴充功能管理的情況下提供強大的保護。