什麼是 WebRTC 洩漏
WebRTC 是支撐視訊通話、語音聊天與螢幕分享的瀏覽器技術。為了直接連通兩台裝置,它必須知道可到達它們的位址,因此會收集候選位址:本機網路位址、透過公開 STUN 伺服器發現的位址,以及中繼位址。
通常這並無害。洩漏發生在瀏覽器回報了本不該可見的位址時,最常見的是其餘流量走 VPN 時暴露了家庭連線的真實位址。網站從一般請求看到 VPN 位址,又從 WebRTC 看到真實位址,兩者不一致。
這不是惡意軟體,也不罕見。原因是 WebRTC 流量可能走與瀏覽器其他流量不同的路徑,尤其是 VPN 只涵蓋部分路由或只處理 IPv4 時。
這項測試如何運作
測試在你的瀏覽器中開啟一個 WebRTC 連線,指向公開 STUN 伺服器,並記錄收到的候選位址。每個候選依類型與位址描述:host 候選是本機位址,server-reflexive 候選是從外部看到的公開位址,relay 候選來自 TURN 伺服器。
接著把結果與一般網頁請求顯示的本連線 IP 位址比較。如果 WebRTC 公開位址一致,就沒有需要回報的差異。若不一致,頁面會列出該位址,由你判斷它是否應當可達。以隨機 .local 名稱出現的本機位址是瀏覽器為避免暴露私有網路位址而產生的。
測試有其限制。它檢查瀏覽器中的 WebRTC、IPv6 與時區訊號。它尚不檢查 DNS:DNS 洩漏測試需要不同方法,詳見下文。
在各瀏覽器中控制 WebRTC
沒有適用於所有瀏覽器的單一開關。以下選項是各瀏覽器實際提供的方式。關閉 WebRTC 會使瀏覽器內視訊通話無法使用,因此只在確實需要保護時變更。
Chrome 與 Edge
這兩個瀏覽器沒有面向使用者的 WebRTC 位址設定。管理員可透過 WebRtcIPHandlingPolicy 原則限制或停用非代理 UDP,擴充功能也可攔截 WebRTC 候選,但需要修改頁面的權限。使用 Chrome 或 Edge 最可靠的做法是使用會阻擋通道外流量的 VPN 用戶端。
Firefox
開啟 about:config,搜尋 media.peerconnection.enabled 並設為 false 可完全關閉 WebRTC。折衷選項是 media.peerconnection.ice.no_host,它停止分享本機位址而保留通話。這些屬於進階偏好設定,瀏覽器重新整理可能會重設。
Safari
Safari 預設會隱藏本機位址:以 .local 結尾的隨機 mDNS 名稱取代。Safari 沒有關閉 WebRTC 的簡單使用者設定,因此只要瀏覽器被允許使用 STUN 伺服器,仍可能收集到公開位址。
Brave
Brave 在設定中提供 WebRTC IP 處理原則,可選擇僅使用預設公開介面或停用非代理 UDP。選擇更嚴格的原則可防止 WebRTC 洩漏代理或 VPN 路徑之外的位址。
VPN 用戶端
許多 VPN 應用程式帶有 WebRTC 或洩漏保護選項,部分還有在通道中斷時切斷流量的終止開關。查看用戶端設定與文件。如果沒有此類控制,請在瀏覽器中限制 WebRTC。
IPv6 洩漏
只處理 IPv4 的 VPN 會讓 IPv6 流量留在原路徑上。如果網路可用 IPv6,支援它的網站在你 IPv4 走通道時仍可透過電信業者存取,兩個位址指向不同網路。
當 IPv4 與 IPv6 位址屬於不同網路時,隱私摘要會指出這一點。解決辦法取決於用戶端:在 VPN 設定中尋找 IPv6 選項,或當通道不承載 IPv6 時在連線上停用 IPv6。完全封鎖 IPv6 是一種取捨,因為純 IPv6 服務將無法存取。
DNS 洩漏
DNS 是把名稱轉換為位址的系統。開啟網站時,裝置會向解析器查詢該名稱對應的位址。如果這些查詢送往電信業者的解析器而不是經過通道,即使網頁流量已加密,業者也能看到你查詢的每個名稱。
使用 DNS-over-HTTPS 或 DNS-over-TLS 的加密 DNS 保護裝置與解析器之間的查詢,但本身不能避免你選擇的解析器與所用通道不一致。設定良好的 VPN 會讓 DNS 走通道,設定不良則可能洩漏。
本站尚未執行 DNS 洩漏測試。要正確實作需要查詢專用測試網域並觀察由哪個解析器回應,這已列為獨立功能。目前洩漏頁面只回報 WebRTC、IPv6 與時區不一致,並如實說明而不做猜測。
時區與語言不一致
瀏覽器會回報時區與語言清單,網站可以把它們與從 IP 位址推斷的國家比較。位於他國的 VPN 出口往往不改變瀏覽器時區與語言,因此這種不一致本身就可能暴露通道的使用。
這不同於位址被暴露意義上的洩漏,因為這些值本就對所有頁面開放。它是有用的背景:若想保持資料一致,可讓瀏覽器時區與語言和出口位置相符,或接受該組合並不尋常。
常見問題
連著 VPN,WebRTC 還會暴露真實 IP 嗎?
有可能。WebRTC 獨立於瀏覽器其餘流量收集候選位址,如果 VPN 沒有接管那部分流量,STUN 得到的公開位址就可能是你的真實位址。本頁測試正是為了顯示兩者是否一致。
關閉 WebRTC 會破壞視訊通話嗎?
使用 WebRTC 的瀏覽器內通話與螢幕分享會停止運作,包括許多會議工具。如果只想停止分享本機位址,請選擇更窄的設定,例如 Firefox 的 media.peerconnection.ice.no_host 或 Brave 中更嚴格的 WebRTC IP 處理原則。
什麼是 mDNS 候選位址?
它是瀏覽器隱藏在 .local 結尾隨機名稱後的本機位址,只能在你的網路內解析。Safari 預設使用,其他瀏覽器在部分情況下使用。看到 mDNS 名稱代表你的私有位址沒有以可讀形式交出。
能在本站測試 DNS 洩漏嗎?
尚不能。目前的測試涵蓋瀏覽器中的 WebRTC、IPv6 與時區訊號。DNS 洩漏測試需要專用測試網域與不同類型的查詢,它已在規劃中,而不是被悄悄略過。
什麼是 IPv6 洩漏?
通道保護 IPv4 時,IPv6 流量仍從原連線出去的情況。支援 IPv6 的網站可透過未受保護的位址存取你,因此 WebRTC 或 IPv6 請求看到的網路與 IPv4 看到的網路不同。
代理與 Tor 能防止 WebRTC 洩漏嗎?
不會自動防止。代理通常只涵蓋瀏覽器一般請求,WebRTC 能像繞過部分 VPN 一樣繞過它。Tor Browser 因此預設停用 WebRTC。無論使用何種工具,之後都應執行測試並確認位址是否一致。