什麼是 DNS 洩漏?
每次開啟網站,都要先做一次 DNS 查詢,把 example.com 這樣的網域換成 IP 位址。平時由你電信業者的 DNS 伺服器來回答。開著 VPN 時,這些查詢應該走加密通道,交給 VPN 自己的 DNS 伺服器。
DNS 洩漏是指這些查詢沒走通道,直接發給了電信業者的 DNS 伺服器。網站看到的仍是 VPN 的 IP,但電信業者能看到你造訪的每一個網域,它的 DNS 過濾或遮蔽也照樣生效。
DNS 洩漏測試是怎麼做的
瀏覽器沒法直接告訴網頁它用的是哪個 DNS 伺服器。所以檢測時會讓你的瀏覽器去查詢幾個唯一的隨機網域,這些網域的 DNS 伺服器由檢測方自己執行,它會記下是哪些解析伺服器來查詢的。如果開著 VPN 時,這些解析伺服器屬於你的電信業者,就說明 DNS 洩漏了。
上面的檢測就是這樣做的:它會列出每個解析伺服器的電信業者、網路和國家,並和網站看到的 IP 做對比。測試網域和解析器 IP 會在 10 分鐘後刪除。
手動檢查你的 DNS 伺服器
在終端機(macOS、Linux)或命令提示字元(Windows,只能用 nslookup)裡執行下面任意一條指令。它們會讓一個公共服務告訴你:是哪個 DNS 解析伺服器的 IP 來查詢了它。
nslookup -type=txt o-o.myaddr.l.google.com
dig +short TXT o-o.myaddr.l.google.com
dig +short whoami.akamai.net怎麼看結果
- 用任意 WHOIS 或 IP 查詢服務,查一下回傳的位址屬於誰。
- 如果開著 VPN,它卻屬於你的電信業者,就說明 DNS 洩漏了。
- 如果它屬於你的 VPN 業者,或你自己選的解析服務,比如 Cloudflare(1.1.1.1)、Google(8.8.8.8),就沒有洩漏給電信業者。
- 這些指令測的是作業系統的 DNS。如果你的瀏覽器開了「安全 DNS」(DNS over HTTPS),瀏覽器會把查詢發給那個業者。
怎樣修復 DNS 洩漏
- 開啟 VPN App的 DNS 防洩漏功能(有時叫「使用 VPN 的 DNS」)和斷網保護(Kill Switch)。
- 確認 VPN 也能處理 IPv6,或者在網路介面卡上關閉 IPv6。IPv6 的查詢可能會繞過只支援 IPv4 的 VPN。
- 開啟加密 DNS:在 Chrome、Edge、Brave 裡開啟「安全 DNS」,或在 Firefox 裡開啟「DNS over HTTPS」,選擇 VPN 的解析服務或你信任的業者。
- 檢查路由器或手動設定的 DNS 有沒有覆蓋 VPN 的設定,然後再測一次。