如何測試不同代理市場的 GeoDNS 一致性

代理出口即使位於所需國家,DNS 仍可能把請求導向為另一區域選擇的基礎設施,造成額外延遲、不同 CDN 節點、不同目錄或不一致的故障表現。常見原因包括客戶端在本機解析、SOCKS 客戶端在本機與遠端解析之間切換,或共享遞迴解析器代表的地域與代理出口不同。
GeoDNS 測試不是要求所有市場回傳相同位址。區域差異可能完全合理。目標是證明每條解析路徑可預測、符合目標市場,並在業務要求時間窗內保持穩定。
只測試你有權使用的網域、代理容量與端點。
分開記錄四個位置
每個樣本分別記錄:客戶端執行位置、向權威服務查詢的遞迴解析器位置、目標服務看到的代理出口位置,以及 DNS 回傳並實際連線的 CDN/來源節點位置。
這些位置不同不代表系統一定故障。權威 DNS 可能依遞迴解析器調整答案;EDNS Client Subnet 也可能提供部分網路提示;網路拓撲距離同樣不等於地理距離。
先用住宅代理地域驗證指南單獨確認出口市場,不要把出口驗證與 DNS 結論混在一個欄位。
明確定義解析模式
- 本機解析: 客戶端先取得位址,再要求代理連線該位址。
- 代理端解析: 客戶端把主機名稱交給代理,由代理路徑解析。
- 指定解析器: 客戶端明確使用某個遞迴或加密 DNS 服務。
- 應用程式/瀏覽器預設: 執行環境可能自帶 DNS 快取、安全 DNS 或連線池。
在 curl 類型的 SOCKS 測試中,socks5:// 與 socks5h:// 不等價;後者要求 SOCKS 代理解析主機名稱。應從客戶端設定與實際網路證據確認模式,而不是依供應商標籤猜測。
區域比較前先執行代理 DNS 洩漏驗證,避免把意外本機查詢誤當成 GeoDNS 決策。
建立受控測試矩陣
選擇多個已授權且有可觀察區域交付行為的主機名稱,並加入一個預期不變的穩定對照。至少測試兩個代理市場和兩種解析模式。
固定主機名稱、記錄類型、請求路徑、代理方案、工作階段策略、客戶端版本、DNS 設定、並行、重試規則與觀察窗口。每次只改變一項:市場、解析器、本機/遠端解析、IPv4/IPv6 或冷/熱快取。
正確採集 DNS 證據
每次查詢保存 UTC 時間、查詢名稱、A/AAAA 類型、解析模式、可見的遞迴解析器、完整答案集合、CNAME 鏈、TTL、回應碼、可用的 DNSSEC 狀態、代理出口國家/區域/ASN 類型、實際連線位址、連線時間、TLS 主機名稱、HTTP 狀態與有限業務輸出指紋。
不得記錄代理憑證、完整 Cookie 或個人資料。若不需保留正文,可只保存大型回應樣本的雜湊。
控制快取與 TTL
冷快取與熱快取要分開測試:
- 啟動新的客戶端或瀏覽器情境;
- 僅清除你控制的測試解析器與應用快取;
- 查詢一次並記錄答案與 TTL;
- 在 TTL 內重複,不強制更新;
- TTL 到期後再次查詢;
- 使用新工作階段切換到下一代理市場。
不要反覆清除公共解析器,也不要因 TTL 很短就高頻請求權威基礎設施。若採購問題專門關注位址切換後的恢復,可參考代理 DNS TTL 故障轉移測試。
以集合方式比較答案
CDN 經常回傳多個有效位址且順序改變。應比較標準化集合,而不是逐行順序。記錄位址集合、位址族、網路前綴/ASN 重疊、CNAME 鏈、TTL 範圍、實際到達節點與業務結果。
不同市場回傳不同位址可以正確;不同市場回傳同一 Anycast 位址也可以正確。只有答案造成錯誤市場結果、異常延遲、不可達位址族,或超出已知政策的不穩定時,才是需處理的發現。
排除假差異
檢查瀏覽器是否重用舊連線而沒有新 DNS 查詢;客戶端是否使用 IP 字面值但在 TLS/HTTP 保留主機名稱;Service Worker 或應用快取是否未發起網路請求;NO_PROXY 是否繞過代理;兩組是否選擇不同位址族;Cookie、語言標頭或帳號設定是否覆蓋 IP 地域;以及重試是否跨越 TTL 或更換出口。
冷測試組之間關閉連線池,並用不敏感的唯一請求標記關聯 DNS、連線與回應證據。
設定驗收門檻
依業務需要定義:正確市場業務結果率、各市場/記錄類型 DNS 成功率、解析與連線 p50/p95、意外本機解析率、TTL 後過期答案率、IPv4/IPv6 可達差距、TTL 邊界外的答案波動,以及每個有效請求成本。
範例規則可要求遠端解析模式下本機 DNS 查詢為零、DNS 成功率至少 99%、兩個 TTL 週期後不再使用舊位址,以及正確區域輸出達 99%。這些只是範例,不是通用承諾。
疑難排解順序
- 獨立驗證代理出口。
- 證明主機名稱由客戶端還是代理解析。
- 記錄遞迴解析器與完整答案集合。
- 關閉連線池,以新情境重新測試。
- 分別比較 A 與 AAAA。
- 等待已記錄 TTL 後再判斷答案過期。
- 清除 Cookie 與地區狀態後比較業務輸出。
- 使用時間戳、匿名工作階段 ID 與標準化證據升級問題。
兩個公共解析器或資料庫意見不同,不足以證明供應商欺詐。應先定位層級並重現。
發布檢查清單
- [ ] 本機與代理端解析模式均明確設定。
- [ ] 客戶端、解析器、出口與服務節點位置分開保存。
- [ ] 冷/熱快取測試遵守 TTL。
- [ ] A 與 AAAA 獨立測試。
- [ ] 冷測試組之間關閉連線重用。
- [ ] 比較前將答案集合標準化。
- [ ] 除 IP 外也驗證區域業務結果。
- [ ] 日誌不含憑證、Cookie 與個人資料。
- [ ] 查詢量維持在授權與合理範圍。
常見問題
所有代理市場都應解析到不同位址嗎?
不應這樣假設。Anycast 或全球共享基礎設施可能回傳相同位址,關鍵是實際服務與業務結果是否符合市場要求。
遠端 DNS 能保證市場本地答案嗎?
不能。它改變了解析發生位置,但代理也可能使用集中式遞迴解析器,必須實際測量路徑與結果。
TTL 不同就表示有問題嗎?
不一定。答案、政策或遷移狀態不同都可能產生不同 TTL。只有違反預期或造成過期、失敗請求時才需升級。
每個市場查詢一次足夠嗎?
不足。應跨多個出口與時間窗抽樣。一次查詢只代表某一時刻的一個解析器與快取狀態。
合規說明
DNS 與代理測試僅用於合法、授權的品質驗證。遵守目標條款、DNS 查詢限制、隱私義務與區域資料規則。不得利用解析器操縱規避存取控制或隱藏禁止行為。