如何測試代理路徑中的 DNS HTTPS 與 SVCB 記錄

現代連線建立過程可能不只使用 A 和 AAAA 記錄。DNS HTTPS 與 SVCB 記錄可以公布替代端點、應用協定、連接埠和位址提示。代理請求表面正常時,用戶端與代理路徑仍可能做出不同的服務探索決策。

全球網際網路路線通過代理與解析器節點,並由大型檢查透鏡驗證多個替代服務端點

本指南提供一套用於已授權代理評估的可重現方法。並非所有用戶端都實作 HTTPS 或 SVCB;除非書面需求明確要求,否則缺少支援不應自動判定為缺陷。

公開來源說明:RFC Editor,RFC 9460《Service Binding and Parameter Specification via the DNS》,2023 年 11 月;另參考 IETF 2026 年 7 月網際網路草案《HTTP Header Fields for Proxying DNS SVCB Information》。網際網路草案仍在演進,不能視為正式標準。

先確定誰負責解析

測試前明確由哪個元件解析來源、哪個元件選擇替代端點:

路徑常見解析責任方必須觀察的證據
用戶端直連本機用戶端與設定的解析器查詢類型、目標、連接埠與 ALPN
HTTP CONNECT通常由代理解析 CONNECT authority,但實作可能不同傳給代理的 authority、代理側解析證據、最終 TLS 端點
SOCKS 本機 DNS用戶端解析後傳送位址本機 HTTPS/SVCB 行為和選中位址
SOCKS 遠端 DNS代理側解析器接收網域名稱遠端記錄支援、端點選擇與後援
瀏覽器自動化瀏覽器、作業系統、安全 DNS 政策和代理堆疊可能分擔瀏覽器網路記錄、解析器與代理證據

不要依產品名稱猜測責任方。命令列參數、瀏覽器政策、程式庫版本、PAC 規則或容器解析器都可能改變路徑。

建立已授權測試網域

使用自有網域名稱與端點。發布包含兩個 ServiceMode 選擇和安全預設後援的 HTTPS 或 SVCB 記錄。每個端點回傳相同無害測試物件,並帶不同端點標記。

保存完整設定:

fixture_revision
owner_name
record_type
ttl
priority
target_name
svc_params
address_records
certificate_names
endpoint_marker
published_at_utc

憑證必須對原始來源名稱有效;替代端點不會改變 HTTPS 來源身分。不要使用正式環境主機,以免失敗實驗影響真實流量。

建立路徑矩陣

使用相同用戶端組建測試:

  1. 直連對照;
  2. 使用網域 authority 的 HTTP CONNECT;
  3. 已驗證本機解析的 SOCKS;
  4. 已驗證遠端解析的 SOCKS;
  5. 相同代理產品與工作階段政策下的各目標區域。

保持 URL、方法、請求標頭、瀏覽器設定、帳號狀態、時間範圍和重試預算不變。請求標頭完整性測試可排除請求特徵變化造成的內容差異。

每次記錄觀察時間、路徑類型、出口區域、解析器身分、查詢類型、答案摘要、TTL、選中目標與連接埠、提供和協商的 ALPN、連線位址摘要、憑證結果、HTTP 狀態、端點標記、後援原因及耗時。

不需要原始位址時只保存摘要。不得記錄代理憑證、授權標頭、Cookie、權杖或個人資料。

執行四個受控階段

1. 無服務綁定答案的基線

確認所有路徑可透過一般位址記錄抵達預設 authority,證明後續故障來自探索行為,而不是基礎驗證、路由或 TLS。

2. 發布相容答案

加入一個受支援替代端點,等待文件化 TTL 邊界後複測。支援此機制的用戶端應按演算法選擇公布端點;不支援的用戶端應安全使用預設端點。

3. 加入不支援的 mandatory 參數

在受控區域發布一筆包含用戶端不支援 mandatory 參數的記錄。用戶端應忽略整筆不相容記錄,而不是部分套用。驗證後援並保存原因。

4. 調整優先順序並讓舊答案到期

將首選服務切換至第二端點,在 TTL 到期前後分別測試,以區分正常 DNS 快取、卡住的解析器與從不更新的代理路徑。相鄰故障復原可參考負面 DNS 快取復原指南

不只驗證 DNS 答案

正確答案不保證最終連線正確。還要確認:

  • 目標和連接埠來自可用的 ServiceMode 記錄;
  • 協商 ALPN 確實受端點支援;
  • TLS 對原始來源名稱驗證成功;
  • 端點標記與選中目標一致;
  • 後援不會悄悄改變區域或帳號脈絡;
  • 重新導向與應用內容仍有效。

若路徑協商不同協定,應另行執行TLS 工作階段恢復測試,不要把探索相容性與連線重用效能混成單一分數。

精確分類

  • 支援且已選擇: 使用相容記錄且連線驗證通過;
  • 支援但發生後援: 理解記錄,替代端點失敗,文件化後援成功;
  • 安全忽略: 用戶端不支援或記錄不相容,預設路徑成功;
  • 選擇陳舊: 超出允許快取範圍仍使用舊端點;
  • 參數遺失: 看見答案但未套用必要目標、連接埠或協定;
  • 身分失敗: 替代連線無法驗證原始來源身分;
  • 路徑不一致: 直連與代理採用不同解析責任方或政策;
  • 無法判定: DNS、代理、TLS 或端點證據不足。

不同不等於故障。遠端解析器可能合理取得不同區域答案,應依需求與端點標記判斷。

常見誤區

  • 只看 A/AAAA: 無法證明用戶端是否處理 HTTPS/SVCB 參數。
  • 認為 CONNECT 必然等於遠端 DNS: 瀏覽器與程式庫探索行為不同,必須觀察最終端點。
  • 使用公共網域測試: 未知 CDN 變化無法與代理不相容區分。
  • 把位址提示當成權威位址: 提示用於加速,不能取代協定規定的解析與驗證。
  • 每次都清空快取: 會掩蓋真實 TTL 行為;應分別標記冷啟動與熱快取階段。

驗收清單

  • 每條路徑的解析責任方均已記錄。
  • 測試網域具有有效憑證與無害端點標記。
  • 直連、CONNECT、SOCKS 本機 DNS 與遠端 DNS 分開測試。
  • 保存查詢類型、答案摘要、TTL、目標、連接埠、ALPN、TLS 與後援結果。
  • 相容記錄依需求運作或後援。
  • 不支援的 mandatory 參數被安全忽略。
  • 舊選擇在允許快取範圍內消失。
  • 區域差異得到解釋,而非被平均掩蓋。
  • 憑證、Cookie、權杖、使用者資料和不必要位址均已去識別化。

常見問題

每種住宅代理都必須支援 HTTPS 與 SVCB 嗎?

不必。需求取決於哪個元件負責 DNS 與服務選擇,應測試完整的用戶端—解析器—代理路徑。

不同 ALPN 是否證明代理改變了 DNS?

不能。用戶端能力、端點可用性、TLS 政策與後援都可能影響協商。

可以使用第三方正式網站測試嗎?

不建議。使用已授權測試網域才能控制記錄版本、端點標記、憑證和故障階段。

可以把網際網路草案視為最終標準嗎?

不能。草案可能變更或失效,只適合追蹤新實作;規範性預期應以已發布標準和產品文件為準。

合規說明

只測試你獲准使用的網域名稱、解析器、代理帳號、端點和區域。遵守合約、存取控制、隱私要求、DNS 與 HTTP 速率限制及供應商規則。不得竄改第三方 DNS、繞過限制或把實驗流量導向無權使用的基礎設施。