24_linux筆記-DNS服務

cPen發表於2020-11-30


參考部落格
https://blog.csdn.net/loukundeboke/article/details/80012231

知識點1 DNS服務

DNS( Domain Name System) 域名系統

前提:
我們網路中都是使用ip地址通訊,無論是訪問服務,還是不同主機間進行資料交換
ip地址非常多,如果每個服務都通過ip地址來登入的話,使用者就需要記住這些很複雜的ip地址,不方便使用者使用

就像儲存在手機裡的電話號碼一樣,會有一個備註,通過這個備註 就可以找到正確的相應聯絡人的電話
那域名解析跟這個實現差不多,在普通使用者中,我們用域名來訪問服務,域名就通過域名解析來獲取到ip地址
dns服務就像電話簿,提供了可以查詢的域名到ip地址的對映關係

#注:在瀏覽器中輸入www.taobao.com,敲回車的一瞬間,先去解析域名

1、完全限定域名 FQDN

FQDN:Full Qualified Domain Name,完全限定域名,即每個域在全球網路都是唯一的;另外值得提到的一點是域並不是指諸如www.google.com這樣的域名,而google.com才是域
#注:www.music.163.com/		163.com是域,前面是主機名


安裝dns服務軟體包bind
[root@cPen_B ~]# yum install bind
#注:安裝後,資料存放在/var/named/下
[root@cPen_B ~]# cd /var/named/
[root@cPen_B named]# ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves

2、域的分類

一、根域(.) 全球13組根域名伺服器以英文字母A到M依序命名,域名格式為“字母.root-servers.net”
在/var/named/name.ca檔案中可以檢視		# 注:標識為.
二、頂級域
頂級域:頂級域(Top Level Domain,簡稱TLD)分為三類
     1> 通用頂級域:諸如 .com(商業機構) .org(非營利性組織) .net(網路服務機構)等
     2> 國家頂級域:諸如 .cn(中國) .uk(英國) .us(美國) .jp(日本) .hk
     3> 反向域(基礎建設頂級域):.arpa,即從IP到FQDN的反向解析	# 注:反向查詢
#注:正向域:從域名到ip; 反向域:從ip到域名
三、
二級域
三級域
www.sc.163.com	--> 頂級域.com  -->二級域163.com  -->三級域sc.163.com
#注:前面的www是它的主機名

3、DNS解析

正向解析	域名 --> ip
反向解析	ip --> 域名
常用命令域名解析命令:
1、Ping
[root@cPen_A ~]# ping www.baidu.com
PING www.a.shifen.com (14.215.177.38) 56(84) bytes of data.
64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=1 ttl=55 time=16.3 ms
#注:ping命令只能返回1個ip

2、host
安裝bind-utils軟體包
yum install bind-utils
[root@cPen_A ~]# host www.baidu.com
www.baidu.com is an alias for www.a.shifen.com.#注:為www.a.shifen.com取別名www.baidu.com
www.a.shifen.com has address 14.215.177.38	#注:ip地址
www.a.shifen.com has address 14.215.177.39

3、dig					#注:看的比較詳細,推薦
[root@cPen_A ~]# dig www.baidu.com
;; ANSWER SECTION:
www.baidu.com.		34	IN	CNAME	www.a.shifen.com.
www.a.shifen.com.	216	IN	A	14.215.177.38
www.a.shifen.com.	216	IN	A	14.215.177.39

4、nslookup
[root@cPen_A ~]# nslookup www.baidu.com
www.baidu.com	canonical name = www.a.shifen.com.	#注:查詢的時候會加上根域,平時感覺不到
Address: 14.215.177.38
Address: 14.215.177.39

#注:可以拿DNS實現分流的作用。將新機器的域名地址解析成2個ip
#注:負載均衡:把很多機器當做1臺機器使用。DNS可以做到負載均衡,把流量分發的很多機器
#注:高可用:1臺機器去服務 它跪掉了,高可用就是這臺機器跪掉了,把流量引導其他機器
#注:高可用	避免單點故障
#注:運維思想:備份、高可用。比如系統盤2塊,其中1塊跪掉了,另外一塊還能繼續服務
#注:負載均衡和高可用 一般一起存在
DNS服務軟體:bind
預設埠 upd協議 53號埠
[root@cPen_A ~]# less /etc/services 
domain          53/udp

示例:修改/etc/hosts檔案

[root@cPen_A ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@cPen_A ~]# ping localhost			#注:解析成127.0.0.1
PING localhost (127.0.0.1) 56(84) bytes of data.
[root@cPen_A ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1   www.baidu.com baid.com		#注:新增這一行
[root@cPen_A ~]# ping www.baidu.com
PING www.baidu.com (127.0.0.1) 56(84) bytes of data.	#注:解析成127.0.0.1
[root@cPen_A ~]# ping baid.com
PING www.baidu.com (127.0.0.1) 56(84) bytes of data.	#注:解析成127.0.0.1
#注:/etc/hosts檔案 解析時 優先順序最高

示例:解析網址

[root@cPen_A html]# pwd
/usr/share/nginx/html
[root@cPen_A html]# vim index.html
hello world
cPen
[root@cPen_A html]# ip a
inet 192.168.0.19/24 brd 192.168.0.255 scope global noprefixroute dynamic ens33
#Windows機器上
Windows:C:\Windows\System32\drivers\etc\hosts
#注:hosts檔案裡
# localhost name resolution is handled within DNS itself.
#	127.0.0.1       localhost
#	::1             localhost
192.168.0.39 www.ldj.com				#注:新增這一條
這樣在瀏覽器查詢 www.ldj.com 就會訪問到linux機器上的網址。www.ldj.com被解析成192.168.0.39

知識點2 DNS解析過程

DNS解析過程:
#注:面試題:當敲入www.baidu.com 發生什麼事情

1、先查詢本地hosts檔案,linux:/etc/hosts;  Windows:C:\Windows\System32\drivers\etc\hosts
可以解析就直接返回地址
2、hosts檔案不能解析,去看本地快取。如果有,則返回結果,沒有就進行下一步查詢
linux下域名快取:nscd服務
[root@cPen_A html]# yum install nscd
[root@cPen_A html]# service nscd restart		#注:清除快取 (重啟服務就是清除快取)
快取會有快取時間,快取多久可以指定的
#注:設定了DNS服務,但是設定了沒有生效,考慮1、快取 清除快取和2、/etc/hosts是否寫死
3、本地快取沒有找到,就會去請求本地的域名伺服器,本地域名伺服器有 就返回查詢結果
Linux下指定域名解析伺服器檔案 /etc/resolv.conf  (配置本地域名伺服器ip地址的檔案)
第1個指定的nameserver就是首選dns伺服器,剩下的都是備選dns伺服器
[root@cPen_A html]# vim /etc/resolv.conf 
# Generated by NetworkManager
nameserver 114.114.114.114						#注:可以指定多個ip 去解析ip
nameserver 192.168.0.1							#注:用nameserver指定
[root@cPen_A html]# dig www.baidu.com
;; SERVER: 114.114.114.114#53(114.114.114.114)		#注:訪問114.114.114.114 53號埠去解析ip
4、本地域名伺服器沒有找到相應記錄,如果設定轉發查詢,就會去轉發的伺服器上去查詢。如果沒有設定轉發,或者都沒有找到,就會去根域查詢 (迭代查詢)
本地DNS就把請求發至13臺根DNS,根DNS伺服器收到請求後會判斷這個域名(.com)是誰來授權管理,並會返回一個負責該頂級域名伺服器的一個IP。本地DNS伺服器收到IP資訊後,將會聯絡負責.com域的這臺伺服器。這臺負責.com域的伺服器收到請求後,如果自己無法解析,它就會找一個管理.com域的下一級DNS伺服器地址(qq.com)給本地DNS伺服器。當本地DNS伺服器收到這個地址後,就會找qq.com域伺服器,重複上面的動作,進行查詢,直至找到www.qq.com主機
#注:面試題:當敲入www.baidu.com 發生什麼事情 (DNS解析流程)
答:DNS解析流程
第1步 先去 本地hosts檔案(/etc/hosts)去找 ip和域名的對映關係。有就返回。沒有就去
第2步 本地DNS快取 找…。有就返回。沒有就去
第3步 本地的域名伺服器 (/etc/resolv.conf)找…。有就返回。沒有就
第4步 如果本地域名伺服器 設定轉發查詢,就會去轉發的伺服器 上找…, 有就返回。
沒有找到 或 沒有設定 就去 根域查詢,先在根域裡找到頂級域的伺服器ip地址 返回頂級域的ip地址給本地域名伺服器
本地域名伺服器再去頂級域名伺服器 找,沒有找到就返回二級域伺服器的ip地址,本地域名伺服器去二級域裡找,沒有找到 返回三級域的ip地址給本地域名伺服器……迭代查詢,直到找到整個域名才返回
或者說 去根域查詢,迭代查詢,  直到找到為止

知識點3 dns服務的型別

1、快取域名伺服器
2、主域名伺服器
這上面定義了真正的ip到域名的對映關係
3、從域名伺服器
上面的資料域名對映 從主域名伺服器獲取
1、快取域名伺服器
也稱為 唯快取記憶體伺服器
通過向其他域名伺服器查詢獲得域名->IP地址記錄 
將域名查詢結果快取到本地,提高重複查詢時的速度
3、主域名伺服器
特定DNS區域的官方伺服器,具有唯一性,權威性 
負責維護該區域內所有域名->IP地址的對映記錄
3、從域名伺服器
也稱為 輔助域名伺服器
其維護的 域名->IP地址記錄 來源於主域名伺服器

知識點4 域名伺服器配置

1、安裝bind、bind-utils

域名解析主程式
[root@cPen_B etc]# which named
/usr/sbin/named

2、配置檔案

如果沒有安裝bind-chroot軟體包
主配置檔案: /etc/named.conf   資料檔案位於:/var/named/目錄
[root@cPen_B etc]# less /etc/named.conf 

3、修改配置

1、 vim /etc/named.conf					# 注:全域性配置檔案
options {
        listen-on port 53 { 127.0.0.1; };	
        listen-on port 53 { any; };			# 注:將監聽地址改成any,設定監聽在本機的任意ip上
        allow-query     { localhost; };		# 注:允許訪問服務的主機 
        allow-query     { any; };			# 注:將許可權設定為any,允許任何人來查詢
zone "." IN {				# 注:定義根域
        type hint;			# 注:指定根域
        file "named.ca";	# 注:在named.ca裡去找 /var/named/named.ca
};
include "/etc/named.rfc1912.zones";			# 注:定義其他域
include "/etc/named.root.key";
2、域配置檔案 /etc/named.rfc1912.zones
新增域配置:
[root@cPen_B ~]# vim /etc/named.rfc1912.zones
zone "sc.com" IN {						# 注:新增sc.com域的解析
        type master;					# 注:主域名伺服器
        file ""sc.com"";				# 注:域名配置存放檔案 (域的解析從哪裡檔案裡去找)
        allow-update { none; };
};

4、配置指定域的解析檔案

目錄:/var/named
#注:注意許可權, named使用者要可讀
#注:注意屬組
[root@cPen_B named]# cp named.empty sc.com
[root@cPen_B named]# pwd
/var/named
[root@cPen_B named]# vim sc.com 
$TTL 3H							; 注:快取時間
@       IN SOA   sc.com. (			; 注:修改的地方
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
        AAAA    ::1
;注:A記錄	正向解析記錄	
dns A 192.168.136.129			;注:dns伺服器的IP地址
www A 192.168.136.129			;注:www伺服器的IP地址
*    A  192.168.136.123			;注:配置泛域名解析
;mail MX 192.168.136.129		;注:分號註釋
;dns  IN 600 A  192.168.136.129	;注:配置A記錄解析 快取時間為600s
[root@cPen_B named]# service named restart	# 注:重啟服務
[root@cPen_B named]# lsof -i:53				# 注:埠起來了
COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
named   1839 named   21u  IPv4  42519      0t0  TCP localhost:domain (LISTEN)
named   1839 named   22u  IPv4  42521      0t0  TCP cPen_B:domain (LISTEN)
named   1839 named   23u  IPv6  42523      0t0  TCP localhost:domain (LISTEN)
[root@cPen_B named]# dig www.sanchuang.com
;; SERVER: 192.168.136.2#53(192.168.136.2)
[root@cPen_B named]# cat /etc/resolv.conf 	# 注:指定本機的DNS伺服器
# Generated by NetworkManager
search localdomain
nameserver 192.168.136.2
[root@cPen_B named]# dig www.sc.com @192.168.136.129		# 注:用192.168.136.129去解析
;; QUESTION SECTION:
;www.sc.com.			IN	A

;; ANSWER SECTION:
www.sc.com.		10800	IN	A	192.168.136.129		# 注:解析成功

;; AUTHORITY SECTION:
sc.com.			10800	IN	NS	sc.com.
#設定反向域
[root@cPen_B named]# vim /etc/named.rfc1912.zones
zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};

[root@cPen_B named]# pwd
/var/named
[root@cPen_B named]# less named.loopback 

知識點5 資源記錄型別

(1)A記錄(Address)正向解析
A記錄是將一個主機名(全稱域名FQDN)和一個IP地址關聯起來。這也是大多數客戶端程式預設的查詢型別。
(2)PTR記錄(Pointer)反向解析
PTR記錄將一個IP地址對應到主機名(全稱域名FQDN)。這些記錄儲存在in-addr.arpa域中。
(3)CNAME記錄(Canonical Name)別名
別名記錄,也稱為規範名字(Canonical Name)。這種記錄允許您將多個名字對映到同一臺計算機。
(4)MX記錄(Mail eXchange)
MX記錄是郵件交換記錄,它指向一個郵件伺服器,用於電子郵件系統發郵件時根據 收信人的地址字尾來定位郵件伺服器。MX記錄也叫做郵件路由記錄,使用者可以將該域名下的郵件伺服器指向到自己的mail server上,然後即可自行操控所有的郵箱設定。
      當有多個MX記錄(即有多個郵件伺服器)時,則需要設定數值來確定其優先順序。通過設定優先順序數字來指明首選伺服器,數字越小表示優先順序越高。
(5)NS記錄(Name Server)
NS(Name Server)記錄是域名伺服器記錄,也稱為授權伺服器,用來指定該域名由哪個DNS伺服器來進行解析。
將網站的NS記錄指向到目標地址,在設定NS記錄的同時還需要設定目標網站的指向,否則NS記錄將無法正常解析
NS記錄優先於A記錄。即,如果一個主機地址同時存在NS記錄和A記錄,則A記錄不生效。

相關文章