文章 ·
DNS 泄露:開了代理,DNS 為什麼還在國內
打開網頁之前,設備要先把域名換成 IP,這一步叫 DNS 解析,由「解析器」完成。代理接管的是連接,DNS 查詢不一定跟着走。出口已經在海外,DNS 查詢卻還交給國內電訊商或國內的解析器,就是 DNS 泄露。它暴露的主要是你所在的網絡:解析器的運營者能看到你查了哪些域名,做檢測的網站能看到解析器在哪裏。ChatGPT、Claude 等平台會不會檢查這一項,沒有公開說明。
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。
平台這一側:AI 平台沒有公開風控細則,也沒有說明會不會看訪客的解析器。技術上,任何網站只要能看到自己域名的權威 DNS 查詢,就能用同樣的辦法看到解析器。所以 DNS 泄露不必當成「一定會被封」,但出口在海外、解析器在國內,本身是一組對不上的信號。
IP 判官怎麼檢測
首頁和 Claude、ChatGPT、Muse 專項檢測頁都會跑這一項,結果在「瀏覽器與連接檢查」的「DNS 解析器」一行:
- 頁面隨機生成一個 12 位字符串,訪問 4 個從沒人查過的子域名:
隨機串-1.t.ipjudge.org到隨機串-4.t.ipjudge.org。 - 名字是全新的,任何快取裏都沒有,你的解析器只能去問
t.ipjudge.org的權威 DNS。這台權威 DNS 是我們自己的探針伺服器,用獨立 IP,不經過 CDN。它記下每一個來查詢的伺服器地址;查詢裏帶着 ECS 的,也記下那段網段。 - 頁面取回這份記錄,用本地 IP 庫查出每個解析器所在的國家和網絡(ASN),再和打開本站的出口所在國家比較。最多列出 6 個解析器。
判定規則:
- 出口不在中國大陸,而有解析器在中國大陸:泄露到國內。
- 出口不在中國大陸,解析器附帶的 ECS 網段在中國大陸:同樣記為泄露到國內,因為你的真實網段被轉告給了網站的 DNS。
- 解析器和出口在不同國家,但不屬於上面兩種:地區不一致,只作提示。
- 國家一致:未泄露。這一次沒有記錄到任何解析器:未知,刷新重測即可。
在 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 和出口在同一側:要麼把域名交給代理,由出口那一側解析;要麼讓解析器的連接也經過代理。具體選項因軟件而異,原則如下:
- 在代理軟件裏找「遠程解析」「接管 DNS」一類的設定;用 TUN 模式時開啓 DNS 劫持,並留意上面提到的系統限制。
- 檢查有沒有按 IP 分流的規則讓域名在本機解析,以及軟件裏配置的 DNS 伺服器是誰、連接走不走代理。
- 瀏覽器的安全 DNS 二選一:交給代理處理,或者選一個自定義提供商,並確認這條加密連接本身經過代理。Chrome 在 設定 → 隱私與安全 → 安全 → 進階 → 使用安全 DNS,幫助頁面寫明選了自定義提供商就不會退回未加密模式;Firefox 在設定裏的 DNS over HTTPS 部分。
- 雙棧網絡上,確認代理同時接管了 IPv6,或者把 IPv6 的 DNS 設定一併改掉。
- 命令行裏用 curl 等支援 SOCKS5 的工具時,寫成
socks5h://這種讓代理解析的形式。 - 改完回 首頁 重測。每次檢測都用新的隨機子域名,不受上一次快取影響。
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