参考文章: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是域,前面是主机名

1
2
3
4
5
6
安装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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
常用命令域名解析命令
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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服务器

1
2
3
4
5
6
[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地址给本地域名服务器……迭代查找,直到找到整个域名才返回
或者说 去根域查找,迭代查找, 直到找到为止


5. dns服务的类型

dns服务的类型

  1. 缓存域名服务器

  2. 主域名服务器
    这上面定义了真正的ip到域名的映射关系

  3. 从域名服务器
    上面的数据域名映射 从主域名服务器获取

1、缓存域名服务器
也称为 唯高速缓存服务器
通过向其他域名服务器查询获得域名->IP地址记录
将域名查询结果缓存到本地,提高重复查询时的速度
2、主域名服务器
特定DNS区域的官方服务器,具有唯一性,权威性
负责维护该区域内所有域名->IP地址的映射记录
3、从域名服务器
也称为 辅助域名服务器
其维护的 域名->IP地址记录 来源于主域名服务器


6. 域名服务器配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
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.

1
2
3
4
5
6
7
8
9
10
11
12
#设置反向域
[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服务器地址
网络连通性都是访问服务的前提条件