详解DNS服务

华子目录

  • 概述
    • 产生原因
    • 作用
    • 连接方式
  • 因特网的域名结构
    • 拓扑
    • 分类
    • 域名服务器类型划分
  • DNS域名解析过程
    • 分类
    • 解析图
      • 过程分析
      • 注意
  • 搭建DNS域名解析服务器
    • 概述
    • 安装软件
    • bind服务中的三个关键文件
  • 配置文件分析
    • 主配置文件共4部分组成
    • 区域配置文件
      • 作用
      • 区域配置文件示例分析
        • 正向解析
        • 反向解析
    • 数据配置文件
      • 正向解析资源文件
        • 模板内容分析
      • 反向解析资源文件
        • 模板内容分析
  • 域名解析记录分析(面试)
  • 实验1:配置==正向解析==DNS服务器
    • 准备工作
    • DNS解析配置
    • 注意
      • 1.三个配置文件中,只有数据配置文件存在==点网址==
      • 2.精简数据配置文件
  • 实验2:配置==反向解析==DNS服务器
    • 准备工作
    • DNS解析配置
  • 实验3:部署DNS主从服务器
    • 作用
    • 完全区域传送
      • 实验说明
      • 实验步骤
    • 增量区域传送
      • 注意

概述

产生原因

  • IP地址:是互联网上计算机唯一的逻辑地址,通过 IP 地址实现不同计算机之间的相互通信,每台联网计算机都需要通过 IP 地址来互相联系和分别,但由于 IP 地址是由一串容易混淆的数字串构成,人们很难记忆所有计算机的 IP 地址,这样对于我们日常工作生活访问不同网站是很困难的。
  • 基于这种背景,人们在 IP 地址的基础上又发展出了一种更易识别的符号化标识,这种标识由人们自行选择的字母和数字构成,相比 IP 地址更易被识别和记忆逐渐代替 IP 地址成为互联网用户进行访问互联的主要入口。这种符号化标识就是域名
  • 域名虽然更易被用户所接受和使用,但计算机只能识别纯数字构成的 IP 地址,不能直接读取域名。因此要想达到访问效果,就需要将域名翻译成 IP 地址。而 DNS 域名解析承担的就是这种翻译效果

作用

  • DNS(Domain Name System)是互联网上的一项服务,用于将域名IP地址进行相互映射,使人更方便的访问互联网
  • 正向解析:域名->IP
  • 反向解析:IP->域名

连接方式

  • DNS使用53端口监听网络
  • 查看方法DNS默认以UDP这个较快速的数据传输协议来查询,但没有查询到完整的信息时,就会再次以TCP协议重新查询,则启动DNS时,会同时启动TCP以及UDP的port53

因特网的域名结构

拓扑

  • 由于因特网的用户数量较多,则因特网命名时采用层次树状结构的命名方法。
  • 域名(domain name):任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名称
  • 域(domain):是名字空间中一个可被管理的划分结构。
  • 注意:域名只是逻辑概念,并不代表计算机所在的物理地点

分类

  • 国家顶级域名:采用ISO3166的规定,如:cn代表中国,us代表美国,uk代表英国,等等国家域名又常记为CCTLD(country code top-level domains,cc表示国家代码contry-code)

  • 通用顶级域名:最常见的通用顶级域名有7个

    • com (公司企业)
    • net (网络服务机构)
    • org (非营利组织)
    • int (国际组织)
    • gov (美国的政府部门)
    • mil (美国的军事部门)
  • 基础结构域名(infrastructure domain):这种顶级域名只有一个,即arpa用于反向域名解析,因此称为反向域名

域名服务器类型划分

  • 组织架构:
  • 在这里插入图片描述
  • 根域名服务器最高层次的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址本地域名服务器要对因特网上任何一个域名进行解析,只要自己无法解析,就首先求助根域名服务器。则根域名服务器是最重要的域名服务器。假定所有的根域名服务器都瘫痪了,那么整个DNS系统就无法工作。所以根域名服务器并不直接把待查询的域名直接解析出IP地址,而是告诉本地域名服务器下一步应当找哪一个顶级域名服务器进行查询。
  • 在这里插入图片描述
  • 在与现有IPv4根服务器体系架构充分兼容基础上,由我国下一代互联网国家工程中心领衔发起的“雪人计划”于2016年在美国、日本、印度、俄罗斯、德国、法国等全球16个国家完成25台IPv6(互联网协议第六版)根服务器架设,事实上形成了13台原有根加25台IPv6根的新格局,为建立多边、民主、透明的国际互联网治理体系打下坚实基础。中国部署了其中的4台,由1台主根服务器和3台辅根服务器组成,打破了中国过去没有根服务器的困境。
  • 顶级域名服务器负责管理在该顶级域名服务器注册的二级域名
  • 权限域名服务器负责一个“区”的域名服务器
  • 本地域名服务器本地域名服务器不属于域名服务器的层次结构,当主机发出DNS查询时,这个查询报文就发送给本地域名服务器(网卡里面配的IP地址,比如114.114.114.114和8.8.8.8
  • 为了提高域名服务器的可靠性DNS域名服务器都把数据复制到几个域名服务器来保存,如:
    • 主服务器:在特定区域内具有唯一性,负责维护该区域内的域名与 IP 地址之间的对应关系(真正干活的)
    • 从服务器:从主服务器中获得域名与 IP 地址的对应关系并进行维护,以防主服务器宕机等情况(打下手的)
    • 缓存服务器:通过向其他域名解析服务器查询获得域名与 IP 地址的对应关系,并将经常查询的域名信息保存到服务器本地,以此来提高重复查询时效率,一般部署在企业内网的网关位置,用于加速用户的域名查询请求

在这里插入图片描述
在这里插入图片描述

DNS域名解析过程

分类

  • 递归解析:DNS 服务器在收到用户发起的请求时,必须向用户返回一个准确的查询结果。如果 DNS 服务器本地没有存储与之对应的信息,则该服务器需要询问其他服务器,并将返回的查询结果提交给用户
  • 迭代解析(反复解析):DNS 服务器在收到用户发起的请求时,并不直接回复查询结果,而是告诉另一台 DNS 服务器的地址,用户再向这台 DNS 服务器提交请求,依次反复,直到返回查询结果

解析图

在这里插入图片描述

过程分析

  • 第一步:在浏览器中输入www . google .com 域名,本地电脑会检查浏览器缓存中有没有这个域名对应的解析过的 IP 地址,如果缓存中有,这个解析过程就结束。浏览器缓存域名也是有限制的,不仅浏览器缓存大小有限制,而且缓存的时间也有限制,通常情况下为几分钟到几小时不等,域名被缓存的时间限制可以通过 TTL 属性来设置。这个缓存时间太长和太短都不太好,如果时间太长,一旦域名被解析到的 IP 有变化,会导致被客户端缓存的域名无法解析到变化后的 IP 地址,以致该域名不能正常解析,这段时间内有一部分用户无法访问网站。如果设置时间太短,会导致用户每次访问网站都要重新解析一次域名
  • 第二步:如果浏览器缓存中没有数据,浏览器会查找操作系统缓存中是否有这个域名对应的 DNS 解析结果。其实操作系统也有一个[域名解析]的过程,在 Linux 中可以通过 / etc/hosts 文件来设置,而在 windows 中可以通过配置 C:\Windows\System32\drivers\etc\hosts 文件来设置,用户可以将任何域名解析到任何能够访问的 IP 地址。例如,我们在测试时可以将一个域名解析到一台测试服务器上,这样不用修改任何代码就能测试到单独服务器上的代码的业务逻辑是否正确。正是因为有这种本地 DNS 解析的规程,所以有黑客就可能通过修改用户的域名来把特定的域名解析到他指定的 IP 地址上,导致这些域名被劫持
  • 第三步前两步是在本地电脑上完成的,若无法解析时,就要用到我们网卡配置中的 “DNS 服务器地址” 了操作系统会把这个域名发送给这个本地 DNS 服务器每个完整的内网通常都会配置本地 DNS 服务器,例如用户是在学校或工作单位接入互联网,那么用户的本地 DNS 服务器肯定在学校或工作单位里面。它们一般都会缓存域名解析结果,当然缓存时间受到域名的失效时间控制的大约 80% 的域名解析到这里就结束了,后续的 DNS 迭代和递归也是由本地 DNS 服务器负责
  • 第四步:如果本地 DNS 服务器仍然没有命中,就直接到根 DNS 服务器请求解析
  • 第五步根 DNS 服务器返回给本地 DNS 域名服务器一个顶级 DNS 服务器地址,它是国际顶级域名服务器,如. com、.cn、.org 等,全球只有 13 台左右
  • 第六步本地 DNS 服务器再向上一步获得的顶级 DNS 服务器发送解析请求
  • 第七步:接受请求的顶级 DNS 服务器查找并返回此域名对应的 Name Server 域名服务器的地址这个 Name Server 服务器就是我要访问的网站域名提供商的服务器,其实该域名的解析任务就是由域名提供商的服务器来完成。 比如我要访问 www.baidu.com,而这个域名是从 A 公司注册获得的,那么 A 公司上的服务器就会有 www.baidu.com 的相关信息
  • 第八步返回该域名对应的 IP 和 TTL 值,本地 DNS 服务器会缓存这个域名和 IP 的对应关系缓存时间由 TTL 值控制
  • 第九步Name Server 服务器收到查询请求后再其数据库中进行查询,找到映射关系后将其IP地址返回给本地DNS服务器
  • 第十步本地DNS服务器把解析的结果返回给本地电脑,本地电脑根据 TTL 值缓存在本地系统缓存中,域名解析过程结束在实际的 DNS 解析过程中,可能还不止这 10 步,如 Name Server 可能有很多级,或者有一个 GTM 来负载均衡控制,这都有可能会影响域名解析过程
  • 在这里插入图片描述

注意

  • 客户端本地DNS服务器是属于递归查询,而DNS服务器之间使用的交互查询就是迭代查询

  • 在这里插入图片描述

  • 114.114.114.114是国内移动、电信和联通通用的DNS手机和电脑端都可以使用,干净无广告,解析成功率相对来说更高,国内用户使用的比较多,而且速度相对快、稳定,是国内用户上网常用的DNS。

  • 223.5.5.5223.6.6.6阿里提供的免费域名解析服务器地址

  • 8.8.8.8Google公司提供的DNS,该地址是全球通用的,相对来说,更适合国外以及访问国外网站的用户使用

在这里插入图片描述

搭建DNS域名解析服务器

概述

  • BIND:Berkeley Internet Name Domain ,伯克利因特网域名解析服务是一种全球使用最广泛的、最高效的、最安全的域名解析服务程序

安装软件

[root@server ~]# yum  install  bind  -y

bind的服务名是named

#启动bind服务
[root@server ~]# systemctl start named

bind服务中的三个关键文件

  • /etc/named.conf : 主配置文件,共59行,去除注释和空行之和有效行数仅30行左右,用于设置bind服务程序的运行

  • 在这里插入图片描述

  • /etc/named.rfc1912.zones区域配置文件(zone),用于保存域名和IP地址对应关系文件的所在位置,类似于图书目录,当需要修改域名与IP映射关系时需要在此文件中查找相关文件位置

  • 在这里插入图片描述

  • /var/named 目录:数据配置文件目录该目录存储保存域名和IP地址映射关系的数据文件

  • 在这里插入图片描述

配置文件分析

主配置文件共4部分组成

  • option{}

  • 在这里插入图片描述

  • 在这里插入图片描述

  • logging{}

  • 在这里插入图片描述

  • zone{}

  • 在这里插入图片描述

  • include

  • 在这里插入图片描述

  • 常用参数

[root@server ~]# vim  /etc/named.conf 

options {  # 全局参数设置
        listen-on port 53 { 127.0.0.1; }; # 重要,监听允许访问的ip与端口,可以使用IP地址、网段、所有主机(any)
        listen-on-v6 port 53 { ::1; };# 重要,监听允许访问的ipV6与端口
        directory       "/var/named";  # DNS数据目录位置,默认即可
        dump-file       "/var/named/data/cache_dump.db"; # 默认缓存文件位置,默认即可
        statistics-file "/var/named/data/named_stats.txt"; # DNS状态文件保存文件,默认即可
        memstatistics-file "/var/named/data/named_mem_stats.txt"; # 内存状态文件保存文件,默认即可
        secroots-file   "/var/named/data/named.secroots"; # 安全根服务器保存位置,默认即可
        recursing-file  "/var/named/data/named.recursing"; # 递归查询文件保存位置,默认即可
        allow-query     { localhost; };  # 重要,表示允许那些客户端进行访问,可以书写IP地址、网段、所有主机(any)
        recursion yes;   # 重要,允许递归查询,若删除则为迭代查询

        dnssec-validation yes; # 开启加密,默认即可

        managed-keys-directory "/var/named/dynamic";  # 指定目录中文件保存位置,用于管理密钥(DNSSEC)

        pid-file "/run/named/named.pid"; # pid文件保存路径,默认即可
        session-keyfile "/run/named/session.key"; # 会话密钥存储路径,自动生成,默认即可
   
   
logging {  # 指定日志记录的分类及其存储目录
        channel default_debug {   # 设置日志输出方式
                file "data/named.run";  # 产生日志信息文件的位置
                severity dynamic;   # 日志级别
        };
};

zone "." IN {    # zone 表示区域, "." 表示根,此处设置DNS根服务器的相关内容
        type hint;    # 表示服务器的类型为根
        file "named.ca";  # 用于保存dns根服务器信息的文件,存储路径/var/named/named.ca,一共有13台ipv4和13台ipv6根服务器信息
};

include "/etc/named.rfc1912.zones";  # 表示当前DNS服务器的区域配置文件位置
include "/etc/named.root.key";   # 密钥存储文件位置
  • 一般需要修改三部分内容
    • listen-on port 53 { 127.0.0.1; }; 即监听允许访问的ip与端口,可以使用IP地址、网段、所有主机(any)
    • allow-query { localhost; }; 表示允许哪些客户端进行访问,可以书写IP地址、网段、所有主机(any)
    • recursion yes; 允许递归查询,若删除则为迭代查询

区域配置文件

区域配置文件中含有正向解析模板和反向解析模板
在这里插入图片描述

作用

  • /etc/named.rfc1912.zones文件为bind服务程序的区域配置文件,用来保存域名与IP地址映射关系文件的位置,是一系列功能模板的集合

区域配置文件示例分析

正向解析
zone "localhost.localdomain" IN {  # 正向解析域名
        type master; # 服务类型:master表示主服务器,slave表示从服务器,hint根服务器
        file "named.localhost";  # 域名与IP地址规则文件存储位置
        allow-update { none; };  # 允许那些客户端动态更新本机域名解析
};

# allow-update:允许更新解析库内容,一般关闭
# allow-query: 允许查询的主机,白名单
# allow-tranfter : 允许同步的主机,白名单,常用
# allow-recursion: 允许递归的主机
反向解析
zone "1.0.0.127.in-addr.arpa" IN { # 表示127.0.0.1的反向解析配置,IP地址需要倒置书写,只需书写网段即可
        type master;  
        file "named.loopback";  # 反向解析的规则文件保存位置
        allow-update { none; };
};

在这里插入图片描述

数据配置文件

数据配置文件是在/var//named/目录下的文件

正向解析资源文件

在这里插入图片描述

模板内容分析

注意:推荐对模板文件进行局部修改

[root@server ~]# vim  /var/named/named.localhost 

$TTL 1D  # 设置生存周期时间,为1天,$表示宏定义
@       IN SOA  @ rname.invalid. (
# @ :表示zone域,现在表示域名,如baidu.com
# IN SOA : 授权信息开始
# rname.invalid. : 域名管理员的邮箱(不能使用@,使用点替代邮件分隔符@)
                                     0     ; serial  # 序列号,10位以内的整数
                                     1D      ; refresh # 更新频率为1天
                                     1H      ; retry   # 失败重试时间为1小时
                                     1W      ; expire  # 失效时间1周
                                     3H )    ; minimum # 缓存时间为3小时
		IN	NS	ns.域名.
ns		IN	A	域名解析服务器IP地址
www		IN	A   域名解析服务器IP地址
bbs		IN	A   域名解析服务器IP地址
mail	IN	A   域名解析服务器IP地址

# A:表示IPv4地址
# AAAA表示IPv6地址

在这里插入图片描述

反向解析资源文件

在这里插入图片描述

模板内容分析
[root@server ~]# vim  /var/named/named.loopback 

$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
IN		 NS       ns.域名.   # 域名服务器记录,注意结尾的点
ns		 IN	  A   域名解析服务器的IP地址
IP地址	PTR      域名.   # PTR 指针记录,用于反向解析

域名解析记录分析(面试)

  • A记录A 代表 Address,用来指定域名对应的 IP 地址,如将 item.taobao.com 指定到 115.238.23.xxx,将 switch.taobao.com 指定到 121.14.24.xxx
  • MX记录:Mail Exchange,就是可以将某个域名下的邮件服务器指向自己的 Mail Server,如 taobao.com 域名的 A 记录 IP 地址是 115.238.25.xxx,如果将 MX 记录设置为 115.238.25.xxx,即 xxx@taobao.com 的邮件路由,DNS 会将邮件发送到 115.238.25.xxx 所在的服务器,而正常通过 Web 请求的话仍然解析到 A 记录的 IP 地址
  • NS记录:为某个域名指定 DNS 解析服务器,也就是这个域名由指定的 IP 地址的 DNS 服务器取解析
  • cname 记录:Canonical Name,即别名解析。所谓别名解析就是可以为一个域名设置一个或者多个别名,如将 aaa.com 解析到 bbb.net、将 ccc.com 也解析到 bbb.net,其中 bbb.net 分别是 aaa.com 和 ccc.com 的别名
  • TXT 记录为某个主机名或域名设置说明,如可以为 ddd.net 设置 TXT 记录为 “这是 XXX 的博客” 这样的说明

实验1:配置正向解析DNS服务器

服务端IP客户端IP网址
192.168.80.129192.168.80.130www.openlab.com

准备工作

[root@server ~]# setenforce 0

[root@server ~]# systemctl stop firewalld

# 服务端及客户端都设置静态IP地址

[root@server ~]# yum  install bind -y

DNS解析配置

  • 第一步:服务端操作,配置DNS主配置文件
[root@server named]# vim  /etc/named.conf 

options {
        listen-on port 53 { any ;};
		……
        allow-query     { any ;};

在这里插入图片描述

  • 第二步:服务端操作,编辑区域配置文件,可以清空后添加,也推荐选择一个解析模板进行修改
[root@server ~]# vim  /etc/named.rfc1912.zones 
# 选择一个正向解析模版,进行修改,设置解析区域名及存储解析记录的数据文件名
zone "openlab.com" IN {
        type master;
        file "openlab.com.zone";  #习惯以.zone结尾
        allow-update { none; };
};

在这里插入图片描述
在这里插入图片描述

  • 第三步:服务端操作,编辑数据配置文件,推荐使用cp -a命令完全拷贝一份正向解析模板(named.localhost),再进行修改
[root@server ~]# cd /var/named
[root@server named]# ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
[root@server named]# cp -a named.localhost /var/named/openlab.com.zone
[root@server named]# ls
data     named.ca     named.localhost  openlab.com.zone
dynamic  named.empty  named.loopback   slaves

[root@server named]# vim  openlab.com.zone
$TTL 1D
openlab.com.    IN SOA  ns.openlab.com. andy.qq.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
openlab.com.    IN      NS      ns.openlab.com.
ns.openlab.com. IN      A       192.168.80.129
www.openlab.com.        IN      A       192.168.80.129
bbs.openlab.com.        IN      A       192.168.80.129
ftp.openlab.com.        IN      A       192.168.80.129
www1.openlab.com.       IN      CNAME   www.openlab.com.                                 

在这里插入图片描述

  • 第四步:服务端操作,重启服务(bind的服务名是named
[root@server named]# systemctl restart named
  • 第五步:测试,先将客户端的网卡配置文件中的DNS地址修改为服务端的IP地址,之后客户端的DNS解析申请就会交给服务端来完成

修改前:
在这里插入图片描述

[root@node1 ~]# vim  /etc/NetworkManager/system-connections/ens160.nmconnection      # 打开网卡配置文件

[ipv4]
address1=192.168.80.130/24,192.168.80.2
dns=192.168.80.129;
method=manual


[root@node1 ~]# nmcli  connection  reload   # 重载配置文件
[root@node1 ~]# nmcli  connection  up ens160  # 激活
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/2)

修改后:
在这里插入图片描述

[root@node1 ~]# nslookup  # 进入交互模式进行测试
> www.openlab.com
Server:         192.168.80.129
Address:        192.168.80.129#53

Name:   www.openlab.com
Address: 192.168.80.129
> ftp.openlab.com
Server:         192.168.80.129
Address:        192.168.80.129#53

Name:   ftp.openlab.com
Address: 192.168.80.129
> www1.openlab.com
Server:         192.168.80.129
Address:        192.168.80.129#53

www1.openlab.com        canonical name = www.openlab.com.
Name:   www.openlab.com
Address: 192.168.80.129



[root@node1 ~]# nslookup www.openlab.com   # 命令模式
Server:         192.168.80.129
Address:        192.168.80.129#53

Name:   www.openlab.com
Address: 192.168.80.129



# 或者使用下列方法测试
[root@node1 ~]# host www.openlab.com
www.openlab.com has address 192.168.80.129
[root@node1 ~]# dig www.openlab.com

; <<>> DiG 9.16.23-RH <<>> www.openlab.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43311
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: f3b9e3dd8b1afd750100000065ec0bf8274397cf4c5d43f1 (good)
;; QUESTION SECTION:
;www.openlab.com.               IN      A

;; ANSWER SECTION:
www.openlab.com.        86400   IN      A       192.168.80.129

;; Query time: 1 msec
;; SERVER: 192.168.80.129#53(192.168.80.129)
;; WHEN: Sat Mar 09 15:12:56 CST 2024
;; MSG SIZE  rcvd: 88

注意

1.三个配置文件中,只有数据配置文件存在点网址

2.精简数据配置文件

  • SOA起始授权记录:openlab.com. IN SOA ns.openlab.com. admin.openlab.com. (),表示openlab.com.这个域名指定dns服务器为ns.openlab.com.这台主机,以及其它附加信息
  • ns记录:openlab.com. IN NS ns.openlab.com. ,声明openlab.com.这个域名的dns服务器为ns.openlab.com.主机
  • 以上区别:NS记录仅仅只是声明该域内哪台主机是dns服务器,用来提供名称解析服务,NS记录不会区分哪台dns服务器是master哪台dns服务器是slave。而SOA记录则用于指定哪个NS记录对应的主机是master dns服务器,也就是从多个dns服务器中挑选一台任命其为该域内的master dns服务器,其他的都是slave,都需要从master上获取域相关数据
  • A记录:表示那台主机解析为什么IP地址
  • CNAME记录:别名,www1.openlab.com.主机解析为www.openlab.com.主机在查找对应IP
  • 精简原则:
    • 可以使用@替代域名,如@替代openlab.com.
    • 可以使用空格tab 重复继承上一行第一列 的值
    • 可以省略域名,会自动补全,如:www为www.openlab.com.

修改前
在这里插入图片描述

[root@server named]# vim  openlab.com.zone
$TTL 1D
@       IN SOA  ns.openlab.com. andy.qq.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN      NS      ns
ns      IN      A       192.168.80.129
www     IN      A       192.168.80.129
bbs     IN      A       192.168.80.129
ftp     IN      A       192.168.80.129
www1    IN      CNAME   www

修改后
在这里插入图片描述
测试

#服务端重启服务
[root@server named]# systemctl restart named
#进入客户端测试
[root@node1 ~]# host www.openlab.com
www.openlab.com has address 192.168.80.129

实验2:配置反向解析DNS服务器

服务端IP客户端IP网址
192.168.80.129192.168.80.130www.openlab.com

准备工作

[root@server ~]# setenforce 0

[root@server ~]# systemctl stop firewalld

# 服务端及客户端都设置静态IP地址

[root@server ~]# yum  install bind -y

DNS解析配置

  • 第一步:服务端操作,配置DNS主配置文件
[root@server named]# vim  /etc/named.conf 

options {
        listen-on port 53 { any ;};
		……
        allow-query     { any ;};

在这里插入图片描述

  • 第二步:编辑区域配置文件,选择一个反向解析模版进行修改
[root@server ~]# vim  /etc/named.rfc1912.zones  
zone "80.168.192.in-addr.arpa" IN {    # 区域名使用倒置的网段号+.in-addr.arpa组成
        type master;
        file "192.168.80.arpa";    # 数据配置文件名使用网段号+.arpa组成
        allow-update { none; };
};

在这里插入图片描述

  • 第三步:服务端操作,编辑数据配置文件,并使用cp -a命令完全拷贝一份反向解析模板(named.loopback),再进行修改
[root@server ~]# cd /var/named
[root@server named]# ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
[root@server named]# cp -a named.loopback 192.168.80.arpa
[root@server named]# ls
192.168.80.arpa  dynamic   named.empty      named.loopback
data             named.ca  named.localhost  slaves


[root@server named]# vim 192.168.80.arpa
$TTL 1D
@       IN SOA  ns.openlab.com. deny.qq.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN      NS      ns.openlab.com.
129     IN      PTR     ns.openlab.com.
129     IN      PTR     www.openlab.com.
129     IN      PTR     bbs.openlab.com.
129     IN      PTR     ftp.openlab.com.   

在这里插入图片描述

  • 第四步:服务端重启服务
[root@server named]# systemctl restart named
  • 第五步:客户端操作,测试
[root@node1 ~]# nslookup
> 192.168.80.129
129.80.168.192.in-addr.arpa     name = ftp.openlab.com.
129.80.168.192.in-addr.arpa     name = ns.openlab.com.
129.80.168.192.in-addr.arpa     name = www.openlab.com.
129.80.168.192.in-addr.arpa     name = bbs.openlab.com.
>   # ctrl+d退出



[root@node1 ~]# host 192.168.80.129
129.80.168.192.in-addr.arpa domain name pointer bbs.openlab.com.
129.80.168.192.in-addr.arpa domain name pointer www.openlab.com.
129.80.168.192.in-addr.arpa domain name pointer ns.openlab.com.
129.80.168.192.in-addr.arpa domain name pointer ftp.openlab.com.

实验3:部署DNS主从服务器

作用

  • DNS作为重要的互联网基础设施服务,保证 DNS 域名解析服务的正常运转至关重要,只有这样才能提供稳定、快速且不间断的域名查询服务
  • DNS 域名解析服务中,从服务器可以从主服务器获取指定的区域数据文件,从而起到备份解析记录负载均衡的作用,因此通过部署从服务器可以减轻主服务器的负载压力,还可以提升用户的查询效率
  • 注意:
    • 主从DNS服务器时间同步必须保持一致性
    • 主从服务器的bind包最好使用同一版本

完全区域传送

  • 一个区域文件复制到多个从服务器上的过程称为区域传送
  • 主服务器的所有信息全部复制到从服务器中,称为完全区域传送,即复制整个区域文件

实验说明

设备IP系统
主服务器server192.168.80.129RHEL9
从服务器node1192.168.80.130RHEL9
客户端node2192.168.80.131RHEL9

实验步骤

  • 第一步:两个服务器servernode1恢复快照,安装软件,设置静态IP
[root@server ~]# setenforce 0

[root@server ~]# systemctl stop firewalld

[root@node1 ~]# setenforce 0

[root@node1 ~]# systemctl stop firewalld

# 服务端及客户端都设置静态IP地址

[root@server ~]# yum  install bind -y

[root@node1 ~]# yum  install bind -y
  • 第二步:主服务器server端操作,设置DNS主配置文件
[root@server ~]# vim  /etc/named.conf 
options {
        listen-on port 53 { 192.168.80.129; };  # 可以该为本机IP或any
        .......
        allow-query     { any; };

在这里插入图片描述

  • 第三步:主服务器server操作,设置区域配置文件
[root@server ~]# vim  /etc/named.rfc1912.zones 
zone "openlab.com" IN {
        type master;
        file "openlab.com.zone";
        allow-transfer { 192.168.80.130; };  #同步给从服务器(括号里面是从服务器的IP地址)   
};

# 重点:改为同步模式(传递模式),格式为allow-transfer { 从服务器的IP地址; };

在这里插入图片描述

  • 第四步:主服务器server端操作,编辑数据配置文件,并使用cp -a命令完全拷贝一份正向解析模板(named.loopback),再进行修改
[root@server ~]# cd /var/named
[root@server named]# ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
[root@server named]# cp -a named.localhost openlab.com.zone
[root@server named]# ls
data     named.ca     named.localhost  openlab.com.zone
dynamic  named.empty  named.loopback   slaves


[root@server named]# vim  openlab.com.zone 
$TTL 1D
openlab.com.    IN SOA  ns.openlab.com. deny.qq.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
openlab.com.    IN      NS      ns.openlab.com.
openlab.com.    IN      NS      slave.openlab.com.  #添加从服务器的域名

ns.openlab.com. IN      A       192.168.80.129
slave.openlab.com.      IN      A       192.168.80.130   #添加从服务器域名对应的IP地址

www.openlab.com.        IN      A       192.168.80.129
ftp.openlab.com.        IN      A       192.168.80.129
bbs.openlab.com.        IN      A       192.168.80.129          

在这里插入图片描述

  • 第五步:主服务器server端操作,重启服务
[root@server named]# systemctl restart named
  • 第六步:从服务器node1端操作,修改主配置文件
[root@node1 ~]# vim  /etc/named.conf 
options {
        listen-on port 53 { 192.168.80.130; };  # 可以该为本机IP或any
 		……
        allow-query     { any; };

在这里插入图片描述

  • 第七步:从服务器node1端操作,修改区域配置文件
[root@node1 ~]# vim /etc/named.rfc1912.zones
zone "openlab.com" IN {
        type slave; # 服务类型变更为从
        masters  { 192.168.80.129; }; # 设置主服务器的IP地址
        file "slaves/openlab.com.zone"; # 从服务器的数据配置文件存储位置必须为slaves目录下
};

在这里插入图片描述

  • 第八步:从服务器node1端重启服务,当从服务器服务重启时,会自动向主服务器同步拉取DNS解析数据到自己的/var/named/slaves目录下
[root@node1 ~]# cd /var/named
[root@node1 named]# ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
[root@node1 named]# cd slaves/
[root@node1 slaves]# ls   #重启前为空目录
[root@node1 slaves]# systemctl restart named
[root@node1 slaves]# ls
openlab.com.zone         # 拉取数据到slaves目录下
[root@node1 slaves]#
  • 第九步:测试,定位客户端node2,修改网卡的DNS地址
[root@node2 ~]# vim  /etc/NetworkManager/system-connections/ens160.nmconnection      
 
[ipv4]
address1=192.168.80.130/24,192.168.80.2
dns=192.168.80.130;   #这里我们写的是从服务器的IP地址
method=manual

[root@node2 ~]# nmcli connection reload
[root@node2 ~]# nmcli connection up ens160
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/2)

在这里插入图片描述

[root@node2 ~]# nslookup www.openlab.com
Server:         192.168.80.130
Address:        192.168.80.130#53

Name:   www.openlab.com
Address: 192.168.80.129



[root@node2 ~]# host www.openlab.com
www.openlab.com has address 192.168.80.129



[root@node2 ~]# dig www.openlab.com

; <<>> DiG 9.16.23-RH <<>> www.openlab.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59777
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 01f99b9ede9c54cb0100000065ec2ce0002558e44f79c4a7 (good)
;; QUESTION SECTION:
;www.openlab.com.               IN      A

;; ANSWER SECTION:
www.openlab.com.        86400   IN      A       192.168.80.129

;; Query time: 1 msec
;; SERVER: 192.168.80.130#53(192.168.80.130)
;; WHEN: Sat Mar 09 17:33:20 CST 2024
;; MSG SIZE  rcvd: 88

[root@node2 ~]#

增量区域传送

  • 功能:仅复制区域中变化的数据部分
  • 第一步:主服务器server端操作,修改数据配置文件
[root@server named]# vim /var/named/openlab.com.zone
$TTL 1D
openlab.com.    IN SOA  ns.openlab.com. deny.qq.com. (
                                        1       ; serial #从0修改为1
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
openlab.com.    IN      NS      ns.openlab.com.
openlab.com.    IN      NS      slave.openlab.com.
openlab.com.    IN      MX      8       mail.openlab.com.  #增加MX

ns.openlab.com. IN      A       192.168.80.129
slave.openlab.com.      IN      A       192.168.80.130

www.openlab.com.        IN      A       192.168.80.129
ftp.openlab.com.        IN      A       192.168.80.129
bbs.openlab.com.        IN      A       192.168.80.129

mail.openlab.com.       IN      A       192.168.80.129 #增加A
www1.openlab.com.       IN      CNAME   www.openlab.com.  #增加CNAME

# 注意:1       ; serial中序号修改为1,否则从服务器不会更新数据

修改前:
在这里插入图片描述
修改后:
在这里插入图片描述

  • 第二步:主服务器server端操作,重启服务
[root@server named]# systemctl restart named
  • 第三步:从服务器node1端,重启服务
[root@node1 ~]# systemctl restart named
[root@node1 ~]# vim /var/named/slaves/openlab.com.zone

在这里插入图片描述

  • 第四步:客户端node2测试
[root@node2 ~]# nslookup mail.openlab.com
Server:         192.168.80.130
Address:        192.168.80.130#53

Name:   mail.openlab.com
Address: 192.168.80.129
[root@node2 ~]# nslookup www1.openlab.com
Server:         192.168.80.130
Address:        192.168.80.130#53

www1.openlab.com        canonical name = www.openlab.com.
Name:   www.openlab.com
Address: 192.168.80.129
[root@node2 ~]# host mail.openlab.com
mail.openlab.com has address 192.168.80.129
[root@node2 ~]# dig mail.openlab.com

; <<>> DiG 9.16.23-RH <<>> mail.openlab.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16067
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 29b214529963a6210100000065ec3204f689a98f174be271 (good)
;; QUESTION SECTION:
;mail.openlab.com.              IN      A

;; ANSWER SECTION:
mail.openlab.com.       86400   IN      A       192.168.80.129

;; Query time: 0 msec
;; SERVER: 192.168.80.130#53(192.168.80.130)
;; WHEN: Sat Mar 09 17:55:16 CST 2024
;; MSG SIZE  rcvd: 89

注意

  • 序号必须比原序号要大
  • 更新频率需要改小一些,这样可以更快看到实验结果
  • 增量传送主服务端需要写关于从服务器的NS记录和A记录,否则从服务器不能更新数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/443076.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STM32代码调试时遇到的一些error和warning

持续更新 ERROR WARNING 1.Note: object file renamed from “xxx.o“ to “xxx_1.o“ 出现下面这些warning可能的原因&#xff1a; &#xff08;1&#xff09;没有将头文件加入到main.c中&#xff0c;检查一下在编译。 &#xff08;2&#xff09;修改源文件路径的时候忘记…

python学习the sixth day

python函数进阶 一、函数多返回值 二、函数的多种参数使用 1.位置参数 2.关键字参数 3.缺省参数 设置默认值&#xff0c;必须放在最后面 4.不定长参数 4.总结 三、匿名函数 1.函数作为参数传递 这是计算逻辑的传递&#xff0c;而非数据的传递 2.lambda匿名函数 python文件操…

【电路笔记】-PNP晶体管

PNP晶体管 文章目录 PNP晶体管1、概述2、PNP晶体管电路示例3、PNP晶体管识别1、概述 PNP 晶体管与我们在上一篇教程中看到的 NPN 晶体管器件完全相反。 在这种类型的 PNP 晶体管结构中,两个互连的二极管相对于之前的 NPN 晶体管是相反的。 这会产生正-负-正类型的配置,箭头…

JAVA实战开源项目:智能停车场管理系统(Vue+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容A. 车主端功能B. 停车工作人员功能C. 系统管理员功能1. 停车位模块2. 车辆模块3. 停车记录模块4. IC卡模块5. IC卡挂失模块 三、界面展示3.1 登录注册3.2 车辆模块3.3 停车位模块3.4 停车数据模块3.5 IC卡档案模块3.6 IC卡挂…

Android Studio下载gradle超时问题解决

方法一 1. 配置根目录的setting.gradle.kts文件 pluginManagement {repositories {maven { urluri ("https://www.jitpack.io")}maven { urluri ("https://maven.aliyun.com/repository/releases")}maven { urluri ("https://maven.aliyun.com/repos…

基于springboot的家庭装修报价系统设计与实现

目 录 摘 要 I Abstract II 引 言 1 1 相关技术 3 1.1 SpringBoot框架 3 1.2 ECharts 3 1.3 Vue框架 3 1.4 Bootstrap框架 3 1.5 JQuery技术 4 1.6 Ajax技术 4 1.7 本章小结 4 2 系统分析 5 2.1 需求分析 5 2.2 非功能需求 7 2.3 本章小结 8 3 系统设计 9 3.1 系统总体设计 9 …

Python学习日记之学习turtle库(上 篇)

一、初步认识turtle库 turtle 库是 Python 语言中一个很流行的绘制图像的函数库&#xff0c;想象一个小乌龟&#xff0c;在一个横 轴为 x、纵轴为 y 的坐标系原点&#xff0c;(0,0)位置开始&#xff0c;它根据一组函数指令的控制&#xff0c;在这个平面 坐标系中移动&#xff0…

ubuntu 运行opencv_sample遇到的问题

首先我遇到的问题就是摄像头连接不上 勾选最后一个 然后是 usb接口问题 点击虚拟机设置 我的是改为 3 就可以啦

TensorRT是什么,有什么作用,如何使用

TensorRT 是由 NVIDIA 提供的一个高性能深度学习推理&#xff08;inference&#xff09;引擎。它专为生产环境中的部署而设计&#xff0c;用于提高在 NVIDIA GPU 上运行的深度学习模型的推理速度和效率。以下是关于 TensorRT 的详细介绍&#xff1a; TensorRT 是 NVIDIA 推出的…

Facebook广告必坑指南

不明确的目标&#xff1a; 在开始广告活动之前&#xff0c;确保你清楚自己的广告目标。是想提高品牌知名度、促进销售、还是增加网站流量&#xff1f;明确的目标有助于指导广告内容和策略。 忽视目标受众定位&#xff1a; 确定你的目标受众是关键的。使用Facebook广告管理工具…

【JavaEE进阶】 @Transactional详解

文章目录 &#x1f343;前言&#x1f332;rollbackFor&#xff08;异常回滚属性&#xff09;&#x1f384;事务隔离级别&#x1f6a9;MySQL事务隔离级别&#x1f6a9;Spring事务隔离级别 &#x1f38b;Spring事务传播机制&#x1f6a9;什么是事务传播机制&#x1f6a9;事务有哪…

防御保护----IPSEC VPPN实验

实验拓扑&#xff1a; 实验背景&#xff1a;FW1和FW2是双机热备的状态。 实验要求&#xff1a;在FW和FW3之间建立一条IPSEC通道&#xff0c;保证10.0.2.0/24网段可以正常访问到192.168.1.0/24 IPSEC VPPN实验配置&#xff08;由于是双机热备状态&#xff0c;所以FW1和FW2只需要…

ARM中汇编语言的学习(加法、乘法、除法、左移、右移、按位与等多种命令操作实例以及ARM的 N、Z、C、V 标志位的解释)

汇编概述 汇编需要学习的大致框架如下&#xff1a; 汇编中的符号 1.指令&#xff1b;能够北嘁肷梢惶?2bit机器码&#xff0c;并且能够被cpui识别和执行 2.伪指令&#xff1a;本身不是指令&#xff0c;编译器可以将其替换成若干条指令 3.伪操作&#xff1a;不会生成指令…

一分钟了解遥感中卫星、传感器、波段及数据之间的关系

感是利用卫星、飞机或其他载具上的传感器对地球表面进行观测和测量的科学技术。以下是一些常见的遥感相关术语: 卫星(Satellite):在遥感中,卫星是指绕地球轨道运行的人造卫星,其主要任务是携带各种传感器从空间中对地球表面进行观测。 传感器(Sensor):传感器是安装在卫…

语音模块学习——LSYT201B模组(实际操作篇)

目录 一、定制词条 二、直接用串口通信 三、使用单片机通信 理论篇在这&#xff0c;依旧是深圳雷龙发展的语音模块。 http://t.csdnimg.cn/2SzJL 一、定制词条 因为我想后面加到我的毕设上加个语音模块&#xff0c;所以定制的词条都是和芯测相关的。 动作词条播报串口输…

2.4_2 死锁的处理策略——预防死锁

2.4_2 死锁的处理策略——预防死锁 &#xff08;一&#xff09;破坏互斥条件 互斥条件&#xff1a;只有对必须互斥使用的资源的争抢才会导致死锁。 如果把只能互斥使用的资源改造为允许共享使用&#xff0c;则系统不会进入死锁状态。比如&#xff1a;SPOOLing技术。操作系统可以…

惬意上手MySQL

大家好&#xff0c;我又来写博客了&#xff0c;今天给大家介绍一下MySQL,如果你只想让MySQL作为自己的辅助开发工具&#xff0c;那这一篇文章就够了&#xff0c;如果想作为一门语言来学习&#xff0c;那你可以看此文章了解一些基础。 MySQL介绍 数据库可分为关系型数据库和非关…

Elasticsearch 通过索引阻塞实现数据保护深入解析

Elasticsearch 是一种强大的搜索和分析引擎&#xff0c;被广泛用于各种应用中&#xff0c;以其强大的全文搜索能力而著称。 不过&#xff0c;在日常管理 Elasticsearch 时&#xff0c;我们经常需要对索引进行保护&#xff0c;以防止数据被意外修改或删除&#xff0c;特别是在进…

java IO 02 IO接口,字节流和字符流,节点流和处理流

01.定义 02.IO中的输入和输出的划分 03.流的分类 IO流的所有类中&#xff0c;最先分野的是字节流和字符流。 字节流包括&#xff1a;输入流和输出流 InputStream public abstract class InputStream implements Closeable { }OutputStream public abstract class OutputSt…

专业140+总分430+西南交通大学924信号与系统考研经验电子信息与通信工程,真题,大纲,参考书

今年报考西南交通大学&#xff0c;考研分数专业课924信号与系统140&#xff0c;总分430&#xff0c;各门分数都还是比较均衡&#xff0c;经过一年的复习&#xff0c;有得有失&#xff0c;总结一下自己的复习经历&#xff0c;希望给大家有点帮助&#xff0c;在复习中做的更好&am…