Domain-Name-System

當將域從 A 記錄遷移到 CNAME 時順序很重要

  • April 7, 2019

我們正在將一些站點從其他提供商遷移到 AWS。我們目前的負載均衡器在單個 IP 上可用,因此所有 DNS 條目都是使用 A 記錄創建的,例如:

A example.com 192.0.2.0

您可能知道,AWS Elastic Load Balancer 已經為其負載均衡器提供了 A 記錄,因此這些站點是使用 CNAME 記錄創建的,例如:

CNAME example.com production-lb1-<numbers>.us-west-1.elb.amazonaws.com

我們以 900 秒的 TTL 設置了該記錄,我們還沒有看到它傳播出去

dig all example.com

是否有一些神奇的 DNS 內部機制可以阻止這樣的名稱衝突?IE 它不想創建 CNAME,因為 A 和 CNAME 會指向矛盾的資訊?

那麼這是否意味著我必須刪除 A 記錄然後添加 CNAME?DNS 控制器是否足夠聰明,不會在沒有任何指向的情況下丟棄我的站點?即當 CNAME 尚未啟動時,我真的不希望 A 名稱消失。想法?

  1. A 記錄TTL 是多少?例如,如果是 43200(12 小時),則舊記錄將在全球 DNS 記憶體中保留長達 12 小時。

對此的解決方案是在更改記錄之前提前將舊記錄上的 TTL 降低到 300(5 分鐘)左右。 2. 您不能在域根(又名頂點)中擁有CNAME。即example.com A 123.456.789.123有效,example.com CNAME production-lb1-...elb.amazonaws.com無效。這可能就是您的 DNS 伺服器忽略它的原因。

解決方案是將域遷移example.com到 AWS Route53,然後使用**ALIAS A**記錄而不是CNAME. 這樣請求example.com返回 ELB 的實際 IP 地址而不是 ELB 的 CNAME。這是一個微小但至關重要的區別。

不幸的是,僅當域和負載均衡器都在 AWS 上時,ALIAS 才有效。

請參閱此處:為什麼域的根不能是 CNAME

希望有幫助:)

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