參考文章:https://blog.csdn.net/loukundeboke/article/details/80012231
DNS 服務
DNS (Domain Name System) 域名系統
前提:
我們網路中都是使用 ip 地址通信,無論是訪問服務,還是不同主機間進行數據交換
ip 地址非常多,如果每個服務都通過 ip 地址來登錄的話,用戶就需要記住這些很複雜的 ip 地址,不方便用戶使用
就像保存在手機裡的電話號碼一樣,會有一個備註,通過這個備註就可以找到正確的相應聯繫人的電話
那域名解析跟這個實現差不多,在普通用戶中,我們用域名來訪問服務,域名就通過域名解析來獲取到 ip 地址
dns 服務就像電話簿,提供了可以查詢的域名到 ip 地址的映射關係
#注:在瀏覽器中輸入 www.taobao.com,敲回車的一瞬間,先去解析域名
#注:域名系統;提供域名解析;ip 對於用戶來說,使用沒有域名方便
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#
DNS服務軟體:bind
預設端口 udp協議 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
4. 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 地址給本地域名伺服器
…… 迭代查找,直到找到整個域名才返回
或者說 去根域查找,迭代查找, 直到找到為止
5. dns 服務的類型#
dns 服務的類型
- 快取域名伺服器
- 主域名伺服器
這上面定義了真正的 ip 到域名的映射關係 - 從域名伺服器
上面的數據域名映射 從主域名伺服器獲取
1、快取域名伺服器
也稱為 唯高速快取伺服器
通過向其他域名伺服器查詢獲得域名 ->IP 地址記錄
將域名查詢結果快取到本地,提高重複查詢時的速度
2、主域名伺服器
特定 DNS 區域的官方伺服器,具有唯一性,權威性
負責維護該區域內所有域名 ->IP 地址的映射記錄
3、從域名伺服器
也稱為 輔助域名伺服器
其維護的 域名 ->IP 地址記錄 來源於主域名伺服器
6. 域名伺服器配置#
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
7. 資源記錄類型#
資源記錄類型
(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 記錄不生效。
8. 小節#
DNS 服務
DNS (Domain Name System) 域名系統
#注:域名系統;提供域名解析;ip 對於用戶來說,使用沒有域名方便
FQDN 完全限定域名
www.baidu.com
域:baidu.com
主機名:www
域名分類
根類(.) 全國只有 13 組
頂級域 通用域名
.com 用於商業
.org 非盈利性組織
.net 網路服務
國家
.cn
.jp
.hk
.us
反向解析域 .arpa
二級域,三級域……
DNS 解析
正向解析 把域名解析成 ip
反向解析 把 ip 解析成域名
DNS 解析流程(面試)
1、先查找本地 hosts 文件 有沒有對應 ip 和域名的映射關係,存在就返回
2、hosts 文件裡沒有找到,就會在本地快取中查找,如果找到就返回結果 完成解析
3、本地快取中沒有找到,就會去本地域名伺服器查找,找到返回結果 完成解析
4、本地域名伺服器中沒有,如果設置了轉發查找 就會去轉發伺服器查找。如果沒有找到 就會去根域去找頂級域的伺服器 ip 地址,返回給本地域名伺服器,本地域名伺服器再去頂級域伺服器上 找二級域伺服器 ip 地址,依次類推 直到找到整個域名結果為止
5、DNS 迭代查詢之後,如果拿到結果 就返回給本地域名伺服器,本地域名伺服器再返回給客戶端
#注:DNS 客戶機迭代查找
DNS 服務簡單搭建
軟體包安裝
bind
bind-utils配置文件
主配置文件 /etc/named.conf
域配置文件 /etc/named.rfc1912.zones
數據目錄 /var/named 下面文件 需要給 named 用戶可讀權限DNS 端口 53 UDP
記錄類型
A 記錄 正向解析記錄
PTR 記錄 反向解析記錄
CNAME 別名
MX 郵件記錄
NS 授權 dns 伺服器泛域名解析
對於域 sc.com 添加:* A 192.168.0.39 # 注:只是對主機名的泛域名解析
表示主機名任意 123.sc.com # 注:abc.123.sc.com 不可以
abc.sc.com
常見的域名解析命令
ping
host
dig
nslookup
相關配置文件
/etc/hosts 指定域名和 ip 的對應關係,優先級最高
/etc/resolv.conf 指定 dns 伺服器地址
網路連通性都是訪問服務的前提條件