环境

Windows11、VMware Workstation 16.2.2

系统

Red hat7.0

说明

作用及协议

  • 将域名解析成IP地址
    原因是我们数字不敏感,记不住这个ip地址,所以才有了域名解析服务
  • DNS服务既属于TCP协议也属于UDP协议,端口号为52号

解析方式

  • 正向解析:域名解析出IP

    正向解析文件中存储的记录称为A记录,A记录记录着域名和ip的映射关系

  • 反向解析:IP解析出域名

    反向解析文件中存储的记录称为PTR指针,PTR记录着IP和域名的映射关系

域的分类

  • 根域 :(·)
  • 国家域:中国(cn),香港(hk),英国(uk)
  • 顶级域(领域):商业用途(com),网络组织(net),教育(edu)
  • 二级域:个性化的名称,每个域的二级域都不一样
  • 主机名(用途):网页(www),邮件(mail)

DNS查询过程

第一步:客户机提出域名解析请求,并将该请求发送给本地域名服务器。

第二步:当本地域名服务器收到请求后,就先查询本地 缓存,如果 该纪录项,则本地 域名服务器就直接把查询 结果返回。

第三步:如果本地缓存中没该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根子域)主域名服务器地址。

第四步:本地服务器再向 一步返回 域名服务器发送请求,然后接受请求 服务器查询自己 缓存,如果没 该纪录,则返回相关 下级 域名服务器 地址。

第五步:重复第四步,直到找到正确纪录。

第六步:本地域名服务器把返回 结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。

递归查询和迭代查询

  • 递归查询:在该模式下DNS服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果DNS服务器本地没有存储查询DNS信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。

  • 迭代查询:DNS所在服务器若没有可以响应的结果,会向客户机提供其他能够解析查询请求的DNS服务器地址,当客户机发送查询请求时,DNS服务器并不直接回复查询结果,而是告诉客户机另一台DNS服务器地址,客户机再向这台DNS服务器提交请求,依次循环直到返回查询的结果为止。

部署

配置文件:

常用配置文件:

/etc/unbound/unbound.conf #主(全局)配置文件

/etc/unbound/local.d #子配置文件所在目录。其中的*.conf用于定义正向解析记录和反向解析记录以及设置转发

/etc/hosts #用于指定ip地址与主机名的映射关系

/etc/resolv.conf #为linux指定DNS服务器的IP地址配置文件

授权DNS服务器

检查是否安装成功

[root@Jw2031-122 ~]# rpm -qa |grep unbound
unbound-libs-1.4.20-19.el7.x86_64
unbound-1.4.20-19.el7.x86_64

示例⤵️

配置参数如图,根据如图配置

本机ip地址:192.168.22.150

服务器 完全合格域名 IP地址
授权DNS服务器 dns1.dyzx.edu 192.168.22.150
纯缓存DNS服务器 dns2.dyzx.edu 192.168.22.2
Web服务器 www.dyzx.edu 192.168.22.3
FTP服务器 ftp.dyzx.edu 192.168.22.3
邮件服务器 mail.dyzx.edu 192.168.22.4

/etc/unbound/unbound.conf

38 interface: 192.168.22.150 //设置监听网络接口

176 access-control: 192.168.22.0/24 allow //允许给某些地址提供解析[allow允许或拒绝refuse]

211 username: “” //改为空字串,表示任何用户均可访问

368 domain-insecure: “dyzx.edu” //跳过验证域’dyzx.edu’以避免信任验证失败

478 include: /etc/unbound/local.d/*.conf //指定其他可能的配置文件包含当前文件

在全局配置文件中配置正向和反向解析记录:

    # You can add locally served data with
     local-zone: "dyzx.edu." static
     local-data: "dyzx.edu. 86400 IN SOA dns1.dyzx.edu. root.dyzx.edu  1 1D 1H 1W 1H"
     local-data: "dns1.dyzx.edu.  IN        A       192.168.22.150"
     local-data: "dns2.dyzx.edu.  IN        A       192.168.22.2"
     local-data: "www.dyzx.edu.  IN         A       192.168.22.3"
     local-data: "ftp.dyzx.edu.  IN         CNAME   www.dyzx.edu."
     local-data: "mail.dyzx.edu.  IN        A       192.168.22.4"
     local-data: "dyzx.edu.  IN     MX  5   mail.dyzx.edu."
     local-data-ptr: "192.168.22.150        dns1.dyzx.edu"
     local-data-ptr: "192.168.22.2          dns2.dyzx.edu"
     local-data-ptr: "192.168.22.3          www.dyzx.edu"
     local-data-ptr: "192.168.22.3          ftp.dyzx.edu"
     local-data-ptr: "192.168.22.4          mail.dyzx.edu"

配置转发

任何一台DNS服务器能直接提供的解析记录都是有限的,当用户请求的解析记录超过了某台DNS服务器所能解析的范围时,就需要在该DNS服务器上设置转发功能,以便把超范围的用户解析请求转发给DNS服务器代为解析。

553 forward-zone:
554 name: "."
555 forward-addr: 8.8.8.8

测试:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
> set type=MX
> dyzx.edu
Server: 127.0.0.1
Address: 127.0.0.1#53

dyzx.edu mail exchanger = 5 mail.dyzx.edu.
> set type=cname
> ftp.dyzx.edu
Server: 127.0.0.1
Address: 127.0.0.1#53

ftp.dyzx.edu canonical name = www.dyzx.edu.
>
> 192.168.22.3
Server: 127.0.0.1
Address: 127.0.0.1#53

3.22.168.192.in-addr.arpa name = ftp.dyzx.edu.
3.22.168.192.in-addr.arpa name = www.dyzx.edu.