一.关于dns的名词解释
DNS(DomainNameSystem,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。通常DNS在查询的时候是以udp这个快速的传输协议来查询的,如果一旦没有办法查询到完整的信息时就会再次以TCP协议来进行重新查询,因此DNS服务在启动的时候会同时开启tcp的53端口和udp的53端口。
DNS的主要作用就是将主机名解析成IP地址的过程,通过配置DNS服务器地址,主机不需要知道对应的IP地址就能通过主机名的形式访问互联网。
(1)DNS服务器其实就是存放域名和IP对应的数据库文件,那么它的查询类型有哪些?分为两种
递归查询,如果A查询不到ibm.com,服务器A会向下一个服务器B查询,直到找到答案返回
迭代查询,如果A没有ibm.com,但是知道B有,就发送给PC,让它去找B
(2)DNS服务器的解析是双向的:
NAME----->ip : 正向解析,根据主机名查找到对应的IP
ip------>FQDN: 反响解析,根据ip查找到对应的域名
(3)DNS服务器响应客户端请求解析流程
Client -->hosts文件 -->DNS Service Local Cache --> DNS Server(recursion) --> Server Cache --> iteration(迭代) --> 根-->顶级域名DNS-->二级域名DNS…
请求-----> 本地的/etc/hosts # 如果host文件里有解析,那么返回host文件的解析结果,没有下一步
----> 本地DNS缓存 # 查找本地的DNS缓存,如果有,返回结果,没有下一步
----> 找第一台dns服务器 ---->查找缓存 # 查找自己定义的第一个DNS服务器,DNS服务器查找缓存,如果有,返回结果,如有没有,下一步
----> 看看是不是自己负责的域-------> 返回结果 # 第二个DNS正好负责改域,返回结果
↓ 是
不是 # 第二个自己定义的DNS ,没有结果,直接去找根服务器再一步一步往下级域名找
↓
找根DNS服务器
解析记录在DNS当中称为DNS数据库。DNS数据库又称为正解和反解,正解就是从主机名到IP过程,反解就是IP反向解析到主机名的过程,无论正解还是反解,每个域名所对应的解析记录称之为zone(域),如mail.com这个zone,正解和反解在zone记录中是由众多的RR(资源记录)组成的,这些记录的类型有:A,AAAA, PTR, SOA, NS, CNAME, MX。
(4)DNS服务器类型
1.主DNS服务器:管理和维护所负责解析的域内解析库的服务器
2.从DNS服务器:从主服务器或从服务器“复制”(区域传输)解析库副本
3.缓存服务器(也叫转发器):“通知”机制,主服务器解析库发生变化时,会主动通知从服务器
二. dns服务器的部署
1.关于客户端(测试主机): 在访问远程DNS服务器时需要在测试机上设定指向 ,在/etc/resolv.conf中指向文件
测试用到的命令: host www.baidu.com 地址解析命令
dig www.baidu.com 地址详细解析命令
2.对于DNS服务器
安装包:bind
服务名称:named
主配置文件:/etc/named.conf
数据目录:/var/named
默认端口号:53
3.报错信息
(1)no server could be reached 表示服务无法访问 (服务开启?火墙?网络?端口?)
(2)服务启动失败 配置文件写错 journalctl -xe 查询错误
(3)dig的查询状态显示: NOERROR 查询成功 REFUSED 服务拒绝被访问 SERVFAIL 查询记录失败(dns 无法到达上级,拒绝缓存) NXDOMAIN 此域名记录在dns中不存在
二.dns服务的安装与启用
1.安装 dnf install bind -y
2.若火墙开启需要做如下设定
systemctl enable --now named
firewall-cmd --permanent --add-service=dns
firewall-cmd --reload
测试界面:
在未开启端口信任和允许所有人访问时的测试结果为:
在修改配置/etc/named 文件后,开启端口信任和允许所有人访问后的测试结果为:
最后显示SERVFAIL 表示服务安装成功可访问,但查询的记录失败被拒绝。
还需要关闭主配置文件中的 dns检测,dns能够缓存外部信息到本记录。
在设定好上述配置后 重启服务 systemctl restart named
三.dns的原始的正向解析配置
(1)在装有dns的主机中 vim /etc/named.conf 中写入A记录文件 下列内容
(2)将/var/named/named..localhost 的作为模版 复制到/var/named/ westos.com.zone 中 写入下列地址解析文件
(3)重启服务 在测试机上做好指向之后 测试结果如下
四.常规的正向解析配置
(1)一般情况下A记录不应当写在主配置文件中,应当写入/etc/named.rfc1912.zone文件中
(2)CNAME规范域名 在/var/named/westos.com.zone 中写好dns的域名ip地址一些信息
在westos.com.zone 文件中各项的含义
规范域名测试结果
(3)MX 邮件解析
首先需要在测试机上安装发邮件需要用到的软件
安装好之后需重启服务 postfix.service
然后在/var/named/westos.com.zone写入邮件域名
测试结果:
在测试件上发邮件
五.dns的反向解析配置
反向解析就是 当dig -x 172.25.254.20 当digIP地址时,将主机名反馈给用户
(1)在/etc/named.rfc1912.zone中写入反向A记录
(2)重新建立/var/named/172.25.254.ptr 在其中做好反向域名地址解析配置
(3)退出重启服务 看测试结果
六.双向解析
1.实验环境的配置
一台主DSN服务器(该服务器有两个IP地址 1.1.1.10 和172.25.254.20),一台测试机(1.1.1.10)一台副DNS服务器(172.25.254.30)
实验前的问题引出:
当在测试机上dig www.westos.com 时 应该出现1网段dig出现的应该是1网段 172 网段dig 应该出现的是172网段,此时出现的情况是 都只能dig 到172网段 如何解决上述问题,设及到DNS的多项解析
2.多项解析
(1)首先在主DNS的主配置文件/etc/named.conf文件中指定两个网段
···注释原来的A记录,重写A记录。
(2)创建/etc/named.rfc1912.1.zones 和 /var/named/westos.com.1.zone
测试结果:
在1.1.1.30主机上能解析出1.1.1.10
在172.25.254.10上能解析得到172网段
因此上述操作实现了dns双向解析
七. 辅助dns(集群dns)的配置
若一直访问一台DNS服务器,服务器将处于超负荷状态,因此需要配置多台副dns服务器来同步主DNS服务器。
重新配置一台副DNS ip地址为172.25.254.30, 配置另外一台安装有DNS服务的主机,做好dns检测 开启53端口 和信任用户 这台主机叫副DNS 主要是为了缓解主dns服务访问压力。
(1)在30主机上做好副dns的/etc/named.rfc1912.zones的设定
(2)在20主机 主DNS中做如下设定
首先是修改/etc/named.rfc1912.zones 让其能知道谁是副dns
然后修改主配置文件
测试:需要删除辅助dns的数据然后重启dns服务数据才能重新同步,这个过程需要重复操作,为解决自动同步dns数据服务,需要做如下操作,
2.数据同步配置
(1)在主dns上修改 /etc/named.rfc1912.zones 和 修改/var/named/westos.con.zone里面的刷新次数
测试;
3.dns的远程更新
(1)基于ip地址的更新
在主dns中配置文件/etc/named.rfc1912.zones
测试:在10主机上写入要更新的信息
在20主机上看效果
(2)基于key的更新认证
首先生成公钥和私钥
根据生成的公钥和私钥的密码编写加密文件
在20主机的主配置文件了添加加密文件目录
在/etc/named.rfc1912.zones里面加入密钥认证
将20主机生成的公钥和私钥分享到10主机上
测试结果:
在10主机上输入如下内容
在20主机上dig的效果如下:
八.动态dns解析(dhcp+dns)
问题导出:当被解析的服务器采用dhcp网络的工作方式时,dns无法搞定每次变化的ip和主机的对应关系。为解决该问题,引入动态dns解析的概念,即ddns 业内人士称之为花生壳。
1.dhcp服务的安装与启用
(1)dnf install dhcp-server -y
cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
配置文件相关内容 vim /etc/dhcp/dhcpd.conf
重启服务 在另外一台主机上 ip addr show westos 可以查看到动态或取得IP地址,此时表明dhcp服务安装成功。
2.dns服务的启用与配置
(1)生成dns 的key
写key文件
(2)指定key文件到相应的文件中
首先在/etc/name.conf 中指定key文件 所在目录
然后在/etc/named.rfc1912.zones文件中可以更新key
在/var/named/westos.com.zone 里面写入A记录
(3)在dhcp主配置文件中指定key
(4)在另外一台主机上dig 可以发现能查看到更新的域名dns