Domain-Name-System

DNS TTL 如何在鍊式 CNAME 配置中工作?

  • September 17, 2021

我有一個看起來像這樣的 DNS 配置:

www.example.com                 600  IN   CNAME prod.myzone.l2.company.example
prod.myzone.l2.company.example      600  IN   CNAME ssl-endpoint-12345.hostcorp.example
ssl-endpoint-12345.hostcorp.example 60   IN   A     192.0.2.4

所以鏈中前兩條 CNAME 記錄的 TTL 為 10 分鐘,最後一條 A 記錄的 TTL 為 1 分鐘

CNAME在prod.myzone.l2.company.example多個端點之間進行區域負載平衡,如果我的 DNS 提供商確定目前端點不健康,它會自動更新。出於這個原因,我想盡快將更改傳播到prod.myzone.l2.company.exampleCNAME。

如果我想減少客戶在prod.myzone.l2.company.example更改時看到的整體 TTL,僅減少prod.myzone.l2.company.example記錄的 TTL 就足夠了,還是我還需要減少www.example.com記錄上的 TTL?

TTLfor記錄的CNAME工作方式與其他記錄沒有任何不同。

讓我們想像一個遞歸解析器,上面的內容通過它。然後它用以下內容填充其記憶體:

  • www.example.com CNAME有效期為 600 秒
  • prod.myzone.l2.company.example CNAME有效期為 600 秒
  • ssl-endpoint-12345.hostcorp.example A60s 有效

如果有人稍後ssl-endpoint-12345.hostcorp.example A直接查詢,則適用 60 秒 TTL。

但是如果查詢是 for www.example.com,那麼解析器將看到它沒有A記錄,而是 CNAME,然後重用上述所有內容。

上面的 66 秒(例如)www.example.com仍然在解析器記憶體中,但ssl-endpoint-12345.hostcorp.example A不會再存在了,因此解析器必須執行新的 DNS 查詢來獲取該數據並記憶體它。

引用自:https://serverfault.com/questions/1077843