文章 ·

DNS 泄露:開了代理,DNS 為什麼還在國內

打開網頁之前,設備要先把域名換成 IP,這一步叫 DNS 解析,由「解析器」完成。代理接管的是連接,DNS 查詢不一定跟着走。出口已經在海外,DNS 查詢卻還交給國內電訊商或國內的解析器,就是 DNS 泄露。它暴露的主要是你所在的網絡:解析器的運營者能看到你查了哪些域名,做檢測的網站能看到解析器在哪裏。ChatGPT、Claude 等平台會不會檢查這一項,沒有公開說明。

一圖看懂:出口在海外,DNS 卻在國內網頁連接經代理從海外出口出去;DNS 查詢不一定跟着代理走,仍交給國內的解析器,運營者看到你查的域名,網站看到解析器在國內。 一圖看懂:出口在海外,DNS 卻在國內 網頁連接 走代理 瀏覽器 代理軟件 海外出口 網站看到的是代理出口 DNS 查詢(先把域名換成 IP) 泄露 設備 不跟代理走 國內解析器 運營者看到你查的域名,網站看到它在國內 改法:讓 DNS 和出口在同一側。
代理接管的是連接,DNS 查詢不一定跟着走。出口和解析器不在一側,就是一組對不上的信號。

DNS 查詢是怎麼走的

一次解析通常分兩段:設備把域名發給解析器(電訊商下發的,或者你自己填的公共 DNS),解析器再去問這個域名的權威 DNS 伺服器。按 RFC 7871 的說法,權威伺服器收到的查詢大多來自中間的遞歸解析器,它看到的是解析器的地址,不是你的地址。

傳統 DNS 是明文的。Mozilla 的 DoH 說明寫到,這種連接沒有加密,第三方很容易看到你要訪問哪個網站。

泄露以後,誰能看到什麼

  • 解析器的運營者:看到你查詢的每一個域名。解析器屬於國內電訊商,這些記錄就留在國內。
  • 途經的網絡:明文查詢在路上能被看到,也可能被幹擾。防止途經設備干擾 DNS,是 RFC 8484(DNS over HTTPS,簡稱 DoH)列出的兩個設計目標之一。
  • 網站自己的權威 DNS:看到解析器的 IP,從而知道它在哪個國家、屬於哪家電訊商。檢測站就是這樣看到的。
  • 解析器附帶 ECS 時:有的解析器會把你 IP 的一段(EDNS Client Subnet,簡稱 ECS)一併轉給權威伺服器。RFC 7871 第 11.1 節寫明,這時你的網段對參與解析的所有伺服器、以及 DNS 包經過的網絡都可見;它建議 IPv4 截到 24 位、IPv6 截到 56 位,所以對方拿到的是你所在的一段地址,不是完整 IP。
一次 DNS 查詢的兩段,漏在哪第一段:設備把域名發給解析器,傳統 DNS 是明文,途經網絡能看到、能干擾,解析器的運營者看到每一個域名。第二段:解析器去問網站的權威 DNS,權威 DNS 看到的是解析器的 IP;解析器附帶 ECS 時,你 IP 的一段也會轉過去。 一次 DNS 查詢的兩段,漏在哪 你的設備 第一段:設備 → 解析器 傳統 DNS 是明文,途經網絡能看到 解析器 運營者看到每一個域名 屬於國內電訊商時,記錄留在國內 第二段:解析器 → 權威 DNS 帶 ECS 時,你的網段也轉過去 網站權威 DNS 看到解析器的 IP,不是你的 檢測站就是這樣看到解析器的 ECS:把你 IP 的一段轉給權威 DNS 建議 IPv4 截到 24 位、IPv6 截到 56 位 加密(DoH)防的是途經偷看,解析器照樣看得到。
泄露發生在第一段:查詢交給了哪家解析器,哪家就看到你查的域名,網站也從第二段看到它在哪。

平台這一側:AI 平台沒有公開風控細則,也沒有說明會不會看訪客的解析器。技術上,任何網站只要能看到自己域名的權威 DNS 查詢,就能用同樣的辦法看到解析器。所以 DNS 泄露不必當成「一定會被封」,但出口在海外、解析器在國內,本身是一組對不上的信號。

IP 判官怎麼檢測

首頁和 Claude、ChatGPT、Muse 專項檢測頁都會跑這一項,結果在「瀏覽器與連接檢查」的「DNS 解析器」一行:

  1. 頁面隨機生成一個 12 位字符串,訪問 4 個從沒人查過的子域名:隨機串-1.t.ipjudge.org 到 隨機串-4.t.ipjudge.org。
  2. 名字是全新的,任何快取裏都沒有,你的解析器只能去問 t.ipjudge.org 的權威 DNS。這台權威 DNS 是我們自己的探針伺服器,用獨立 IP,不經過 CDN。它記下每一個來查詢的伺服器地址;查詢裏帶着 ECS 的,也記下那段網段。
  3. 頁面取回這份記錄,用本地 IP 庫查出每個解析器所在的國家和網絡(ASN),再和打開本站的出口所在國家比較。最多列出 6 個解析器。

判定規則:

  • 出口不在中國大陸,而有解析器在中國大陸:泄露到國內。
  • 出口不在中國大陸,解析器附帶的 ECS 網段在中國大陸:同樣記為泄露到國內,因為你的真實網段被轉告給了網站的 DNS。
  • 解析器和出口在不同國家,但不屬於上面兩種:地區不一致,只作提示。
  • 國家一致:未泄露。這一次沒有記錄到任何解析器:未知,刷新重測即可。
IP 判官怎麼判 DNS 泄露頁面訪問全新的隨機子域名,解析器只能去問我們的權威 DNS 探針,探針記下解析器,再和出口所在國家比較。出口不在中國大陸而解析器或 ECS 網段在大陸,判泄露到國內;國家不同的其他情況只提示地區不一致;國家一致為未泄露;沒記錄到解析器為未知。 IP 判官怎麼判 DNS 泄露 檢測:每次都用新名字 隨機子域名 探針記錄 比對國家 名字全新,解析器只能來問我們的探針 判定 泄露到國內 出口不在大陸,解析器在大陸或 ECS 網段在大陸 地區不一致 國家不同的其他情況,只作提示 未泄露 解析器和出口國家一致 未知 這次沒記錄到解析器,刷新重測 探針只在記憶體裏保存記錄 10 分鐘,不寫入磁盤。
只有出口不在中國大陸、而解析器或 ECS 網段在大陸時,才判「泄露到國內」;「地區不一致」不扣分。

在 Claude 環境分裏,「DNS 走國內」在 20 分的「泄露」項中扣 8 分;Muse 註冊環境分扣 5 分。這是 IP 判官按常見風控信號定的權重,不是平台公佈的規則,完整說明見 判定方法。探針只在記憶體裏保存「隨機串 → 解析器」的對應關係 10 分鐘,不寫入磁盤。

常見原因

1. 代理只接管了連接,沒有接管 DNS。查詢照舊按系統設定發給路由器或電訊商下發的解析器。開了 TUN(虛擬網卡)模式也不一定夠:以開源代理內核 mihomo 為例,它的 TUN 文檔寫明,在 macOS、Windows 上無法自動劫持發往局域網地址的 DNS 請求;Android 開着 Private DNS 時,也無法自動劫持。

2. 域名先在本機解析,再交給代理。SOCKS5 協議允許把域名原樣交給代理(RFC 1928 裏的 DOMAINNAME 地址類型),但程式不一定這樣用。以 curl 為例,官方手冊寫明 --socks5(即 socks5://)在本地解析主機名,--socks5-hostname(即 socks5h://)才讓代理解析。

3. 按 IP 分流的規則觸發本機解析。規則要按目標 IP(例如某個國家的 IP 段)決定走向,軟件就得先知道域名對應的 IP。mihomo 的 規則文檔寫明,匹配到這類規則時會觸發 DNS 解析,加 no-resolve 參數可以跳過。解析用的是軟件裏配置的 DNS 伺服器,如果那是國內的解析器,查詢就留在國內。

4. fake-ip 一類模式的例外。fake-ip 模式下,本機程式查詢域名得到的是 fake-ip-range 網段裏的佔位地址,不是真實地址(mihomo DNS 文檔的示例配置用 198.18.0.1/16)。但列在 fake-ip-filter 裏的域名不分配佔位地址,要真正去解析;DNS 伺服器本身的連接走不走代理,也要另外設定(同一文檔裏的 respect-rules 讓 DNS 連接遵守分流規則,並要求同時配置 proxy-server-nameserver)。

5. 瀏覽器自己的安全 DNS。Chrome 幫助頁面寫明,安全 DNS 預設以自動模式開啓,查找出問題時會改用未加密方式。Chrome 企業政策 DnsOverHttpsMode 說明,沒有設定這項政策的非受管設備上,瀏覽器可能把加密查詢發給與系統解析器相關聯的服務商。系統解析器在國內,加密後可能還是同一家。Firefox 的 預設保護出問題時回退到預設解析器,VPN、家長控制或企業策略生效時會停用 DoH。另外,DoH 通常走 HTTPS 的 443 端口,只攔截 53 端口的 DNS 接管設定攔不到它。

6. IPv6 的 DNS。IPv6 網絡裏,路由器可以通過路由通告(RA)直接給設備下發 DNS 伺服器地址(RFC 8106)。只改了 IPv4 的 DNS,或者代理只接管了 IPv4,查詢就可能經 IPv6 發給電訊商的解析器。

怎麼改

目標是讓 DNS 和出口在同一側:要麼把域名交給代理,由出口那一側解析;要麼讓解析器的連接也經過代理。具體選項因軟件而異,原則如下:

  1. 在代理軟件裏找「遠程解析」「接管 DNS」一類的設定;用 TUN 模式時開啓 DNS 劫持,並留意上面提到的系統限制。
  2. 檢查有沒有按 IP 分流的規則讓域名在本機解析,以及軟件裏配置的 DNS 伺服器是誰、連接走不走代理。
  3. 瀏覽器的安全 DNS 二選一:交給代理處理,或者選一個自定義提供商,並確認這條加密連接本身經過代理。Chrome 在 設定 → 隱私與安全 → 安全 → 進階 → 使用安全 DNS,幫助頁面寫明選了自定義提供商就不會退回未加密模式;Firefox 在設定裏的 DNS over HTTPS 部分。
  4. 雙棧網絡上,確認代理同時接管了 IPv6,或者把 IPv6 的 DNS 設定一併改掉。
  5. 命令行裏用 curl 等支援 SOCKS5 的工具時,寫成 socks5h:// 這種讓代理解析的形式。
  6. 改完回 首頁 重測。每次檢測都用新的隨機子域名,不受上一次快取影響。

DNS 之外,WebRTC 也可能讓網頁拿到另一個 IP,見 WebRTC 泄露。

常見問題

顯示「地區不一致」算泄露嗎?

IP 判官不把它算作泄露,也不扣分。解析器和出口不在同一個國家時,按查詢來源位置返回結果的網站(例如 CDN)可能把你分到離出口較遠的伺服器,RFC 7871 的引言講的就是這個問題。

開了瀏覽器的安全 DNS,就不會泄露了嗎?

不一定。加密防的是途經網絡偷看和干擾,解析器的運營者照樣看得到查詢,Mozilla 也寫明它的 DoH 合作方能看到用户的查詢。自動模式還可能沿用系統解析器的服務商,出問題時回退到未加密查詢。以檢測結果為準。

頁面顯示的解析器 IP,為什麼和我設定的 DNS 地址不一樣?

探針記錄的是實際來查詢的那台伺服器的地址。你填的可能是路由器、代理軟件或公共 DNS 的服務地址,它們會轉給上游,或者從自己的其他伺服器出去查詢,所以看到的常常是另一個 IP。判斷時看國家和電訊商就夠了。

出口本來就在國內,會判 DNS 泄露嗎?

不會。「泄露到國內」只在出口不在中國大陸時判定;出口在國內、解析器在別處,只提示地區不一致。

ChatGPT、Claude 會因為 DNS 泄露封號嗎?

沒有公開資料能回答。平台看得最清楚的是你連接它時的出口 IP,見 ChatGPT、Claude 看到的是哪個 IP。DNS 泄露更直接的後果,是國內電訊商能看到你訪問的域名。修好它,是讓各項網絡信號保持一致、少暴露一些資訊;其他信號見 Claude 驗證的 6 個網絡信號。

想知道你自己的 IP 屬於哪一類?

免費檢測我的 IP