文章目录
第六章:DNS域名解析服务器
产生原因
IP 地址:是互联网上计算机唯一的逻辑地址,通过 IP 地址实现不同计算机之间的相互通信,每台联网计算机都需要通过 IP 地址来互相联系和分别,但由于 IP 地址是由一串容易混淆的数字串构成,人们很难记忆所有计算机的 IP 地址,这样对于我们日常工作生活访问不同网站是很困难的。
基于这种背景,人们在 IP 地址的基础上又发展出了一种更易识别的符号化标识,这种标识由人们自行选择的字母和数字构成,相比 IP 地址更易被识别和记忆,逐渐代替 IP 地址成为互联网用户进行访问互联的主要入口。这种符号化标识就是域名
域名虽然更易被用户所接受和使用,但计算机只能识别纯数字构成的 IP 地址,不能直接读取域名。因此要想达到访问效果,就需要将域名翻译成 IP 地址。而 DNS 域名解析承担的就是这种翻译效果
作用:
DNS(Domain Name System)是互联网上的一项服务,用于将域名和IP地址进行相互映射,使人更方便的访问互联网。
- 正向解析:域名->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 (美国的军事部门)
- edu(教育机构)
基础结构域名(infrastructure domain):这种顶级域名只有一个,即arpa,用于反向域名解析,因此称为反向域名。
域名服务器类型划分
注意:域名的设置比较严格,不能重复。
组织架构:
根域名服务器:最高层次的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址。本地域名服务器要对因特网上任何一个域名进行解析,只要自己无法解析,就首先求助根域名服务器。则根域名服务器是最重要的域名服务器。假定所有的根域名服务器都瘫痪了,那么整个DNS系统就无法工作。所以根域名服务器并不直接把待查询的域名直接解析出IP地址,而是告诉本地域名服务器下一步应当找哪一个顶级域名服务器进行查询。
在与现有IPv4根服务器体系架构充分兼容基础上,由我国下一代互联网国家工程中心领衔发起的“雪人计划”于2016年在美国、日本、印度、俄罗斯、德国、法国等全球16个国家完成25台IPv6(互联网协议第六版)根服务器架设,事实上形成了13台原有根加25台IPv6根的新格局,为建立多边、民主、透明的国际互联网治理体系打下坚实基础。中国部署了其中的4台,由1台主根服务器和3台辅根服务器组成,打破了中国过去没有根服务器的困境。
顶级域名服务器:负责管理在该顶级域名服务器注册的二级域名。
本地域名服务器:本地域名服务器不属于域名服务器的层次结构,当主机发出DNS查询时,这个查询报文就发送给本地域名服务器。
为了提高域名服务器的可靠性,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.5和223.6.6.6是阿里提供的免费域名解析服务器地址。
- 8.8.8.8是GOOGLE公司提供的DNS,该地址是全球通用的,相对来说,更适合国外以及访问国外网站的用户使用。
命令解析:
[root@localhost ~]# netstat -tulp
### 命令 netstat -tulp 在 Linux 系统中用于显示网络连接、路由表、接口统计信息、伪装连接以及多播成员资格等信息。具体来说,这个命令的各个选项含义如下:-t:显示 TCP 连接。这个选项会让 netstat 仅显示 TCP 协议的连接信息。-u:显示 UDP 连接。这个选项会让 netstat 仅显示 UDP 协议的连接信息。-l:显示监听中的服务器套接字。这个选项用于显示那些正在等待传入连接的套接字(即监听状态的套接字)。-p:显示使用套接字的进程标识符和进程名称。这个选项需要 root 权限来查看非当前用户启动的进程信息。它会显示哪个进程正在使用特定的套接字。将这些选项组合起来,netstat -tulp 命令会列出系统上所有 TCP 和 UDP 协议的监听套接字(即正在等待传入连接的端口),以及这些套接字对应的进程标识符和进程名称。这对于诊断网络连接问题、查看哪些服务正在运行以及它们监听哪些端口非常有用。
搭建DNS域名解析服务器
概述
- BIND:Berkeley Internet Name Domain ,伯克利因特网域名解析服务是一种全球使用最广泛的、最高效的、最安全的域名解析服务程序
安装软件
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# mount /dev/sr1 /mnt
mount: /mnt: WARNING: source write-protected, mounted read-only.
[root@localhost ~]# dnf install bind -y
bind服务中三个关键文件
-
/etc/named.conf : 主配置文件,共59行,去除注释和空行之和有效行数仅30行左右,用于设置bind服务程序的运行
-
/etc/named.rfc1912.zones : 区域配置文件(zone),用于保存域名和IP地址对应关系文件的所在位置,类似于图书目录,当需要修改域名与IP映射关系时需要在此文件中查找相关文件位置
-
/var/named 目录:数据配置文件目录,该目录存储保存域名和IP地址映射关系的数据文件
主配置文件分析
-
主配置文件共4部分组成
- options{}
- logging{}
- zone{}
- include
-
常用参数:
[root@localhost ~]# vim /etc/named.conf
// named.conf
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
// See /usr/share/doc/bind*/sample/ for example named configuration files.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)geoip-directory "/usr/share/GeoIP";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; 是否开启递归查询
[root@localhost ~]# vim /var/named/named.ca # 查看资源文件
; <<>> DiG 9.11.3-RedHat-9.11.3-3.fc27 <<>> +bufsize=1200 +norec @a.root-servers.net
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46900
;; flags: qr aa; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 27;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1472
;; QUESTION SECTION:
;. IN NS;; ANSWER SECTION:
. 518400 IN NS a.root-servers.net.
. 518400 IN NS b.root-servers.net.
. 518400 IN NS c.root-servers.net.
. 518400 IN NS d.root-servers.net.
. 518400 IN NS e.root-servers.net.
. 518400 IN NS f.root-servers.net.
. 518400 IN NS g.root-servers.net.
. 518400 IN NS h.root-servers.net.
. 518400 IN NS i.root-servers.net.
. 518400 IN NS j.root-servers.net.
. 518400 IN NS k.root-servers.net.
. 518400 IN NS l.root-servers.net.
. 518400 IN NS m.root-servers.net.;; ADDITIONAL SECTION:
a.root-servers.net. 518400 IN A 198.41.0.4
b.root-servers.net. 518400 IN A 199.9.14.201
c.root-servers.net. 518400 IN A 192.33.4.12
d.root-servers.net. 518400 IN A 199.7.91.13
e.root-servers.net. 518400 IN A 192.203.230.10
f.root-servers.net. 518400 IN A 192.5.5.241
g.root-servers.net. 518400 IN A 192.112.36.4
h.root-servers.net. 518400 IN A 198.97.190.53
i.root-servers.net. 518400 IN A 192.36.148.17
j.root-servers.net. 518400 IN A 192.58.128.30
k.root-servers.net. 518400 IN A 193.0.14.129
l.root-servers.net. 518400 IN A 199.7.83.42
m.root-servers.net. 518400 IN A 202.12.27.33
a.root-servers.net. 518400 IN AAAA 2001:503:ba3e::2:30
b.root-servers.net. 518400 IN AAAA 2001:500:200::b
c.root-servers.net. 518400 IN AAAA 2001:500:2::c
d.root-servers.net. 518400 IN AAAA 2001:500:2d::d
e.root-servers.net. 518400 IN AAAA 2001:500:a8::e
f.root-servers.net. 518400 IN AAAA 2001:500:2f::f
g.root-servers.net. 518400 IN AAAA 2001:500:12::d0d
h.root-servers.net. 518400 IN AAAA 2001:500:1::53
i.root-servers.net. 518400 IN AAAA 2001:7fe::53
j.root-servers.net. 518400 IN AAAA 2001:503:c27::2:30
k.root-servers.net. 518400 IN AAAA 2001:7fd::1
l.root-servers.net. 518400 IN AAAA 2001:500:9f::42
m.root-servers.net. 518400 IN AAAA 2001:dc3::35;; Query time: 24 msec
;; SERVER: 198.41.0.4#53(198.41.0.4)
;; WHEN: Thu Apr 05 15:57:34 CEST 2018
;; MSG SIZE rcvd: 811
资源记录参数:
a.root-servers.net. 518400 IN A 198.41.0.4
主机名 资源记录的缓存长(时间s) IN(INTERNET) 资源记录的类型 数据(IP/域名)资源记录类型:A(将域名映射到ipv4)-----正向解析AAAA(将域名映射到ipv6)-----正向解析NS(标记dns服务器的主机名(域名))CNAME(别名)-----正向解析PTR(ipv4/ipv6地址指向一个域名)---指针记录-----反向解析SOA(起始授权记录)---------相对与普通资源格式,SOA还会多一个:邮箱地址格式(定义5个参数(参数之间通过空格隔开))# 5个参数:版本号 刷新时间 重试时间 过期时间 否定应答的缓存时间版本号:标记主从服务器之间是否自动产生数据同步重试时间:时间小于刷新时间
区域配置文件
作用:
/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; };
};
正向解析资源文件
概述:
- 查看:
[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地址
域名解析记录分析
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 的博客” 这样的说明
正向解析实验
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# mount /dev/sr1 /mnt
mount: /mnt: WARNING: source write-protected, mounted read-only.
# 安装相关的bind软件
[root@localhost ~]# dnf install bind -y# 做域的自定义信息
[root@localhost ~]# vim /etc/named.conf
options {listen-on port 53 { 192.168.235.128; };directory "/var/named";allow-query { any; };
};
zone "openlab.com" IN {type master;file "named.openlab.com";
};
# 编辑创建域名解析文件
[root@localhost ~]# vim /var/named/named.openlab.com
$TTL 1D
@ IN SOA @ 3260385400.qq.com (20241030001D2H5H1D )IN NS ns.openlab.com.
ns IN A 192.168.235.128www IN A 192.168.235.222
wwww IN CNAME WWW# 重启named程序
[root@localhost ~]# systemctl restart named
# 测试
[root@localhost ~]# nslookup
> server 192.168.235.128
Default server: 192.168.235.128
Address: 192.168.235.128#53
> www.openlab.com
Server: 192.168.235.128
Address: 192.168.235.128#53Name: www.openlab.com
Address: 192.168.235.222
> wwww.openlab.com
Server: 192.168.235.128
Address: 192.168.235.128#53wwww.openlab.com canonical name = WWW.openlab.com.
Name: www.openlab.com
Address: 192.168.235.222
>
反向解析资源文件
[root@server ~]# vim /var/named/named.loopback
$TTL 1D # 每一条资源记录的缓存时间
@ IN SOA @ rname.invalid. ( # 授权的二级域 IN 资源记录类型 数据(授权后的二级域) 邮箱地址0 ; serial # 版本,标记主从服务器数据是否一致1D ; refresh # 刷新时间1H ; retry # 重试时间1W ; expire # 过期时间3H ) ; minimum # 否定应答的缓存时间
IN NS ns.域名. # 域名服务器记录,注意结尾的点
ns IN A 域名解析服务器的IP地址
IP地址 PTR 域名. # PTR 指针记录,用于反向解析
反向解析实验
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# mount /dev/sr1 /mnt
mount: /mnt: WARNING: source write-protected, mounted read-only.
# 安装相关的bind软件
[root@localhost ~]# dnf install bind -y########## 服务端
# 做域的自定义信息
[root@server ~]# vim /etc/named.conf
options {listen-on port 53 { 192.168.235.128; };directory "/var/named";allow-query { any; };
};zone "235.168.192.in-addr.arpa" IN { # 反向解析type master;file "named.192";allow-update { none; };
};[root@server ~]# cp -a /var/named/named.localhost /var/named/named.192
## 创建自定义反向解析资源文件
[root@server ~]# vim /var/named/named.192
$TTL 1D
@ IN SOA @ rname.invalid. (0 ; serial1D ; refresh1H ; retry1W ; expire3H ) ; minimumNS ns.openlab.com.
128 PTR ns.openlab.com.111 PTR www.openlab.com.
123 PTR ftp.openlab.com.
## 重启named服务
[root@server ~]# systemctl restart named########## 客户端(验证)
[root@client ~]# nslookup 192.168.235.128
128.235.168.192.in-addr.arpa name = ns.openlab.com.[root@client ~]# nslookup 192.168.235.111
111.235.168.192.in-addr.arpa name = www.openlab.com.[root@client ~]# nslookup 192.168.235.123
123.235.168.192.in-addr.arpa name = ftp.openlab.com.# dig命令比nslookup命令的显示结果更详细
[root@client ~]# dig -x 192.168.235.111; <<>> DiG 9.16.23-RH <<>> -x 192.168.235.111
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3386
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 7790eb91190291d8010000006724bfae1dd94bdce1e8294b (good)
;; QUESTION SECTION:
;111.235.168.192.in-addr.arpa. IN PTR;; ANSWER SECTION:
111.235.168.192.in-addr.arpa. 86400 IN PTR www.openlab.com.;; Query time: 2 msec
;; SERVER: 192.168.235.128#53(192.168.235.128)
;; WHEN: Fri Nov 01 19:46:54 CST 2024
;; MSG SIZE rcvd: 114
更改网卡设置:
[root@client ~]# nmcli device show # 查看网卡设置
GENERAL.DEVICE: ens160
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 00:0C:29:C3:99:AC
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: ens160
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.235.131/24
IP4.GATEWAY: 192.168.235.2
IP4.ROUTE[1]: dst = 192.168.235.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 192.168.235.2, mt = 100
IP4.DNS[1]: 192.168.235.2
IP4.DOMAIN[1]: localdomain
IP6.ADDRESS[1]: fe80::20c:29ff:fec3:99ac/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 1024GENERAL.DEVICE: lo
GENERAL.TYPE: loopback
GENERAL.HWADDR: 00:00:00:00:00:00
GENERAL.MTU: 65536
GENERAL.STATE: 100 (connected (externally))
GENERAL.CONNECTION: lo
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/1
IP4.ADDRESS[1]: 127.0.0.1/8
IP4.GATEWAY: --
IP6.ADDRESS[1]: ::1/128
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = ::1/128, nh = ::, mt = 256
[root@client ~]# vim /etc/resolv.conf
[root@client ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.235.128 # 配置文件里的网卡设置优先级高于选项卡中的网卡设置,所以可以直接在配置文件里进行修改
主从服务器实验
实验1:完全区域传送
设备 | IP | 系统 |
---|---|---|
主服务器 | 192.168.235.128 | Euler |
从服务器 | 192.168.235.131 | Euler |
配置前提:两个服务器恢复快照,关闭防火墙和linux,安装软件
[root@server ~]# systemctl stop firewalld.service
[root@server ~]# setenforce 0
[root@server ~]# mount /dev/sr1 /mnt
mount: /mnt: WARNING: source write-protected, mounted read-only.
[root@server ~]# dnf install bind -y
主服务器
[root@server ~]# vim /etc/named.conf
options {listen-on port 53 { 192.168.235.128; };directory "/var/named";allow-query { any; };allow-transfer { 192.168.235.131; }; # 允许传送资源记录文件到从服务器主机
};zone "openlab.com" IN {type master;file "named.openlab.com";
};zone "235.168.192.in-addr.arpa" IN {type master;file "name.192";allow-update { none; };
};[root@server ~]# vim /var/named/named.192
$TTL 1D
@ IN SOA @ rname.invalid. (0 ; serial1D ; refresh1H ; retry1W ; expire3H ) ; minimumNS ns.openlab.com.
ns IN A 192.168.235.128
www IN A 192.168.235.222
wwww IN CNAME WWW128 PTR ns.openlab.com.
111 PTR www.openlab.com.
123 PTR ftp.openlab.com.# 重启named服务
[root@server ~]# systemctl restart named
从服务器
[root@client ~]# vim /etc/named.conf
options {listen-on port 53 { 192.168.235.131; };directory "/var/named/slaves";allow-query { any; };
};
zone "openlab.com" IN {type slave;file "named.openlab.com";masters { 192.168.235.128; };
};
zone "235.168.192.in-addr.arpa" IN {type slave;file "named.192";masters { 192.168.235.128; };
};
## 重启named服务,在重启服务的同时从服务器向主服务器发出同步请求
[root@client ~]# systemctl restart named
[root@client ~]# ll /var/named/slaves/
total 16
-rw-r--r--. 1 named named 821 Nov 3 12:09 managed-keys.bind
-rw-r--r--. 1 named named 1717 Nov 3 12:09 managed-keys.bind.jnl
-rw-r--r--. 1 named named 403 Nov 2 09:38 named.192
-rw-r--r--. 1 named named 622 Nov 3 12:09 named.openlab.com# 验证
[root@client ~]# nslookup 192.168.235.128
128.235.168.192.in-addr.arpa name = ns.openlab.com.[root@client ~]# nslookup 192.168.235.111
111.235.168.192.in-addr.arpa name = www.openlab.com.[root@client ~]# nslookup www.openlab.com
Server: 192.168.235.128
Address: 192.168.235.128#53Name: www.openlab.com
Address: 192.168.235.222[root@client ~]# nslookup ftp.openlab.com
Server: 192.168.235.128
Address: 192.168.235.128#53Name: ftp.openlab.com
Address: 192.168.235.123
实验2:增量区域传送
功能:仅复制区域里变化的文件
主服务器
[root@server ~]# vim /var/named/named.openlab.com
$TTL 1D
@ IN SOA @ rname.invalid. (20241103011M1M1M3M )IN NS ns.openlab.com.IN NS slave.openlab.com.
slave IN A 192.168.235.131
ns IN A 192.168.235.128www IN A 192.168.235.222
ftp IN A 192.168.235.123
mail IN A 192.168.235.111
wwww IN CNAME WWW
# 重启服务,在从服务器同步监听之后做
[root@server ~]# systemctl restart named
从服务器
## 同步监听
[root@client ~]# tail -f /var/log/messages
Nov 3 12:19:58 localhost named[3528]: client @0x7f164805a4f8 192.168.235.128#55497: received notify for zone 'openlab.com'
Nov 3 12:19:58 localhost named[3528]: zone openlab.com/IN: notify from 192.168.235.128#55497: serial 2024110301
Nov 3 12:19:58 localhost named[3528]: zone openlab.com/IN: Transfer started.
Nov 3 12:19:58 localhost named[3528]: transfer of 'openlab.com/IN' from 192.168.235.128#53: connected using 192.168.235.131#47187
Nov 3 12:19:58 localhost named[3528]: zone openlab.com/IN: transferred serial 2024110301
Nov 3 12:19:58 localhost named[3528]: transfer of 'openlab.com/IN' from 192.168.235.128#53: Transfer status: success # 同步成功
Nov 3 12:19:58 localhost named[3528]: transfer of 'openlab.com/IN' from 192.168.235.128#53: Transfer completed: 1 messages, 13 records, 321 bytes, 0.002 secs (160500 bytes/sec) (serial 2024110301)
Nov 3 12:19:58 localhost named[3528]: zone openlab.com/IN: sending notifies (serial 2024110301)# 验证:
[root@client ~]# nslookup
> server 192.168.235.131
Default server: 192.168.235.131
Address: 192.168.235.131#53
> ftp.openlab.com
Server: 192.168.235.131
Address: 192.168.235.131#53Name: ftp.openlab.com
Address: 192.168.235.123
> mail.openlab.com
Server: 192.168.235.131
Address: 192.168.235.131#53Name: mail.openlab.com
Address: 192.168.235.111
>
注意:
1,序号需要比原序号大
2,更新频率可以改小一点,这样比较快看到实验结果
3,需要写一条关于从服务器的NS和A记录,不然新增的数据有时能更新有时无法更新
实验3:转发区域传送
由于物理主机不支持同时开启三台主机,所以该转发功能仅存在于理论,未进行真实的实验,下面的配置信息和结果仅供理论参考:
主服务器
[root@server ~]# vim /etc/named.conf
options {listen-on port 53 { 192.168.235.133; };forwarders { 192.168.235.128; };forward only;
};zone "openlab.com" IN {type master;file "named.openlab.com";
};zone "qq.com" IN {type master;file "named.openlab.com";
};zone "235.168.192.in-addr.arpa" IN {type master;file "named.192";allow-update { none; };
};[root@server ~]# vim /var/named/named.openlab.com
$TTL 1D
@ IN SOA @ rname.invalid. (20241101011M1M1M3M )IN NS ns.openlab.com.IN NS slave.openlab.com.
slave IN A 192.168.235.131
ns IN A 192.168.235.128www IN A 192.168.235.222
ftp IN A 192.168.235.123
mail IN A 192.168.235.111
wwww IN CNAME WWW131 PTR slave.openlab.com.
128 PTR ns.openlab.com.
123 PTR ftp.openlab.com.
# 重启named服务
[root@server ~]# systemctl restart named
从服务器
# 验证:
[root@client ~]# nslookup 192.168.235.128
128.235.168.192.in-addr.arpa name = ns.openlab.com.[root@client ~]# nslookup 192.168.235.111
111.235.168.192.in-addr.arpa name = www.openlab.com.[root@client ~]# nslookup www.openlab.com
Server: 192.168.235.128
Address: 192.168.235.128#53Name: www.openlab.com
Address: 192.168.235.222
内容回顾:
DNS服务器:
1,作用:提供数据(正向解析:域名—>IP;反向解析:IP—>域名)解析;
2,DNS端口:53端口,既支持TCP,又支持UDP;
3,DNS解析过程
(1)客户端主机(本地主机)
- 采用递归的方式执行dns解析过程;
- 解答结果分为肯定答案和否定答案;
(2)本地dns服务器解析(缓存,本地dns服务器,转发服务)
- 采用迭代的方式执行dns解析过程;
- 解答结果为权威答案;
(3)权威(权限)域名服务器
4,本地dns服务器(类型)
5,bind dns服务程序包—>程序的主进程:named
实验1:搭建DNS服务器:
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# mount /dev/sr1 /mnt
mount: /mnt: WARNING: source write-protected, mounted read-only.# 安装相关的bind软件
[root@localhost ~]# dnf install bind -y
# 做域的自定义信息
[root@localhost ~]# vim /etc/named.conf
options {listen-on port 53 { 192.168.235.128; };directory "/var/named";allow-query { any; };
};
zone "openlab.com" IN {type master;file "named.openlab.com";
};
# 编辑创建域名解析文件
[root@localhost ~]# vim /var/named/named.openlab.com
$TTL 1D
@ IN SOA @ 3260385400.qq.com (20241030001D2H5H1D )IN NS ns.openlab.com.
ns IN A 192.168.235.128www IN A 192.168.235.222
wwww IN CNAME WWW# 重启named程序
[root@localhost ~]# systemctl restart named
# 测试
[root@localhost ~]# nslookup
> server 192.168.235.128
Default server: 192.168.235.128
Address: 192.168.235.128#53
> www.openlab.com
Server: 192.168.235.128
Address: 192.168.235.128#53Name: www.openlab.com
Address: 192.168.235.222
> wwww.openlab.com
Server: 192.168.235.128
Address: 192.168.235.128#53wwww.openlab.com canonical name = WWW.openlab.com.
Name: www.openlab.com
Address: 192.168.235.222
>
命令拓展
验证查看资源解析结果:
#### 查看解析
# 方式一:
[root@client ~]# nslookup
> server 192.168.235.128
Default server: 192.168.235.128
Address: 192.168.235.128#53
> www.openlab.com
Server: 192.168.235.128
Address: 192.168.235.128#53Name: www.openlab.com
Address: 192.168.235.222
> wwww.openlab.com
Server: 192.168.235.128
Address: 192.168.235.128#53wwww.openlab.com canonical name = WWW.openlab.com.
Name: www.openlab.com
Address: 192.168.235.222
>
# 方式二:(更详细的显示)
[root@client ~]# dig www.openlab.com @192.168.235.128; <<>> DiG 9.16.23-RH <<>> www.openlab.com @192.168.235.128
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43090
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: cdd53a15f0ff5d59010000006724b716d8eca8772769e34f (good)
;; QUESTION SECTION:
;www.openlab.com. IN A;; ANSWER SECTION:
www.openlab.com. 86400 IN A 192.168.235.222;; Query time: 4 msec
;; SERVER: 192.168.235.128#53(192.168.235.128)
;; WHEN: Fri Nov 01 19:10:14 CST 2024
;; MSG SIZE rcvd: 88
解析ipv6的IP:
[root@client ~]# dig -t AAAA www.openlab.com @ip地址
解析百度的域名:
[root@client ~]# dig www.baidu.com; <<>> DiG 9.16.23-RH <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34933
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0;; QUESTION SECTION:
;www.baidu.com. IN A;; ANSWER SECTION:
www.baidu.com. 5 IN CNAME www.a.shifen.com.
www.a.shifen.com. 5 IN A 180.101.50.188
www.a.shifen.com. 5 IN A 180.101.50.242;; Query time: 31 msec
;; SERVER: 192.168.235.2#53(192.168.235.2)
;; WHEN: Fri Nov 01 19:14:58 CST 2024
;; MSG SIZE rcvd: 90
更改配置文件的dns的网卡设置:
[root@client ~]# vim /etc/resolv.conf
[root@client ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.235.128