8.DNS域名解析服务器

目录

1. 概述

1.1. 产生原因

1.2. 作用:

1.3. 连接方式

1.4. 因特网的域名结构

1.4.1. 拓扑:

1.4.2. 分类

1.4.3. 域名服务器类型划分

2. DNS域名解析过程

2.1. 分类:

2.2. 解析图:

2.2.1. 图:

2.2.2. 过程分析

3. 搭建DNS域名解析服务器

3.1. 概述

3.2. 安装软件

3.3. bind服务中三个关键文件

3.4. 主配置文件分析

3.5. 区域配置文件

3.5.1. 作用:

3.5.2. 区域配置文件示例分析

3.6. 正向解析资源文件

3.6.1. 概述:

3.6.2. 模板内容分析:

3.6.3. 域名解析记录分析

3.6.4. 域名解析记录分析

3.7. 反向解析资源文件

3.8. 实验1:正向解析

3.8.1. 准备工作

3.8.2. DNS配置

3.8.3. 测试

3.8.4. 注意:第三步数据配置文件可以进行精简

3.9. 实验2:反向解析

3.9.1. 准备工作

3.9.2. DNS设置

3.9.3. 客户端测试

4. 部署DNS从服务器

4.1. 作用:

4.2. 实验3:主从DNS服务器

4.2.1. 完全区域传送

4.2.2. 增量区域传送

4.2.3. 注意:


1. 概述

1.1. 产生原因

IP 地址:是互联网上计算机唯一的逻辑地址,通过 IP 地址实现不同计算机之间的相互通信,每台联网计算机都需要通过 IP 地址来互相联系和分别,但由于 IP 地址是由一串容易混淆的数字串构成,人们很难记忆所有计算机的 IP 地址,这样对于我们日常工作生活访问不同网站是很困难的。

基于这种背景,人们在 IP 地址的基础上又发展出了一种更易识别的符号化标识,这种标识由人们自行选择的字母和数字构成,相比 IP 地址更易被识别和记忆,逐渐代替 IP 地址成为互联网用户进行访问互联的主要入口。这种符号化标识就是域名

域名虽然更易被用户所接受和使用,但计算机只能识别纯数字构成的 IP 地址,不能直接读取域名。因此要想达到访问效果,就需要将域名翻译成 IP 地址。而 DNS 域名解析承担的就是这种翻译效果

1.2. 作用:

DNS(Domain Name System)是互联网上的一项服务,用于将域名和IP地址进行相互映射,使人更方便的访问互联网

正向解析:域名->IP

反向解析:IP->域名

1.3. 连接方式

DNS使用53端口监听网络

查看方法:

DNS默认以UDP这个较快速的数据传输协议来查询,但没有查询到完整的信息时,就会再次以TCP协议重新查询则启动DNS时,会同时启动TCP以及UDP的port53

1.4. 因特网的域名结构

1.4.1. 拓扑:

由于因特网的用户数量较多,则因特网命名时采用层次树状结构的命名方法。

域名(domain name):任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名称

域(domain):是名字空间中一个可被管理的划分结构。

注意:域名只是逻辑概念,并不代表计算机所在的物理地点

1.4.2. 分类

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

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

com (公司企业)

net (网络服务机构)

org (非营利组织)

int (国际组织)

gov (美国的政府部门)

mil (美国的军事部门)

edu(教育机构)

基础结构域名(infrastructure domain):这种顶级域名只有一个,即arpa,用于反向域名解析,因此称为反向域名

1.4.3. 域名服务器类型划分

组织架构:

根域名服务器:最高层次的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址。本地域名服务器要对因特网上任何一个域名进行解析,只要自己无法解析,就首先求助根域名服务器。则根域名服务器是最重要的域名服务器。假定所有的根域名服务器都瘫痪了,那么整个DNS系统就无法工作。所以根域名服务器并不直接把待查询的域名直接解析出IP地址,而是告诉本地域名服务器下一步应当找哪一个顶级域名服务器进行查询。

在与现有IPv4根服务器体系架构充分兼容基础上,由我国下一代互联网国家工程中心领衔发起的“雪人计划”于2016年在美国、日本、印度、俄罗斯、德国、法国等全球16个国家完成25台IPv6(互联网协议第六版)根服务器架设,事实上形成了13台原有根加25台IPv6根的新格局,为建立多边、民主、透明的国际互联网治理体系打下坚实基础。中国部署了其中的4台,由1台主根服务器和3台辅根服务器组成,打破了中国过去没有根服务器的困境。

顶级域名服务器:负责管理在该顶级域名服务器注册的二级域名

权威域名服务器:负责一个的域名服务器

本地域名服务器:本地域名服务器不属于域名服务器的层次结构,当主机发出DNS查询时,这个查询报文就发送给本地域名服务器

为了提高域名服务器的可靠性,DNS域名服务器都把数据复制到几个域名服务器来保存,如:

(1)主服务器:在特定区域内具有唯一性,负责维护该区域内的域名与 IP 地址之间的对应关系(真正干活的)

(2)从服务器:从主服务器中获得域名与 IP 地址的对应关系并进行维护,以防主服务器宕机等情况(打

下手的)

(3)缓存服务器:通过向其他域名解析服务器查询获得域名与 IP 地址的对应关系,并将经常查询的域名信息保存到服务器本地,以此来提高重复查询时的效率,一般部署在企业内网的网关位置,用于加速用户的域名查询请求

2. DNS域名解析过程

2.1. 分类:

递归解析:DNS 服务器在收到用户发起的请求时,必须向用户返回一个准确的查询结果。如果 DNS 服务器本地没有存储与之对应的信息,则该服务器需要询问其他服务器,并将返回的查询结果提交给用户

迭代解析(反复):DNS 服务器在收到用户发起的请求时,并不直接回复查询结果,而是告诉另一台DNS 服务器的地址,用户再向这台 DNS 服务器提交请求,依次反复,直到返回查询结果

2.2. 解析图:

2.2.1. 图:

2.2.2. 过程分析

第一步:在浏览器中输入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 来负载均衡控制,这都有可能会影响域名解析过程

注意:

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

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

(3)223.5.5.5和223.6.6.6是阿里提供的免费域名解析服务器地址

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

3. 搭建DNS域名解析服务器

3.1. 概述

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

3.2. 安装软件

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

3.3. bind服务中三个关键文件

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

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

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

3.4. 主配置文件分析

主配置文件共4部分组成

options{}

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及端口

allow-query { localhost; }; 允许那些客户端访问

recursion yes; 是否开启递归查询

3.5. 区域配置文件

3.5.1. 作用:

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

3.5.2. 区域配置文件示例分析

正向解析 :

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; };
};

3.6. 正向解析资源文件

3.6.1. 概述:

查看:

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

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

3.6.2. 模板内容分析:

$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地址

3.6.3. 域名解析记录分析

3.6.4. 域名解析记录分析

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 的博客" 这样的说明

3.7. 反向解析资源文件

[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 指针记录,用于反向解析

3.8. 实验1:正向解析

3.8.1. 准备工作

# 服务端及客户端都关闭安全软件
[root@server ~]# setenforce 0
[root@server ~]# systemctl stop firewalld
# 服务端安装bind软件
[root@server ~]# yum install bind -y

# 服务端配置静态IP
[root@server ~]# nmcli c modify ens33 ipv4.method manual ipv4.addresses 192.168.223.129/24 ipv4.gateway 192.168.223.2 ipv4.dns 114.114.114.114
[root@server ~]# nmcli c reload
[root@server ~]# nmcli c up ens33
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/2)

# 客户端设置静态IP
[root@node1 ~]# nmcli c modify ens33 ipv4.method manual ipv4.addresses 192.168.223.130/24 ipv4.gateway 192.168.223.2 ipv4.dns 192.168.223.129
[root@node1 ~]# nmcli c reload
[root@node1 ~]# nmcli c up ens33
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/Act

3.8.2. DNS配置

第一步:服务端操作,编辑bind主配置文件

[root@server ~]# vim /etc/named.conf
# 需改2行
	listen-on port 53 { any; }; # any为允许所有主机

	allow-query { any; };

第二步:服务端操作,编辑区域配置文件,可以选择一个模版修改局部(推荐),也可以全部清空重启写

入数据

[root@server ~]# vim /etc/named.rfc1912.zones
zone "openlab.com" IN { # 双引号中输入,表示管理那个区域
		type master;
		file "openlab.com.zone"; # 双引号中输入,表示数据配置文件的名称,注意:不写路径
		allow-update { none; };
};

第三步:服务端操作,编辑数据配置文件,使用拷贝命令将模版文件(/var/named/named.localhost)复制一份在修改局部,注意:拷贝时需要加-a参数,即拷贝内容及文件属性保证文件内容一致、权限等信息不变

[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 # -a 完整拷贝

[root@server named]# vim openlab.com.zone # 完整格式修改如下
$TTL 1D
openlab.com. IN SOA ns.opeblab.com. admin.openlab.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.223.129
www.openlab.com. 	IN 	A 	192.168.223.129
ftp.openlab.com. 	IN 	A 	192.168.223.129
bbs.openlab.com.	IN 	A 	192.168.223.129
www1.openlab.com. 	IN	CNAME 	www.openlab.com.

注意:

ns为管理者

邮件的@要用.表示

间隔要用tab

后面一定要带.

第四步:服务端重启服务

[root@server named]# systemctl restart named 

3.8.3. 测试

定义客户端,将客户端的dns修改为服务端的IP地址

# 编辑客户端网卡配置文件
[root@node1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
dns=192.168.223.129; # dns改为服务端的IP地址
[root@node1 ~]# nmcli c reload
[root@node1 ~]# nmcli c up ens33
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/4)
# 定位客户端测试

[root@node1 ~]# nslookup www.openlab.com
Server: 192.168.223.129
Address: 192.168.223.129#53
Name: www.openlab.com
Address: 192.168.223.129

[root@node1 ~]# nslookup # 进入交互模式
> bbs.openlab.com
Server: 192.168.223.129
Address: 192.168.223.129#53
Name: bbs.openlab.com
Address: 192.168.223.129
> # ctrl+d退出

[root@node1 ~]# dig www.opnelab.com
; <<>> DiG 9.16.23-RH <<>> www.opnelab.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 32112
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 518104d477dc5c0801000000647eb0d120c077e2842cd3b4 (good)
;; QUESTION SECTION:
;www.opnelab.com. IN A
;; AUTHORITY SECTION:
com. 863 IN SOA a.gtld-servers.net. nstld.verisign-grs.com. 1686024343
1800 900 604800 86400
;; Query time: 0 msec
;; SERVER: 192.168.48.130#53(192.168.48.130)
;; WHEN: Tue Jun 06 12:06:41 CST 2023
;; MSG SIZE rcvd: 151

[root@node1 ~]# nslookup www1.openlab.com
Server: 192.168.223.129
Address: 192.168.223.129#53
www1.openlab.com canonical name = www.openlab.com.
Name: www.openlab.com
Address: 192.168.223.129

3.8.4. 注意:第三步数据配置文件可以进行精简

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重复继承上一行第一列的值

可以省略域名,会自动补全,如:wwwwww.openlab.com.

配置文件可以省略如下:

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

3.9. 实验2:反向解析

基于上例的正向解析

3.9.1. 准备工作

# 服务端及客户端都关闭安全软件
[root@server ~]# setenforce 0
[root@server ~]# systemctl stop firewalld

# 服务端安装bind软件
[root@server ~]# yum install bind -y
# 服务端配置静态IP
[root@server ~]# nmcli c modify ens33 ipv4.method manual ipv4.addresses 192.168.223.129/24 ipv4.gateway 192.168.223.2 ipv4.dns 114.114.114.114
[root@server ~]# nmcli c reload
[root@server ~]# nmcli c up ens33
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/2)

# 客户端设置静态IP
[root@node1 ~]# nmcli c modify ens33 ipv4.method manual ipv4.addresses 192.168.223.130/24 ipv4.gateway 192.168.223.2 ipv4.dns 192.168.223.129 # 注意,此处dns改为服务端的IP地址,后续就不用再单独修改
[root@node1 ~]# nmcli c reload
[root@node1 ~]# nmcli c up ens33
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/Act

3.9.2. DNS设置

第一步:服务端操作,编辑主配置文件

[root@server ~]# vim /etc/named.conf
# 需改2行
    listen-on port 53 { any; }; # any为允许所有主机

    allow-query { 192.168.223.130; }; # 此处也可以写为IP地址

第二步:服务端操作,编辑区域配置文件,添加反向解析记录,注意:区域名称中IP地址反向书写,只需书写网段号

[root@server named]# vim /etc/named.rfc1912.zones

zone "223.168.192.in-addr.arpa" IN {
        type master;
        file "192.168.223.arpa";
        allow-update { none; };
};

第三步:服务端操作,编辑数据配置文件,复制一份反向解析模版(/var/named/named.loopback),复制时需要加-a 参数,在修改局部即可

[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.223.arpa
[root@server named]# vim 192.168.223.arpa
$TTL 1D
@ IN SOA ns.openlab.com. fox.qq.com. (
                                    0 ; serial
                                    1D ; refresh
                                    1H ; retry
                                    1W ; expire
                                    3H ) ; minimum
					IN 		NS 		ns.openlab.com.
ns.openlab.com. 	IN 		A 		192.168.223.129
129 				IN 		PTR 	ns.openlab.com.
129 				IN 		PTR 	www.openlab.com.
129 				IN 		PTR 	ftp.openlab.com.

第四步:重启服务

[root@server named]# systemctl restart named

3.9.3. 客户端测试

[root@note ~]#  nslookup 192.168.223.129
129.223.168.192.in-addr.arpa	name = www.openlab.com.
129.223.168.192.in-addr.arpa	name = ftp.openlab.com.
129.223.168.192.in-addr.arpa	name = ns.openlab.com.

4. 部署DNS从服务器

4.1. 作用:

DNS作为重要的互联网基础设施服务,保证 DNS 域名解析服务的正常运转至关重要,只有这样才能提供稳定、快速且不间断的域名查询服务

DNS 域名解析服务中,从服务器可以从主服务器上获取指定的区域数据文件,从而起到备份解析记录与负载均衡的作用,因此通过部署从服务器可以减轻主服务器的负载压力,还可以提升用户的查询效率

注意:

时间同步必须保持一致性

bind最好使用同一版本

4.2. 实验3:主从DNS服务器

4.2.1. 完全区域传送

将一个区域文件复制到多个服务器上的过程叫做区域传送。

将主服务器上的所有信息复制到辅助服务器上来实现完全区域传送,即复制整个区域文件

服务器说明:

第一步:两个服务器恢复快照,预处理、安装软件、设置网卡信息

[root@server ~]setenforce 0  	# 两个服务器都处理
[root@server ~]systemctl stop firewalld
[root@server ~]yum install bind -y # 两个服务器都安装
# 主服务器IP信息:
[root@server ~]# nmcli c modify ens33 ipv4.method manual ipv4.addresses '192.168.223.129/24' ipv4.gateway '192.168.223.2' ipv4.dns '192.168.223.129'
# dns改为自己,是本机具备测试功能
[root@server ~]# nmcli c reload
[root@server ~]# nmcli c up ens33
# 从服务器IP信息
[root@node1 ~]# nmcli c modify ens33 ipv4.method manual ipv4.addresses '192.168.223.130/24' ipv4.gateway '192.168.223.2' ipv4.dns '192.168.223.130'
[root@node1 ~]# nmcli c reload
[root@node1 ~]# nmcli c up ens33

第二步:主服务端操作,编辑主配置文件设置监听IP

# 主服务端操作:
[root@server ~]# vim /etc/named.conf
			listen-on port 53 { 192.168.223.129; }; # {}中改为any。也可写为本机IP
			allow-query { any; }; # {}中改为any,也可写为服务端

第三步:主服务端操作打开区域配置文件,添加如下内容,重点为:允许从服务器的同步请求,即修改为allow-transfer {允许同步区域信息的主机IP;};参数

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

# 修改为以下内容:
zone "openlab.com" IN {
        type master;
        file "openlab.com.zone";
        allow-transfer { 192.168.223.130; };
};


zone "223.168.192.in-addr.arpa" IN {
        type master;
        file "192.168.223.arpa";
        allow-transfer { 192.168.223.130; };
};

第二步:主服务端操作,设置正反向解析数据配置文件,内容如下:

# 正向解析:
[root@server ~]# cd /var/named
[root@server ~]# ls
[root@server ~]# cp -a named.localhost openlab.com.zone
[root@server ~]# vim openlab.com.zone
# 配置内容如下:
$TTL 1D
openlab.com.    IN SOA  ns.openlab.com. admin.openlab.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.223.129


openlab.com.            IN      NS      slave.openlab.com.
slave.openlab.com.      IN      A       192.168.223.130

www.openlab.com.        IN      A       192.168.223.135
bbs.openlab.com.        IN      A       192.168.223.135
ftp.openlab.com.        IN      CNAME   www.openlab.com.

# 反向解析:
[root@server ~]# cd /var/named
[root@server ~]# ls
[root@server ~]# cp -a named.loopback 192.168.223.arpa
[root@server ~]# vim /var/named/192.168.223.arpa
#配置内容如下:
$TTL 1D
@       IN SOA  ns.openlab.com. admin.openlab.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
                        NS      ns.openlab.com.
                        NS      slave.openlab.com.
129             IN      PTR     ns.openlab.com.
135             IN      PTR     www.openlab.com.
135             IN      PTR     bbs.openlab.com.
135             IN      PTR     ftp.openlab.com.
130             IN      PTR     slave.openlab.com. 

第三步:主服务端操作,重启服务

[root@server ~]# systemctl restart named

第四步:从服务端操作,修改主配置文件:

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

            listen-on port 53 { 192.168.223.130; };
            allow-query { any; };

第五步:从服务端操作,修改区域配置文件,填写主服务器的 IP 地址与要抓取的区域信息,注意此时的服务类型应该是 slave(从)

[root@node1 ~]# vim /etc/named.rfc1912.zones
# 清空后,添加以下内容
zone "openlab.com" IN {
        type slave;
        masters { 192.168.223.129; };
        file "slaves/openlab.com.zone";
};


zone "223.168.192.in-addr.arpa" IN {
        type slave;
        masters { 192.168.223.129; };
        file "slaves/192.168.223.arpa";
};

第六步:从服务端操作,重启服务,注意:当从服务器的 DNS 服务程序在重启后,就自动从主服务器上同步了数据配置文件,且该文件默认会放置在区域配置文件中所定义的目录位置中

[root@node1 ~]# cd /var/named/slaves
[root@node1 ~]# ls     # 启动服务前查看解析配置文件为空
[root@node1 ~]# systemctl start named
[root@node1 ~]# ls     # 启动服务后自动拉取

第七步:从服务端操作,确认从服务端的网卡DNS地址修改为自己的IP:192.168.48.131,使从服务器自身也能提供的 DNS 域名解析服务,在进行测试

[root@node1 ~]# nslookup www.openlab.com
[root@node1 ~]# nslookup 192.168.223.129
[root@node1 ~]# dig @192.168.223.129 www.openlab.com

4.2.2. 增量区域传送

功能:仅复制区域里变化的文件

第一步:主服务端操作,修改数据配置文件

[root@server ~]# vim /var/named/openlab.com.zone
$TTL 1D
openlab.com. IN  SOA  ns.openlab.com.  admin.openlab.com.  (
                        1 ; serial # 修改,需要加1
                        3 ; refresh # 修改
                        1H ; retry
                        1W ; expire
                        3H ) ; minimum


openlab.com.            IN      MX      8 mail.openlab.com. #添加
mail.openlab.com.       IN      A       192.168.223.135   #添加
openlab.com.            IN      NS      ns.openlab.com.
ns.openlab.com.         IN      A       192.168.223.129
openlab.com.            IN      NS      slave.openlab.com.
slave.openlab.com.      IN      A       192.168.223.130
www.openlab.com.        IN      A       192.168.223.135
bbs.openlab.com.        IN      A       192.168.223.135
ftp.openlab.com.        IN      CNAME   www.openlab.com.
www1.openlab.com.       IN      CNAME   www.openlab.com.  #添加

# 注意:1 ; serial 处的序号数字必须加1,否则从服务端不更新

第二步:主服务端操作,重启服务

[root@server ~]# systemctl restart named

第三步:从服务端操作,重启服务

[root@node1 ~]# systemctl restart named

第四步:从服务端操作,测试

[root@node1 ~]# nslookup mail.openlab.com
[root@node1 ~]# nslookup www1.openlab.com

4.2.3. 注意:

序号需要比原序号大

更新频率可以改小一点,这样比较快看到实验结果

需要写一条关于从服务器的NS和A记录,不然新增的数据有时能更新有时无法更新

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

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

相关文章

万字图解| 深入揭秘Golang锁结构:Mutex(上)

大家好&#xff0c;我是「云舒编程」&#xff0c;今天我们来聊聊Golang锁结构&#xff1a;Mutex。 文章首发于微信公众号&#xff1a;云舒编程 关注公众号获取&#xff1a; 1、大厂项目分享 2、各种技术原理分享 3、部门内推 一、前言 Golang的Mutex算是在日常开发中最常见的组…

Redis核心技术与实战【学习笔记】 - 14.Redis 旁路缓存的工作原理及如何选择应用系统的缓存类型

概述 我们知道&#xff0c;Redis 提供了高性能的数据存取功能&#xff0c;广泛应用在缓存场景中&#xff0c;既可以提升业务的响应速度&#xff0c;又可以避免把高并发的请求发送到数据库。 如果 Redis 做缓存时出现了问题&#xff0c;比如说缓存失效&#xff0c;那么&#x…

轴承故障诊断 (12)基于交叉注意力特征融合的VMD+CNN-BiLSTM-CrossAttention故障识别模型

目录 往期精彩内容&#xff1a; 前言 模型整体结构 1 变分模态分解VMD的Python示例 第一步&#xff0c;Python 中 VMD包的下载安装&#xff1a; 第二步&#xff0c;导入相关包进行分解 2 轴承故障数据的预处理 2.1 导入数据 2.2 故障VMD分解可视化 第一步&#xff0c…

【issue-YOLO】自定义数据集训练YOLO-v7 Segmentation

1. 拉取代码创建环境 执行nvidia-smi验证cuda环境是否可用&#xff1b;拉取官方代码&#xff1b; clone官方代码仓库 git clone https://github.com/WongKinYiu/yolov7&#xff1b;从main分支切换到u7分支 cd yolov7 && git checkout 44f30af0daccb1a3baecc5d80eae229…

关于Spring框架的 @Configuration 与@Service 加载顺序哪个先后(某些环境加载是随机的)

很多资料都说Configuration 优先加载&#xff0c;Service后加载&#xff0c;如下图&#xff1a; 本来也是以为 Configuration 优先加载于 Service &#xff0c;那参数处理放在Configuration注入完后&#xff0c;service构建时就可以拿来用的&#xff0c;在我在IDEA的调试时下断…

C语言数据结构之二叉树

少年恃险若平地 独倚长剑凌清秋 &#x1f3a5;烟雨长虹&#xff0c;孤鹜齐飞的个人主页 &#x1f525;个人专栏 &#x1f3a5;前期回顾-栈和队列 期待小伙伴们的支持与关注&#xff01;&#xff01;&#xff01; 目录 树的定义与判定 树的定义 树的判定 树的相关概念 树的运用…

字符串转换const char* , char*,QByteArray,QString,string相互转换,支持中文

文章目录 1.char * 与 const char * 的转换2.QByteArray 与 char* 的转换3.QString 与 QByteArray 的转换4.QString 与 string 的转换5.QString与const string 的转换6.QString 与 char* 的转换 在开发中&#xff0c;经常会遇到需要将数据类型进行转换的情况&#xff0c;下面依…

❤ 做一个自己的AI智能机器人吧

❤ 做一个自己的AI智能机器人 看了扣子&#xff08;coze&#xff09;的模型&#xff0c;字节基于chatgpt搭建的一个辅助生成AI的网站&#xff0c;感觉蛮有意思&#xff0c;看了掘金以后&#xff0c;于是动手自己也实现了一个。 官网 https://www.coze.cn/ 进入的网站 1、 创…

如何在Windows系统使用Plex部署影音服务与公网访问本地资源【内网穿透】

文章目录 1.前言2. Plex网站搭建2.1 Plex下载和安装2.2 Plex网页测试2.3 cpolar的安装和注册 3. 本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 人工智能学习网站&#xff0c; 通…

如何发布自己的npm包:

1.创建一个打包组件或者库&#xff1a; 安装weback&#xff1a; 打开项目&#xff1a; 创建webpack.config.js,创建src目录 打包好了后发现两个js文件都被压缩了&#xff0c;我们想开发使用未压缩&#xff0c;生产使用压缩文件。 erserPlugin&#xff1a;&#xff08;推荐使用…

什么是信创业态支持?支持信创的数据库防水坝哪家好?

随着国产化信创化的崛起&#xff0c;出现了很多新名词&#xff0c;例如信创业态支持、国产信创化等等。今天我们就来聊聊什么是信创业态支持&#xff1f;支持信创的数据库防水坝哪家好&#xff1f; 什么是信创业态支持&#xff1f; 大范围而言&#xff0c;信创业态支持可以理解…

多线程编程4——线程安全问题

一、线程之间是并发执行的&#xff0c;是抢占式随机调度的。 多个线程之间是并发执行的&#xff0c;是随机调度的。我们只能确保同一个线程中代码是按顺序从上到下执行的&#xff0c;无法知道不同线程中的代码谁先执行谁后执行。 比如下面这两个代码&#xff1a; 代码一&…

自定义一个线程安全的生产者-消费者模型(大厂java面试题)

生产者-消费者模型的核心思想是通过阻塞队列和线程的等待和通知机制实现生产者和消费者之间的协作&#xff0c;确保生产者不会向满队列中添加消息&#xff0c;消费者不会从空队列中获取消息&#xff0c;从而有效地解决了多线程间的同步问题。 需要实现两个方法。方法1向队列中…

Aigtek高压功率放大器主要功能是什么

高压功率放大器是一种用于将低电压信号放大到高电压水平的电子设备。它在许多领域中发挥着重要的作用&#xff0c;具有以下主要功能&#xff1a; 信号放大&#xff1a;高压功率放大器的主要功能之一是将低电压信号放大到高电压水平。它能够以较高的增益放大输入信号&#xff0c…

【云原生之kubernetes系列】--污点与容忍

污点与容忍 污点&#xff08;taints)&#xff1a;用于node节点排斥Pod调度&#xff0c;与亲和效果相反&#xff0c;即taint的node排斥Pod的创建容忍&#xff08;toleration)&#xff1a;用于Pod容忍Node节点的污点信息&#xff0c;即node节点有污点&#xff0c;也将新的pod创建…

​亚马逊测评礼品卡撸C采退如何搬砖?

亚马逊测评礼品卡搬砖、撸C是什么&#xff1f; 拿亚马逊礼品卡搬砖来讲&#xff0c;除了汇率差还有佣金。因为盈利的是美刀&#xff0c;因此比我们国内礼品卡的利润更多。比如亚马逊礼品卡&#xff0c;它的折损率比较低&#xff0c;很容易出手&#xff0c;所以是硬通货的存在。…

SD-WAN与MPLS没有取代之说,合适的才最重要

随着企业网络需求的不断增长和变化&#xff0c;SD-WAN&#xff08;软件定义广域网&#xff09;和MPLS&#xff08;多协议标签交换&#xff09;成为企业网络架构中备受关注的两种技术。然而&#xff0c;值得注意的是&#xff0c;并不存在SD-WAN完全取代MPLS或相反的情况。本文将…

SpringMVC实现对网页的访问,在请求控制器中创建处理请求的方法

目录 测试HelloWorld RequestMapping注解 RequestMapping注解的位置 RequestMapping注解的value属性 RequestMapping注解的method属性 SpringMVC支持路径中的占位符&#xff08;重点&#xff09; SpringMVC获取请求参数 1、通过ServletAPI获取 2、通过控制器方法的形参…

Git系列---标签管理

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 目录 1.理解标签2.创建标签…

ThreadX_note:创建线程

ThreadX 创建线程 ThreadX 是一款实时操作系统 (RTOS)&#xff0c;它提供了一套全面的 API&#xff0c;可以用于创建和管理线程。 创建线程 在 ThreadX 中&#xff0c;我们可以使用 tx_thread_create 函数来创建线程。 exam&#xff1a; #include "tx_api.h"/*…