題幹與適用場景
團隊想在 DNS 發布服務綁定資訊,讓客戶端發現備用主機、連接埠、協定和 TLS 參數,並在支援時優先使用 HTTP/3。請說明 SVCB 與 HTTPS 記錄的關係、解析優先級、AliasMode、快取與安全邊界。RFC 9460 定義 SVCB 及面向 HTTP 的變體,但 DNS 提示不能取代憑證驗證、HTTP 語義或授權。
面試官考察點
- 是否知道 HTTPS 記錄是 SVCB 面向 HTTP 的變體。
- 能否區分 AliasMode 與 ServiceMode 及其 priority。
- 是否理解
alpn、port、ipv4hint、ipv6hint只是連線提示。 - 是否能說明 DNSSEC、DoH/DoT 與普通 DNS 的信任邊界。
- 是否會設計 TTL、回退、監控與撤銷流程。
回答前需要釐清的問題
先確認客戶端和解析器版本、目標是別名還是協定選擇、DNSSEC 與加密 DNS 部署、HTTP/3 回退要求,以及憑證驗證和可用性目標。若未指定,假設部分解析器不理解 HTTPS 記錄。
30 秒回答框架
把 HTTPS 記錄視為 HTTP 服務發現提示。priority 為 0 的 AliasMode 指向另一名稱並繼續查詢;非零 priority 的 ServiceMode 描述服務。alpn 和 port 幫助選擇連線,但不能取代 TLS 憑證與 HTTP 權限。解析失敗或協定不支援時回退到 A/AAAA、預設連接埠和已支援協定,並用 TTL 和監控控制切換。
分步驟深入解答
1. 區分兩種記錄
SVCB 是通用服務綁定記錄,HTTPS 是供 HTTP 客戶端使用的變體。兩者都帶 priority、target name 和鍵值參數;它們不是新的代理層,HTTP 仍遵守 RFC 9110。
2. 解釋 AliasMode 與 ServiceMode
AliasMode 使用 priority 0,把目前名稱別名到 target name,客戶端必須再查詢 target。ServiceMode 使用非零 priority 描述服務。多個 ServiceMode 按較小 priority 優先嘗試,但不支援的候選必須跳過。
3. 讀取參數但保留邊界
alpn 可宣布 h2 或 h3,port 可提供非預設連接埠,地址提示可減少額外查詢。提示可能過期或被網路策略阻斷,因此仍要解析 A/AAAA、完成 QUIC/TLS 握手並確認實際協定。
4. 設計回退
客戶端在錯誤預算內嘗試最低 priority 的可用服務,連線失敗或超時便嘗試下一個。HTTPS 查詢失敗時仍使用傳統 A/AAAA 和預設 HTTPS 連接埠。未知鍵不能被當作授權策略。
5. 管理快取與變更
TTL 決定遞迴解析器和客戶端保留提示的時間。切換主機或連接埠前先讓新目標可用,再灰度調整 TTL。刪除權威記錄不能立刻撤銷舊快取,因此緊急事件需要服務端阻斷或憑證措施。
6. 說明 DNS 與 TLS 安全關係
DNSSEC 驗證記錄完整性,DoH/DoT 保護查詢傳輸;兩者都不能取代 TLS 身份驗證。RFC 9460 的 DNS 提示不應比明文 HTTP 307 更受信任。客戶端仍須驗證憑證、SNI、ALPN 和 TLS 版本,不能授權未被憑證覆蓋的跨域主機。
7. 驗證與回滾
測試舊客戶端、AliasMode 鏈、多個 priority、未知鍵、過期快取、DNSSEC 失敗、h3 不可用、憑證不匹配和 IPv4/IPv6 單棧。監控握手時間、協定成功率、回退次數、錯誤率和隱私指標;回滾恢復舊記錄並等待 TTL,身份緊急事件使用服務端阻斷。
高品質示範回答
我會先把 HTTPS 記錄定位為服務發現提示。AliasMode 讓客戶端繼續查詢 target,ServiceMode 依 priority 描述候選;alpn、port 和地址提示只協助選擇,不授予存取權。h3 失敗時在預算內回退 h2 或傳統 A/AAAA 路徑,DNS 查詢失敗也要保持舊流程可用。
DNSSEC 保護記錄完整性,DoH/DoT 保護查詢傳輸,但 TLS 憑證、SNI、ALPN 和版本仍獨立驗證。TTL 灰度與監控應覆蓋協定成功、回退、憑證錯誤和快取。測試舊解析器、未知鍵、AliasMode、DNSSEC 失敗和 IPv6 單棧,回滾時先恢復舊記錄;緊急身份問題不能只等 DNS 快取消失。
常見錯誤
- 把 HTTPS 記錄當成 CNAME 或重定向替代品。
- 混淆 AliasMode、ServiceMode 和 priority。
- 把地址提示當成權威地址並跳過 A/AAAA。
- 認為
alpn=h3能跳過 QUIC/TLS 協商。 - 只部署普通 DNS 卻宣稱來源可信。
- 刪除權威記錄後忽略快取仍存在。
- 讓 target 沒有被憑證覆蓋。
追問及應對
追問一:為什麼 AliasMode 要再查 target?
它只表達名稱級別別名,不攜帶最終服務參數,因此必須查 target 才能得到 ServiceMode。
追問二:HTTPS 記錄能讓 CDN 主機繞過原域名憑證嗎?
不能。客戶端仍按連線名稱驗證憑證和 TLS 設定,CDN 必須提供可驗證的憑證。
追問三:DNSSEC 與 DoH/DoT 有何不同?
DNSSEC 驗證記錄來源與完整性;DoH/DoT 保護查詢傳輸隱私,兩者都不替代 TLS 身份驗證。
追問四:如何撤銷洩露的 target?
先服務端阻斷或撤銷憑證,再更新記錄並降低 TTL,因為舊快取不會立即消失。