2013-06-19 31 views
33

由於Amazon Route 53允許您使用別名將A記錄或CNAME設置爲不同的子域名,因此我想知道現在A記錄和CNAME之間有什麼區別。Route53中的A Rec和CNAME之間的差別

爲了澄清我的問題,傳統NameServer中CNAME和A記錄之間的區別是隻有CNAME可以用來指向不同的子域,並且A記錄必須指向有效的IP地址。由於AWS Route53允許您使用具有A Rec或CNAME的子域名,因此它不會模糊兩者之間的區別。

回答

60

你的問題是相當有效的,但你用一個不太精確的方式使用「子域」這個詞。

實際上,您要詢問的是,Route 53,A記錄可以顯示引用來自其他域的完全限定主機名,或來自其自己域的主機名或子域, DNS,引用另一個主機名的唯一方法是使用CNAME,但這些不能在指向子域(「www.example.com」)的域頂部(「example.com」)進行配置。

一個別名,你說的,似乎是功能上等價的,但比CNAME更靈活,所以有區別嗎?

一個CNAME和別名之間的區別在於,CNAME仍然是正確的,標準的,普通DNS CNAME,它返回一個DNS查詢響應「嗨,你需要知道的是,真正(」 Ç anonical「)名稱您正在查找的服務器爲'x'」,根據具體情況,還可能包括目標主機的A記錄,或者可能不包括,要求客戶端進行第二次查找。

另一方面,別名是亞馬遜創建的一種巧妙的破解方式,它不會中斷協議,但當資源「Y」的A記錄爲「0」時,允許Route 53直接從資源「X」分發A記錄請求。別名還可以引用其他記錄類型,但它們引用的記錄類型必須相同,爲了討論的目的,我正在討論A記錄別名。

而且,這裏重要的缺點是別名實際上會返回A記錄 - 而不是對目標的引用,就像CNAME一樣。

問題在於,如果使用別名,則不能在該框中放置任何主機名。它必須是Route 53具有魔術掛鉤的域中的主機名,以便它可以檢索要提供的apprpriate A記錄 - 可以是您的區域中的另一個條目,也可以是S3,ELB或Cloudfront。這與CNAME記錄的工作方式是非常不同的,儘管淨效應似乎是相同的。

把其他東西放在那裏,然後The record set could not be saved because:- Alias Target contains an invalid value.試試吧。:)

當然,CNAME記錄沒有像這樣的限制...他們只是受限於設計在區域頂部的使用。

所以,實際上,別名和CNAME記錄沒有像您最初想象的那麼多重疊。在某些情況下,只有一個是可用的,任何一個人都可以工作的情況下,差異可能是微不足道的。

可以使用任何一種方法的別名的一個優點是別名從不需要2次DNS查詢,正如我上面提到的。它總是直接通過Route 53和相應的A記錄進行回答,其中CNAME(至少在引用不同頂級域中的主機名的情況下)可能需要兩次連續的DNS查找,這給Alias帶來了理論上的性能優勢,案件。

+2

哇 - 感謝這樣詳細的答案。我的理解用這個改進了很多。 – Scalable

+1

非常好。請考慮接受我的回答,除非有其他要點讓我澄清。 –

+1

只是爲了增加一點混淆,你可以有'別名cnames'。如果您希望cdn1.website.com,cdn2.website.com和cdn3.website.com都指向相同的第三方域,則可以將它們別名爲cdn.website.com,這將成爲網站的一個cname。 bestcdn.com。這樣做的好處是,如果cdn發生更改,而不是2個cname查找(內容加載延遲幾毫秒),則只有一個,並且只有一條記錄要更新。如果您要問爲什麼要使用多個cdn url來訪問同一個plce?這有時用於增加併發資產下載。 – KHobbits

1

我想你有錯誤的信息。亞馬遜Route53不允許A記錄與子域名。當我試圖把它設置爲一個域名,我得到一個錯誤:

The record set could not be saved because: 
- The Value field contains invalid characters or is in an invalid format. 

A記錄僅針對IP地址。

+0

感謝yegor256您的回覆 - 但是你應該試試這個: 設置別名:是的 ,使下面標有「別名目標」 ..一個文本框,你可以把一個子域..我一般把負載均衡器FQDN那裏。 所以我認爲我的問題是非常有效的。 – Scalable

+0

別名仍然是相應的'A'或'CNAME'記錄。他們所做的只是將DNS解析映射到其他服務。 – datasage

相關問題