30秒認識DNS
裝置在開啟網站之前,必須先把 example.com 這樣的名稱轉換成IP位址。這是透過詢問 DNS解析伺服器 完成的,通常由你的網路業者提供。它能看到你查詢的每個網站名稱、查詢時間,以及你的IP位址。
什麼是DNS洩漏?
使用VPN時,這些查詢應該經過加密通道,送到VPN自己的DNS伺服器。DNS洩漏 指的是查詢繞過了通道,直接送到網路業者或其他外部DNS伺服器。
你的流量本身仍然是加密的,但DNS伺服器能看到你造訪過的所有網站清單,監看你連線的人也看得到。在部分國家,網路業者會利用DNS封鎖網站,所以DNS洩漏也可能讓被封鎖的網站即使開著VPN也打不開。
DNS洩漏不會改變網站看到的IP位址,而是把你造訪了哪些網站暴露給網路業者。所以光檢查IP是發現不了DNS洩漏的。
如何測試DNS洩漏
- 連上VPN。
- 開啟DNS洩漏測試。它會讓瀏覽器查詢幾個只有我們的測試伺服器能回應的隨機名稱,並記錄是哪些DNS伺服器送出查詢。
- 查看列出的DNS伺服器。
沒有洩漏: 每台DNS伺服器都屬於你的VPN服務商,或與VPN出口位於同一個國家。
有洩漏: 出現你自己網路業者的DNS伺服器,或VPN伺服器在其他國家,卻出現你所在國家的DNS伺服器。
Google(8.8.8.8)和Cloudflare(1.1.1.1)等大型公用DNS在全球都有伺服器。對於這類伺服器,測試結果還會顯示它們轉送的用戶端子網路,即使DNS伺服器本身看起來沒問題,這個子網路也可能洩漏你的真實網路。
DNS洩漏的常見原因
- VPN沒有設定自己的DNS。 有些VPN App、手動設定的WireGuard或OpenVPN,以及許多代理工具,都不會更改系統的DNS設定。
- Windows會同時詢問所有網路。 Windows會把DNS查詢送到所有網路介面卡,並採用最快的回應,所以查詢可能從一般連線出去。
- IPv6。 如果VPN只處理IPv4,經由IPv6的查詢會送到網路業者的IPv6 DNS伺服器。
- 瀏覽器的DNS-over-HTTPS。 Chrome、Edge和Firefox可以把查詢送到它們自己的加密DNS伺服器。這不算洩漏給網路業者,但它繞過了VPN的DNS,而且可能帶有你的真實位置。
- 代理工具使用「系統代理」模式。 Clash、V2Ray或Shadowsocks等用戶端在這種模式下通常只代理瀏覽器流量,系統仍在本機解析名稱。
- 路由器或網路業者攔截DNS。 有些網路業者會攔截所有53埠的流量,自行回應。
如何修正DNS洩漏
從第一步開始,每完成一步就重新測試一次。
- 開啟VPN的DNS洩漏防護。 大多數好的VPN App都有「DNS洩漏防護」、「僅使用VPN DNS」之類的設定。同時也開啟終止開關(Kill Switch)。
- 開啟IPv6洩漏防護,或在VPN App中封鎖IPv6。原因請見IPv4和IPv6的差別。
- 在VPN設定檔中指定DNS。 WireGuard請在
[Interface]區段加入一行DNS =。OpenVPN在Windows上請使用block-outside-dns。 - 代理工具請開啟TUN模式(Clash、sing-box等軟體稱為TUN模式、增強模式或VPN模式),並開啟它們的DNS處理功能,讓所有查詢都經過代理。
- 檢查瀏覽器的安全DNS設定。 在Chrome或Edge中,位置是 設定 > 隱私權和安全性 > 安全性 > 使用安全 DNS。可以關閉它,讓瀏覽器使用VPN的DNS,或改成你信任的DNS伺服器。
- 最後備案:把系統DNS改成公用DNS。 這無法解決洩漏給該DNS伺服器的問題,但可以讓網路業者看不到你的查詢。
接著再執行一次DNS洩漏測試。想完整檢查VPN,包括WebRTC和IPv6,請看如何檢查VPN是否有效。
常見問題
DNS洩漏危險嗎?
它暴露的是你造訪了哪些網站,而不是密碼或網頁內容,後者仍受HTTPS保護。不過,如果你使用VPN是為了隱私,DNS洩漏會讓VPN失去大半的意義。
DNS洩漏會暴露我的真實IP嗎?
間接會。網路業者的DNS伺服器看得到你的真實IP,而會轉送用戶端子網路的DNS伺服器,會告訴網站的DNS伺服器你大概在哪裡。不過網站本身無法透過DNS看到你的IP。
使用1.1.1.1或8.8.8.8能防止DNS洩漏嗎?
不能。這只是把看得到你查詢的對象從網路業者換成Cloudflare或Google,查詢仍可能繞過VPN。只有讓DNS經過VPN才能真正阻止洩漏。
為什麼測試結果顯示其他國家的伺服器?
大型DNS服務會從離你或離VPN伺服器最近的資料中心送出查詢,這個資料中心可能在鄰近國家。看一下網路名稱:如果是你的VPN服務商,或VPN伺服器附近的大型公用DNS,那就沒問題。