从零开始的云计算生活——第十九天,勤勤恳恳,DNS服务
目录
一.故事背景
二.DNS概述
概念
作用
监听端口
默认运行用户
三. 完全限定域名
组成
域类型
四.DNS解析过程
客户端如何解析域名
五.域名服务器的分类
根据作用
根据应用场景
六.DNS服务器部署
七.配置主服务器单点架构
八.配置主从服务器架构
九.使用脚本配置服务器
十.总结
一.故事背景
在学习脚本之后,每天都在思考脚本的编写过程,将每次博客内容写成脚本运行,比想象中的难道大一些,不仅仅是把命令按顺序写下来,还要思考会发生的各种情况,并把问题解决,再运行纠错,最终达到想要的结果,就像在解一道谜题,很有意思,进入今天的内容。
二.DNS概述
概念
Domain Name Service,一套分布式的域名服务系统,即有多个DNS服务器遍布于世界。每个DNS服务器上存放着大量的机器域名和IP地址的映射,并且是动态更新。众多网络客户端程序都使用DNS协议来向DNS服务器查询目标主机的IP地址。
作用
正向解析:将已知的域名解析为IP地址 反向解析:将已知的IP地址解析为域名
监听端口
53/udp | 53/TCP
默认运行用户
named
三. 完全限定域名
FQDN(Fully Qualified Domain Name)
组成
主机名.三级域.二级域名.顶级域名.
案例:www.baidu.com.
域类型
四.DNS解析过程
客户端如何解析域名
-
本地DNS缓存
-
本地hosts文件,在DNS服务器诞生之前,所有的主机之间都是通过hosts文件进行的。
-
指向的DNS服务器IP:
递归查询:直接给出解析结果,客户机与本地DNS服务器之间的查询。(所答即所问) 迭代查询:没有给出解析结果,本地DNS服务器与根等其他DNS服务器之间的查询。(所答非所问)
五.域名服务器的分类
根据作用
1.根域名服务器:最高层次的域名服务器,也是最重要的域名服务器。所有的根域名服务器都知道 所有的顶级域名服务器的域名和IP地址。
2.顶级域名服务器:负责管理该顶级域名注册的二级域名。
3.权限域名服务器:负责一个“区”的域名服务器。
4.本地域名服务器:本地域名服务器不属于域名服务器的层次结构,但是它对域名系统非常重要。 当一个主机发出DNS查询请求时,这个查询请求报文就发送给本地域名服务 器。
根据应用场景
主服务器(Primary Name server) 为客户端提供域名解析的主要区域,主DNS服务器宕机,会启 用从DNS服务器提供服务。
辅助服务器(Second Name Server) 主服务器DNS长期无应答,从服务器也会停止提供服务,主 从区域治安的同步采用周期性检查+通知的机制,从服务器周 期性地检查主服务器上地记录情况,一旦发现修改就会同步, 另外主服务器上如果又数据被修改了,会立即通知从服务器更 新记录。
高速缓存服务器(Cache-only server) 缓存服务器是一种不负责域名数据维护,也不负责域名解析 地DNS服务类型。它将用户经常使用到的域名与IP地址解析 记录保存在主机本地中,来提升下次解析的效率。
六.DNS服务器部署
安装bind包
查看安装生成的核心文件
/etc/named.conf #服务主配置文件
/etc/named.rfc1912.zones #服务主配置的额外配置文件
/var/named #区域文件数据目录
/var/named/named.ca #可信的根域名服务器,不要擅自更改
/var/named/named.empty #区域文件的模版文件
/var/named/named.localhost #区域文件的本地接口模版文件
/var/named/named.loopback #区域文件回环接口的模版文件
/var/named/slaves #从服务器的区域数据存储目录
/var/log/named.log #服务日志文件
七.配置主服务器单点架构
先将防火墙等关闭
进入/etc/named.conf中,先修改监听端口号,ipv6不使用可以注释掉,允许访问改成任意
再打开named.rfc1912.zones文件,将全部案例注释掉
选择复制正向解析文件和反向解析文件
定义一个域名和路径,反写地址段
再去/var/named 中复制两个模板(将权限也一起复制)
进入正向解析文件,内容如下:
将第二个@改成域名 ,后面是邮件地址写一个,中间五排不改动,NS指定域名服务器,A是ipv4地址解析记录,AAAA则是ipv6(用不上删除即可),在A前写主机名A后写IP,之后可以再加一个别名记录,邮件解析记录(当你解析mail时,会指向设置的ip地址,但不保证能通)
解析记录说明:
正向解析文件中:
A:IPv4正向解析记录
AAAA:IPV6正向解析记录
NS:DNS服务器解析记录
MX:邮件解析记录
CNAME:别名解析记录
反向解析文件中:
PTR:反向解析记录
反向解析记录先为空,然后将/etc/named.rfc1912.zones反向解析部分注释掉
成功运行named
打开另一台主机,打开/etc/resolv.conf修改内容
成功修改本机DNS
解析地址
再打开反向解析,并对应修改内容
重启服务后,监听53口,全部解析成功
当主机停止named服务时,就无法完成解析
八.配置主从服务器架构
从属服务器不需要修改域文件,先修改主文件
从服务器先下载bind,然后编辑/etc/named.conf和named.rfc1912.zones
主服务器重启named服务,然后从服务器打开服务
此时报错,发现之前文件不让更新,将这两行去掉更改结束
成功激活后,去第二台的/etc/resolv.conf加入从属的地址
此时监控会出现从属地址,关闭主服务器named服务,再次解析
依然可以解析。
九.使用脚本配置服务器
主服务器脚本配置
#!/bin/bash#关闭防火墙systemctl disable --now firewalldif [ $(getenforce) != \"disabled\" ];thensed -i \'s/=$(getenforce)/=disabled/g\' /etc/selinux/configfiyum install -y bindif [ $? -ne 0 ];thenecho \"请检查网络或者检查安装包名称是否正确\"firead -p \"请输入监听端口的ip地址:\" ipsed -i \"13s/.* /listen-on port 53 { ${ip}; /g\" /etc/named.confsed -i \"21s/.* /allow-query { any; /g\" /etc/named.confread -p \"请书写一个域名(xxx.com):\" zonesread -p \"请书写ip地址的反写(例如ip为192.168.100.1,则书写100.168.192)\" piecho \"zone \\\"${zones}\\\" IN { type master; file \\\"${zones}.zones\\\"; allow-update { none; };};zone \\\"${pi}.in-addr.arpa\\\" IN { type master; file \\\"${pi}.zones\\\"; allow-update { none; };};\">/etc/named.rfc1912.zonescp -p /var/named/named.empty /var/named/${zones}.zonescp -p /var/named/named.empty /var/named/${pi}.zonesecho \"\\$TTL 3H@ IN SOA ${zones}. admin.${zones}. ( 0 ; serial 1D ; refresh 1H ; retry1W ; expire 3H ) ; minimum NS dns1.${zones}.dns1 A ${ip}\">/var/named/${zones}.zonesa=`echo ${ip} | cut -d\".\" -f4`echo \"\\$TTL 3H@ IN SOA ${zones}. admin.${zones}. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum@ NS dns1.${zones}.$a PTR ${ip}\">/var/named/${pi}.zoneswhile :;doread -p \"请输入想要起的域名的别名(输入0退出):\" othernameif [ \"$othername\" == \"0\" ];thenecho \"别名命名结束\"breakelseecho \"$othername CNAME dns1.${zones}. \">>/var/named/${zones}.zonesecho \"$a PTR ${othername}.${zones}.\">>/var/named/${pi}.zonesfidonesystemctl start named
运行结果和过程
在验证的服务器上编写一个修改resolv.conf文件的脚本,然后进行验证
十.总结
配置DNS内容相对简单,上次脚本运行屡屡出错,这次虽然坎坷,但是最终达成结果,继续努力对脚本的练习。