如何測試代理路徑中的 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 來源身分。不要使用正式環境主機,以免失敗實驗影響真實流量。
建立路徑矩陣
使用相同用戶端組建測試:
- 直連對照;
- 使用網域 authority 的 HTTP CONNECT;
- 已驗證本機解析的 SOCKS;
- 已驗證遠端解析的 SOCKS;
- 相同代理產品與工作階段政策下的各目標區域。
保持 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、繞過限制或把實驗流量導向無權使用的基礎設施。