DNS 請求可能繞過 VPN,洩露你正在造訪的網站。本文講解 DNS 洩露的成因,如何用 DNS over HTTPS 與正確設定堵住漏洞,並自測是否存在洩露。
DNS 洩露指的是:你的裝置把網域名稱查詢送到了你以為受保護的通道之外,通常是送往電信業者(ISP)的解析器,而非 VPN 的解析器,結果即使其餘流量都已加密,你造訪過的每一個網站仍然暴露無遺。要防止洩露,必須讓 DNS 走 VPN 通道(或使用 DoH、DoT 等加密解析器),停用明文回退,並堵住 IPv6 與 WebRTC 這兩條旁路。確認自己是否安全最快的方法,就是執行一次 DNS 洩露測試,看看出現的是哪些解析器 IP。
什麼是 DNS 解析,為何它涉及隱私
每次開啟網站時,瀏覽器都需要把像 browserinsight.net 這樣人類可讀的名稱轉譯成數字 IP 位址。負責這項轉譯的,就是網域名稱系統(DNS)。你的裝置會向一台 DNS 解析器發出詢問——如果你沒有改過設定,這台解析器通常由電信業者營運——解析器回傳位址後,連線才能建立。
隱私問題很直接:營運這台解析器的人,能看到一份按時間排列、記錄你查詢過的每一個網域的日誌。即使網頁本身透過 HTTPS 載入、內容已被加密,你想造訪的站台名稱仍會在 DNS 這一步暴露出來。預設情況下,傳統 DNS 查詢以明文形式經 UDP 53 連接埠傳輸,因此不僅解析器營運方看得到,網路路徑上的任何人都看得到。
可以把 DNS 想像成網際網路的通訊錄。即使把信封裡的信件加了密(HTTPS),如果你每次寄信都要大聲喊出收件人的名字,加密也幫不上太多忙。
什麼是 DNS 洩露
DNS 洩露是指你的 DNS 查詢逃出了你以為它正在使用的那條私密或加密通道。最常見的情形是:你連上 VPN,以為所有流量都會走通道,但作業系統卻仍然把 DNS 查詢直接送給電信業者的解析器。你的資料封包確實經過加密並透過 VPN 轉發,可電信業者照樣收到了一份完整、附時間戳記的造訪網域清單。這就讓 VPN 的意義大打折扣。
這種洩露之所以「隱蔽」,是因為表面上一切正常——網頁照常開啟。你只有透過測試才會發現它。
DNS 洩露的常見原因
- 作業系統解析器繞過通道。 作業系統有時會保留先前設定的 DNS 伺服器,或採用「誰先回應就用誰」的策略,讓 VPN 解析器與電信業者解析器賽跑,結果可能選錯。
- 分流(Split Tunneling)。 如果你只讓部分應用程式或網段走 VPN,被排除流量的 DNS——有時甚至是全部流量的 DNS——會直接送出去。
- IPv6 洩露。 許多 VPN 設定只承載 IPv4。如果你的網路支援 IPv6 而 VPN 對其視而不見,IPv6 的 DNS 查詢就會毫無保護地溜出去。
- 設定不當或過於簡陋的用戶端。 有些 VPN 應用程式不強制使用自己的 DNS,或在裝置休眠、切換網路、重新連線後沒能恢復保護。
- 透明 DNS 劫持。 部分電信業者會攔截所有 53 連接埠的流量並自行回應,無論你設定了哪台解析器——除非你的 DNS 已加密,否則必然洩露。
為什麼即使用了 VPN 仍需留意
人們常以為只要開了 VPN 就匿名了。VPN 確實會加密流量、對目標伺服器隱藏你的 IP,但它只有在用戶端被設定為攔截並通道化這些查詢時,才會保護 DNS。一旦 DNS 洩露,電信業者——以及與其共享資料的政府或廣告商——就能依網域重建你的瀏覽紀錄,儘管他們讀不到頁面內容。同樣的邏輯也適用於 WebRTC,它能完全獨立於 DNS、直接從瀏覽器內部暴露你的真實 IP,這條旁路可參閱我們的阻擋 WebRTC IP 洩露指南。
如果你想核實外界看到的真實 IP 與解析器是什麼樣子,BrowserInsight 的 IP 情報偵測會顯示伺服器實際看到的位址,VPN/代理偵測工具則會標示你的連線看起來像 VPN、代理,還是裸露的電信業者線路。
加密 DNS:DoH、DoT 與 DNSCrypt
從根本上修復明文 DNS 的辦法,是對查詢本身加密,讓網路路徑與試圖介入的電信業者都既讀不到也劫持不了。目前主流有三種方案:
- **DNS over HTTPS(DoH)**把 DNS 查詢封裝在普通的 HTTPS 流量中,走 443 連接埠。由於它看起來與普通網頁流量無異,很難被單獨辨識或封鎖,且已內建於現代瀏覽器(Chrome、Firefox、Edge)的「安全 DNS」功能中。
- **DNS over TLS(DoT)**把 DNS 包裹在 TLS 工作階段裡,使用專用的 853 連接埠。它清晰、便於在網路層監控,因此常用於作業系統層級與路由器層級的設定——但專用連接埠也更容易被敵對網路封鎖。
- DNSCrypt 是一種較舊的協定,用於在你與支援它的解析器之間對查詢進行認證與加密。如今較為小眾,但仍有部分隱私工具在使用。
明文 DNS、DoH、DoT 與 VPN 通道 DNS 比較
| 方式 | 傳輸 / 連接埠 | 是否加密 | 是否對電信業者隱藏查詢 | 備註 |
|---|---|---|---|---|
| 明文 DNS | UDP/TCP 53 | 否 | 否 | 預設;電信業者與路徑上的觀察者皆可見 |
| DNS over HTTPS(DoH) | HTTPS 443 | 是 | 是 | 與網頁流量混同;可依應用程式或瀏覽器設定 |
| DNS over TLS(DoT) | TLS 853 | 是 | 是 | 易於系統/路由器層級部署;連接埠可能被封 |
| DNSCrypt | UDP/TCP,自訂 | 是 | 是 | 小眾;可對解析器進行認證 |
| VPN 通道 DNS | VPN 通道內 | 是(經通道) | 是(對電信業者) | 電信業者一無所知;你需信任 VPN 的解析器 |
加密 DNS 能對網路隱藏你的查詢,但你選用的那台解析器依然看得到。請挑選你真正信任的解析器——從「我的電信業者無所不知」變成「某家會記錄日誌的第三方無所不知」,並不算升級。評估服務商時,可參閱我們的隱私工具比較。
值得信賴的 VPN 應如何處理 DNS
一款做得好的 VPN 不會只加密資料,它會從頭到尾掌控 DNS。具體來說,它應當:
- 在通道內執行自己的 DNS 解析器,讓查詢永不接觸電信業者。
- 強制所有 DNS 走通道,覆寫作業系統設定的伺服器,不存在任何洩漏到 53 連接埠的「搶答」競速。
- 處理或停用 IPv6,使 IPv6 查詢無法從僅承載 IPv4 的通道逃逸。
- 內建斷網保護開關(Kill Switch),在通道中斷時阻斷包括 DNS 在內的所有流量,而非退回到電信業者解析器「裸奔」。
如果一款 VPN 用戶端連這些都不保證,那麼在你親自測試之前,請把它當作有洩露風險來看待。
如何測試 DNS 洩露
測試只需一分鐘,卻是唯一能確認的方法。連上 VPN(或啟用加密 DNS)後,查看是哪些解析器 IP 在回應你的查詢。如果出現的是電信業者解析器,或一個地理定位指向你所在地區的位址,而非 VPN 的解析器,那就表示發生了洩露。至於那個解析器 IP 究竟能多精確地鎖定你的位置,又是另一個問題了——詳見IP 地理定位到底有多準。
在命令列中可以直接檢查解析過程:
# 單次查詢送往哪台解析器、回傳了什麼?
nslookup browserinsight.net
# Linux(systemd-resolved):依連結顯示實際使用的 DNS 伺服器
resolvectl status
# Linux/macOS:查看某次查詢回傳的解析器(看 SERVER:)
dig browserinsight.net
留意 Server: / SERVER: 這一行:它應當是你的 VPN 解析器或你選定的加密 DNS 服務商,絕不應是電信業者的裝置。想從瀏覽器一側看到外界如何辨識你,可在連線前後各執行一次 BrowserInsight 的 IP 偵測——IP 及其辨識出的網路應當發生變化。VPN/代理偵測則有助於確認流量是否從你預期的出口離開。
具體的防護步驟
作業系統
- 在系統層級設定可信解析器。 Windows 11 中,進入「設定 → 網路 → DNS 伺服器指派」即可啟用加密 DNS(DoH)。macOS 上可安裝 DNS 設定描述檔,或使用能強制 DoH/DoT 的用戶端。Linux 上可為
systemd-resolved設定DNSOverTLS=yes並明確填寫DNS=項。 - 若 VPN 不承載 IPv6,則停用 IPv6,或改用明確處理 IPv6 的 VPN,以免從 v6 通訊協定堆疊洩露。
- 啟用 VPN 斷網保護開關,讓通道中斷時無法退回到明文 DNS。
瀏覽器
- 在瀏覽器設定中開啟安全 DNS / DNS over HTTPS(Chrome:隱私權和安全性 → 安全性 → 使用安全 DNS;Firefox:設定 → 隱私權與安全性 → DNS over HTTPS)。
- 停用 WebRTC,或使用能阻止 WebRTC 暴露本機與公網 IP 的擴充功能——這是與 DNS 不同的另一條洩露途徑,但同樣會暴露你。
- 避免使用會悄悄更改你 DNS 或代理設定的擴充功能。
路由器
- 在路由器層面設定加密 DNS,可一次性保護網路內所有裝置,包括那些無法自行執行用戶端的裝置。這也是對抗電信業者透明 DNS 劫持最可靠的防線,因為查詢離開你的網路時就已經加密。
常見問題
使用 VPN 就能自動防止 DNS 洩露嗎?
不能。只有當 VPN 用戶端強制 DNS 走通道並妥善處理 IPv6 時,它才能防止洩露。許多洩露恰恰發生在 VPN 已連線期間,因為作業系統仍在悄悄使用電信業者的解析器。請務必測試,而不要想當然。
加密 DNS(DoH/DoT)和 VPN 是一回事嗎?
不是。加密 DNS 只保護網域名稱的查詢過程;它對網路隱藏了你查詢了哪些站台,卻不會加密其餘流量,也不會對你造訪的站台隱藏你的 IP。VPN 才負責後者。兩者相輔相成,不能互相取代。
用了 DoH,電信業者還能看到我的瀏覽紀錄嗎?
一旦你的 DNS 查詢用 DoH 加密,電信業者就再也讀不到這些查詢,也就無法據此記錄網域。但它仍可能從你連線的 IP 位址,以及 TLS 交握時送出的伺服器名稱(SNI)中推斷出部分目標。DoH 專門封堵的是 DNS 這條通道。
我怎麼知道自己實際在用哪台解析器?
執行 nslookup 或 dig 並查看 Server: 行,或在 Linux 上使用 resolvectl status。想快速從外部一眼看清,BrowserInsight 的 IP 偵測會顯示外界看到的 IP 與網路——連線 VPN 時,它應當與你的 VPN 相符,而非你家的電信業者。
DNS 洩漏暴露的是你自己的查詢給錯誤的解析器,但 DNS 解析同樣可以反過來被用在你身上:網站擁有者可以用一條 CNAME 記錄,把某個子網域別名指向追蹤者的伺服器,讓追蹤者的回應看起來像第一方。具體原理,以及哪些瀏覽器現在能識破它,見CNAME 偽裝:把追蹤者裝扮成第一方。

