一、域名系統(tǒng)概述
域名系統(tǒng)DNS(Domain Name System)是因特網(wǎng)使用的命名系統(tǒng),用來(lái)把便于人們使用的機(jī)器名字轉(zhuǎn)換成為IP地址。域名系統(tǒng)其實(shí)就是名字系統(tǒng)。為什么不叫“名字”而叫“域名”呢?這是因?yàn)樵谶@種因特網(wǎng)的命名系統(tǒng)中使用了許多的“域(domain)”,因此就出現(xiàn)了“域名”這個(gè)名詞?!坝蛎到y(tǒng)”明確地指明這種系統(tǒng)是應(yīng)用在因特網(wǎng)中。
二、常見(jiàn)的資源記錄類型
資源記錄類型 | 解釋 |
A記錄:地址記錄(Address) | 將域名FQND(Fully Qualified Domain Name:全限定域名)映射到IP 正向解析。“優(yōu)先級(jí)”中的數(shù)字越小表示級(jí)別越高,優(yōu)先級(jí)相同時(shí),表示輪循,可以達(dá)到負(fù)載均衡的目的,但需要服務(wù)商支持。 |
CNAME記錄:別名記錄,正式名記錄(Canonical Name) | 將A記錄指向的域名指向另外一個(gè)域名;A記錄優(yōu)先于CNAME記錄。即如果一個(gè)主機(jī)地址同時(shí)存在A記錄和CNAME記錄,則CNAME記錄不生效。 |
NS記錄:域名服務(wù)記錄(Name Service) | 解析服務(wù)器記錄。用來(lái)表明由哪臺(tái)服務(wù)器對(duì)該域名進(jìn)行解析。這里的NS記錄只對(duì)子域名生效。“優(yōu)先級(jí)”中的數(shù)字越小表示級(jí)別越高。NS記錄優(yōu)先于A記錄。即,如果一個(gè)主機(jī)地址同時(shí)存在NS記錄和A記錄,則A記錄不生效。這里的NS記錄只對(duì)子域名生效。 |
MX記錄:郵件交換器(Mail Exchanger) | 郵件交換器記錄,用于告知郵件服務(wù)器進(jìn)程將郵件發(fā)送到指定的另一臺(tái)郵件服務(wù)器?!皟?yōu)先級(jí)”中的數(shù)字越小表示級(jí)別越高,優(yōu)先級(jí)相同時(shí),表示輪循,可以達(dá)到負(fù)載均衡的目的,但需要服務(wù)商支持。 |
SOA記錄:起始授權(quán)記錄(Start Of Authority) | 指出當(dāng)前區(qū)域內(nèi)誰(shuí)是 主DNS服務(wù)器 |
AAAA記錄:(Ipv6)地址記錄(Address) | 把域名解析成IPv6地址。(FQDN–>IPv6) ;一個(gè)ipv4是32位,假設(shè)用A表示,那么128位長(zhǎng)度的IPv6就用AAAA來(lái)表示. |
PTR記錄:指針(Pointer),反向解析 | 這個(gè)一個(gè)比較特殊。從IP到FQDN的解析。 |
三、IP地址分類
類別 | 解釋 |
A類IP地址 | 一個(gè)A類IP地址由1字節(jié)的網(wǎng)絡(luò)地址和3字節(jié)主機(jī)地址組成,網(wǎng)絡(luò)地址的最高位必須是“0”, 地址范圍從1.0.0.0 ~126.0.0.0??捎玫腁類網(wǎng)絡(luò)有126個(gè),每個(gè)網(wǎng)絡(luò)能容納1億多個(gè)主機(jī)。 |
B類IP地址 | 一個(gè)B類IP地址由2個(gè)字節(jié)的網(wǎng)絡(luò)地址和2個(gè)字節(jié)的主機(jī)地址組成,網(wǎng)絡(luò)地址的最高位必須是“10”,地址范圍從128.0.0.0~191.255.255.255。可用的B類網(wǎng)絡(luò)有16382個(gè),每個(gè)網(wǎng)絡(luò)能容納6萬(wàn)多個(gè)主機(jī) 。 |
C類IP地址 | 一個(gè)C類IP地址由3字節(jié)的網(wǎng)絡(luò)地址和1字節(jié)的主機(jī)地址組成,網(wǎng)絡(luò)地址的最高位必須是“110”。范圍從192.0.0.0~223.255.255.255。C類網(wǎng)絡(luò)可達(dá)209萬(wàn)余個(gè),每個(gè)網(wǎng)絡(luò)能容納254個(gè)主機(jī)。 |
D類地址用于多點(diǎn)廣播(Multicast) | D類IP地址第一個(gè)字節(jié)以“l(fā)ll0”開(kāi)始,它是一個(gè)專門保留的地址。它并不指向特定的網(wǎng)絡(luò),目前這一類地址被用在多點(diǎn)廣播(Multicast)中。多點(diǎn)廣播地址用來(lái)一次尋址一組計(jì)算機(jī),它標(biāo)識(shí)共享同一協(xié)議的一組計(jì)算機(jī)。224.0.0.0到239.255.255.255用于多點(diǎn)廣播 。 |
E類 | E類IP地址 以“l(fā)lll0”開(kāi)始,為將來(lái)使用保留。240.0.0.0到255.255.255.254,255.255.255.255用于廣播地址。全零(“0.0.0.0”)地址對(duì)應(yīng)于當(dāng)前主機(jī)。全“1”的IP地址(“255.255.255.255”)是當(dāng)前子網(wǎng)的廣播地址 |
注意:數(shù)字0和 127不作為A類地址,數(shù)字127保留給內(nèi)部回送函數(shù),而數(shù)字0則表示該地址是本地宿主機(jī),不能傳送。 |
四、DNS查詢常用工具使用(dig、nslookup)
4.1、dig簡(jiǎn)單使用
4.1.1、簡(jiǎn)介
dig是一個(gè)在類Unix命令行模式下查詢DNS包括NS記錄,A記錄,MX記錄等相關(guān)信息的工具。
4.1.2、dig 命令默認(rèn)的輸出信息可以分為 5 個(gè)部分。
- 第一部分顯示 dig 命令的版本和輸入的參數(shù)。
- 第二部分顯示服務(wù)返回的一些技術(shù)詳情,比較重要的是 status。如果 status 的值為 NOERROR 則說(shuō)明本次查詢成功結(jié)束。
- 第三部分中的 “QUESTION SECTION” 顯示我們要查詢的域名。
- 第四部分的 “ANSWER SECTION” 是查詢到的結(jié)果。
- 第五部分則是本次查詢的一些統(tǒng)計(jì)信息,比如用了多長(zhǎng)時(shí)間,查詢了哪個(gè) DNS 服務(wù)器,在什么時(shí)間進(jìn)行的查詢等等。4.1.2、簡(jiǎn)單使用1)查詢CName記錄
$ dig qq.com CNAME
2)從指定的 DNS 服務(wù)器上查詢
$ dig qq.com CNAME @8.8.8.8
如果不指定 DNS 服務(wù)器,dig 會(huì)依次使用 /etc/resolv.conf 里的地址作為 DNS 服務(wù)器3)控制顯示結(jié)果,只顯示DNS解析處理的ip地址
$ dig +short qq.com
4)跟蹤整個(gè)查詢過(guò)程
$ dig +trace qq.com
5)查詢域的MX記錄
$ dig qq.com MX
6)查詢域的TTL記錄
$ dig qq.com TTL
7)僅查詢答案部分
$ dig qq.com +nocomments +noquestion +noauthority +noadditional +nostats
8)反向查詢
dig -x 8.8.8.8 +short
4.2、nslookup
4.2.1、簡(jiǎn)介
nslookup用于查詢DNS的記錄,查詢域名解析是否正常,在網(wǎng)絡(luò)故障時(shí)用來(lái)診斷網(wǎng)絡(luò)問(wèn)題
4.2.2、簡(jiǎn)單使用1)直接查詢
命令格式:nslookup domain[dns-server]$ nslookup www.163.com
2)查詢其它記錄(以CNAME為例,查詢其它記錄也一樣)
命令格式:nslookup -qt=type domain[dns-server]type: A –>地址記錄 AAAA –>地址記錄 AFSDB Andrew –>文件系統(tǒng)數(shù)據(jù)庫(kù)服務(wù)器記錄 ATMA –>ATM地址記錄 CNAME –>別名記錄 HINHO –>硬件配置記錄,包括CPU、操作系統(tǒng)信息 ISDN –>域名對(duì)應(yīng)的ISDN號(hào)碼 MB –>存放指定郵箱的服務(wù)器 MG –>郵件組記錄 MINFO –>郵件組和郵箱的信息記錄 MR –>改名的郵箱記錄 MX –>郵件服務(wù)器記錄 NS –> 名字服務(wù)器記錄 PTR ->反向記錄 RP –>負(fù)責(zé)人記錄 RT –>路由穿透記錄 SRV –>TCP服務(wù)器信息記錄 TXT –>域名對(duì)應(yīng)的文本信息 X25 –>域名對(duì)應(yīng)的X.25地址記錄$ nslookup -qt=CNAME www.163.com
五、域名到IP地址的解析過(guò)程
linux DNS解析優(yōu)先級(jí)配置
$ grep -C3 hosts /etc/nsswitch.conffiels:優(yōu)先級(jí)最高,查/etc/hosts文件dns:查dns域名服務(wù)器,對(duì)應(yīng)的dns配置文件/etc/resolv.confmyhostname:/etc/hosts和dns都解析不到IP時(shí),myhostname就起作用了,它可以把hostname,解析成自己范圍內(nèi)的IP地址,因此就可以ping通了。
可以通過(guò)下面命令查看hostname對(duì)應(yīng)的IP:
$ getent ahosts `hostname`$ ping `hostname`
最好在/etc/hosts文件中配置hostname跟本機(jī)ip映射
- 第①步:瀏覽器會(huì)檢查緩存中有沒(méi)有這個(gè)域名對(duì)應(yīng)的解析過(guò)的IP地址,如果緩存中有,這個(gè)解析過(guò)程就將結(jié)束。
- 第②步:如果用戶的瀏覽器緩存中沒(méi)有,瀏覽器會(huì)查找操作系統(tǒng)緩存中是否有這個(gè)域名對(duì)應(yīng)的DNS解析結(jié)果。其實(shí)操作系統(tǒng)也會(huì)有一個(gè)域名解析的過(guò)程,在Windows中可以通過(guò)C:WindowsSystem32driversetchosts文件來(lái)設(shè)置,Linux可以通過(guò)/etc/hosts來(lái)設(shè)置,你可以將任何域名解析到任何能夠訪問(wèn)的IP地址。如果你在這里指定了一個(gè)域名對(duì)應(yīng)的IP地址,那么瀏覽器會(huì)首先使用這個(gè)IP地址。
- 第③步:如何、怎么知道域名服務(wù)器呢?在我們的網(wǎng)絡(luò)配置中都會(huì)有”DNS服務(wù)器地址”這一項(xiàng),這個(gè)地址就用于解決前面所說(shuō)的如果兩個(gè)過(guò)程無(wú)法解析時(shí)要怎么辦,操作系統(tǒng)會(huì)把這個(gè)域名發(fā)送給這里設(shè)置的LDNS(即本地區(qū)的域名服務(wù)器)。這個(gè)DNS通常都提供給你本地互聯(lián)網(wǎng)接入的一個(gè)DNS解析服務(wù),在Windows下可以通過(guò)ipconfig/all查詢這個(gè)地址,如下圖所示。
在Linux下可以通過(guò)/etc/resolv.conf如下方式查詢配置的DNS Server,如下圖所示:
大約80%的域名解析都到這里就已經(jīng)完成了,所以LDNS主要承擔(dān)了域名的解析工作。
- 第④步:如果LDNS仍然沒(méi)有命中,就直接到Root Server域名服務(wù)器請(qǐng)求解析。
- 第⑤步:根域名服務(wù)器返回給本地域名服務(wù)器一個(gè)所查詢域的主域名服務(wù)器(gTLD Server)地址。gTLD是國(guó)際頂級(jí)域名服務(wù)器,如.com、.cn、.org等,全球只有13臺(tái)左右。
- 第⑥步:本地域名服務(wù)器(Local DNS Server)再向上一步返回的gTLD服務(wù)器發(fā)送請(qǐng)求。
- 第⑦步:接受請(qǐng)求的gTLD服務(wù)器查找并返回此域名對(duì)應(yīng)的Name Server域名服務(wù)器的地址,這個(gè)Name Server通常就是你注冊(cè)的域名服務(wù)器,例如你在某個(gè)域名服務(wù)提供商申請(qǐng)的域名,那么這個(gè)域名解析任務(wù)就由這個(gè)域名提供商的服務(wù)器來(lái)完成。
- 第⑧步:Name Server域名服務(wù)器會(huì)查詢存儲(chǔ)的域名和IP的映射關(guān)系表,正常情況下都根據(jù)域名得到目標(biāo)IP記錄,連同一個(gè)TTL值返回給DNS Server域名服務(wù)器。
- 第⑨步:返回該域名對(duì)應(yīng)的IP和TTL值,Local DNS Server會(huì)緩存這個(gè)域名和IP的對(duì)應(yīng)關(guān)系,緩存的時(shí)間由TTL值控制。
- 第⑩步:把解析的結(jié)果返回給用戶,用戶根據(jù)TTL值緩存在本地系統(tǒng)緩存中,域名解析過(guò)程結(jié)束。在實(shí)際的DNS解析過(guò)程中,可能還不止這10個(gè)步驟,如Name Server也可能有多級(jí),或者有一個(gè)GTM來(lái)負(fù)載均衡控制,這都有可能會(huì)影響域名解析的過(guò)程。
六、常用DNS地址
114.114.114.114:是國(guó)內(nèi)移動(dòng)、電信和聯(lián)dao通通用的DNS,解析成功率相對(duì)來(lái)說(shuō)更高,國(guó)內(nèi)用戶使用的比較多,速度相對(duì)快、穩(wěn)定,是國(guó)內(nèi)用戶上網(wǎng)常用的DNS。8.8.8.8:是GOOGLE公司提供的DNS,該地址是全球通用的,相對(duì)來(lái)說(shuō),更適合國(guó)外以及訪問(wèn)國(guó)外網(wǎng)站的用戶使用。114.114.114.114:公共DNS服務(wù)器IPv4地址180.76.76.76:百度公bai共DNS服務(wù)器IPv4地址223.5.5.5:阿里公共DNS服務(wù)器IPv4地址