> 技术文档 > 从零开始的云计算生活——第十九天,勤勤恳恳,DNS服务

从零开始的云计算生活——第十九天,勤勤恳恳,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)

域名缩写 机构类型 com 商业系统 edu 教育系统 gov 政府机关 mil 军队系统 net 网管部门 org 非盈利性组织 firm 商业或公司 store 提供购买商业的业务部门 arts 以文化为主的实体 web 主要活动与www有关的实体 rec 以消遣娱乐活动为主的实体 inf 提供信息服务的实体
组成

主机名.三级域.二级域名.顶级域名.

案例:www.baidu.com.

域类型
类型 举例 根域 . 顶级域 cn、hk、uk、org、edu、com、mil、gov、net 二级域 baidu、163、sina、sohu

四.DNS解析过程

客户端如何解析域名
  1. 本地DNS缓存

  2. 本地hosts文件,在DNS服务器诞生之前,所有的主机之间都是通过hosts文件进行的。

  3. 指向的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内容相对简单,上次脚本运行屡屡出错,这次虽然坎坷,但是最终达成结果,继续努力对脚本的练习。