电竞比分网-中国电竞赛事及体育赛事平台

分享

什么是CNAME?

 網(wǎng)絡搬運工 2024-09-01 發(fā)布于上海

先簡單的說下域名解析(懂的不用看啦): 在以前,人們用IP進行互訪,后來發(fā)現(xiàn)IP太多不好記憶,便有了域名,比如www.baidu.com,你一看就知道是百度搜索引擎,而不需要管他的服務器IP是多少,但是在最開始通信的時候,電腦路由器不認識域名,只認得IP啊,要怎么去獲得對應的IP呢,這時候有了域名解析,就是去請求網(wǎng)絡上的DNS服務器,讓他們來告訴你這個域名對應的IP是多少,至于請求DNS解析的詳細過程,大家就自行搜索啦,這里不贅述。

然后概括地說:

  • A記錄是將域名解析成IP,CNAME是將域名解析成另外一個域名。

在說CNAME之前,要提到一個東西叫 A記錄:

1.A記錄

A記錄,即Address記錄,它并不是一個IP或者一個域名,我們可以把它理解為一種指向關(guān)系:

  • 域名 www.xx.com → 1.1.1.1

  • 主機名 DD → 2.2.2.2

也就是當你訪問這些域名或者主機名的時候,DNS服務器上會通過A記錄會幫你解析出相應的IP地址,以達到后續(xù)訪問目的。所以A記錄是IP解析,直接將域名或主機名指向某個IP。

2.CNAME

CNAME記錄,也叫別名記錄,相當于給A記錄中的域名起個小名兒,比如www.xx.com的小名兒就叫www.yy.com好了,然后CNAME記錄也和A記錄一樣,是一種指向關(guān)系,把小名兒www.yy.com指向了www.xx.com,然后通過A記錄,www.xx.com又指向了對應的IP:

  • www.yy.comwww.xx.com → 1.1.1.1

這樣一來就能通過它的小名兒直接訪問1.1.1.1了。

這時候有人問:這不多了一步嘛,不嫌麻煩?

假如這個時候我又想給原域名取幾個小名兒,分別叫www.cc.comwww.kk.com那么存在下列指向關(guān)系:

  • www.yy.comwww.xx.com → 1.1.1.1

  • www.cc.comwww.xx.com → 1.1.1.1

  • www.kk.comwww.xx.com → 1.1.1.1

突然服務器的IP地址因為一些不可描述的原因要換了,不再是1.1.1.1了,換成了2.2.2.2,這時候你發(fā)現(xiàn),只要把www.xx.com的指向修改一下即可:

  • 域名 www.xx.com → 2.2.2.2

這時候你又發(fā)現(xiàn)了,原來他的小名兒不需要做更改,直接就能訪問服務器,因為他們都只指向了www.xx.com,服務器IP改沒改它們不管。

那么假如不用CNAME,直接做A記錄會怎樣?

  • www.yy.com1.1.1.1

  • www.cc.com1.1.1.1

  • www.xx.com1.1.1.1

  • www.kk.com1.1.1.1

那么當1.1.1.1更改的時候,全部相關(guān)A記錄指向關(guān)系都要做更改,這才麻煩

3.CNAME的應用

現(xiàn)網(wǎng)常用在CDN加速上,關(guān)于CDN大家可以看看下面這篇文章,通俗易懂:
漫話:如何給女朋友解釋什么是CDN?

舉個CDN的栗子

已將原圖中www.xdd.com修改為www.dd.cdn.com (2020-0720)
在這里插入圖片描述

假如你是DD公司老板,你公司中的一臺IP為1.1.1.1的服務器,注冊了域名為www.dd.com,要對外提供客戶訪問。隨著公司越做越大,訪問量也越來越多,服務器頂不住了,你去找CDN提供商購買CDN加速服務,這個時候他們要求你的域名做個CNAME指向他們給你的一個域名叫www.dd.cdn.com

  • www.dd.comwww.dd.cdn.com

當用戶訪問www.dd.com的時候,本地DNS會獲得CDN提供的CNAME域名:www.dd.cdn.com,然后再次向DNS調(diào)度系統(tǒng)發(fā)出請求,通過DNS調(diào)度系統(tǒng)的智能解析,把離客戶端地理位置最近的(或者相對負載低的,主要看CDN那邊智能解析的策略)CDN提供商的服務器IP返回給本地DNS,然后再由本地DNS回給客戶端,讓用戶就近取到想要的資源(如訪問網(wǎng)站),大大降低了延遲。

__
__
_

評論有博友問:

本地運營商的DNS服務器怎么知道一個域名的授權(quán)(權(quán)威)服務器是哪臺?這個域名應該在哪里取解析呢?
  • 首先公司會去找運營商買域名,比如CDN公司買了cdn.com這個一級域名(相對于a.cdn.comb.cdn.com來說cdn.com可以稱為一級域名,這個不用糾結(jié)哈),那么本地運營商會做一個NS記錄,即匹配到這個cdn.com后綴的域名都會到CDN服務提供商的DNS服務器做解析,即到權(quán)威服務器做解析。

其他記錄我有空再詳細補充下~

—————————————————————————————————

4.域名緩存問題

最近在公司遇到比較多的是關(guān)于域名緩存的問題,在這邊簡單說下。

  • 還是舉個栗子,你搭建了一個權(quán)威DNS服務器,這個服務器需要處理用戶終端發(fā)起的域名查詢請求,假如用戶量很大,訪問域名頻繁,或者說有些接口需要頻繁調(diào)用網(wǎng)站域名的情況,那用戶每次調(diào)用都去請求解析不太合理,降低了我調(diào)用的效率,DNS權(quán)威服務器也有負擔。所以一般DNS服務器在下發(fā)解析的時候是帶有緩存時間的(10min或者是1h,主要由DNS服務器決定),而且這個緩存是下發(fā)到用戶終端、用戶終端、用戶終端上的(重要的事情說三遍),其實用戶在訪問域名的第一步不是直接去查解析,而是查本地host文件,然后是看緩存是否有這個解析記錄,都沒有的話才去請求解析。

所以在公司比較常見到這種情況,內(nèi)網(wǎng)和公網(wǎng)域名切換的時效問題。

1.內(nèi)網(wǎng)環(huán)境:因為是在內(nèi)部局域網(wǎng)搭建的DNS,這個緩存時間我們是可控的,比如我們部署為1h緩存時間,如果有客戶的域名指向關(guān)系需要修改,比如客戶提供服務的機器ip要更換了,又想要做到快速切換,那我們需要在修改指向關(guān)系的一小時前把這個域名的緩存時間改成1min或者30s,那么一小時后可保證等所有用戶的緩存時間都過了再做域名指向關(guān)系的修改,那就能達到快速切換的效果。
在這里插入圖片描述

2.外網(wǎng)環(huán)境:前文有提到,用戶在請求DD公司域名前,是經(jīng)過了運營商的,那其實DD公司的緩存是下發(fā)給運營商的,實際用戶的緩存時間可能是由運營商下發(fā)的,那就會存在一個問題,我改了緩存時間為30s,但運營商那邊做了操作,下發(fā)給用戶是1h(可能是部分地區(qū)運營商統(tǒng)一修改的緩存時間,可以設定上時間的下限),那這咋整?那就莫得辦法了,但能保證的是九成以上的地區(qū)能夠在短時間內(nèi)切換,要想做到所有用戶終端秒級切換是不大可能了

在這里插入圖片描述

3.其他情況:像外網(wǎng)環(huán)境那樣中間經(jīng)過了運營商,其實就是相當于經(jīng)過了一個中間節(jié)點一樣,這個中間節(jié)點幫我們?nèi)プ稣埱筠D(zhuǎn)發(fā)或者是遞歸查詢,那其實內(nèi)網(wǎng)環(huán)境也存在這么一種情況,當清除了本地緩存解析還沒生效,那就要考慮下是否你的DNS SERVER是權(quán)威服務器還是中間節(jié)點了,比如圖中內(nèi)網(wǎng)也存在隔離環(huán)境DMZ區(qū)域,部分域名權(quán)威解析不一定在DMZ區(qū)域的服務器上做的,那這些域名就需要做一個轉(zhuǎn)發(fā)規(guī)則到這個域名的權(quán)威服務器上要解析,而這個解析就可能存在于DMZ區(qū)域的DNS服務器上了,那怎么看呢?
在這里插入圖片描述

拿我的windows來舉例,打開CMD,解析百度
在這里插入圖片描述
server address是 192.168.3.1 ,那這明顯是經(jīng)過了中間節(jié)點了(是我的網(wǎng)關(guān),路由器地址),下面還告訴你了非權(quán)威應答,說明是路由器幫我們?nèi)ミf歸請求解析了。

4.怎么清除本地緩存呢?

WINDOWS
可以這樣看緩存ipconfig /displaydns
也可以清緩存 ipconfig /flushdns

在這里插入圖片描述

LINUX服務器如果沒有安裝DNS服務的話一般是沒有緩存的,你的緩存可能來存在于其他程序或者是中間節(jié)點,中間節(jié)點地址可以通過nslookup隨便一個域名看到,就是你的DNS SERVER,登上去清除一下(例 BIND服務器可通過 rndc -s 127.0.0.1 flush 清除,其他視情況自行解決~~)。

5.既然請求解析的第一步是查本地host,那我們是否可以自己修改本地緩存呢?完全闊以

  • WINDOWS

  • 路徑 C:\Windows\System32\drivers\etc

在這里插入圖片描述
比如我加兩個映射關(guān)系

www.dd.com 1.1.1.1
baidu.com 1.1.1.1

在這里插入圖片描述
ping測試
在這里插入圖片描述
說明本地host是優(yōu)先的,但是nslookup的結(jié)果還是baidu.com的地址,我懷疑是nslookup這個程序直接跳過了查詢本地host這一步。

  • LINUX

和windows一樣直接修改就行了

[root@sword ~]# cat /etc/hosts
1.1.1.1 www.dd.com
1.1.1.1 baidu.com

DNS SERVER也是可以自己修改的,還有很多配置就先不寫了,看啥時候有空吧~

轉(zhuǎn)載請標明出處,謝謝~

歡迎提問。 2021.09.08

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多