配置与管理DNS服务器
课程目标:
- 了解DNS服务器的作用;
- 掌握DNS的域名解析过程;
- 掌握DNS服务器的安装与配置;
- 场景介绍:
在Internet环境中,数以亿计的服务器、个人主机通过大量交换机、路由器等设备相互连接,而IP地址成为不同主机之间相互访问的基本识别条件。通过IP地址,可以访问到网络中的各个服务器,如网站服务器,邮件服务器等。然而对于大多数用户,想要把互联网中各个服务器的IP地址都记住,不太现实。于是为了使用户更容易接收和理解,Internet中大量的网站等各种服务器都使用了域名形式的地址,例如www.baidu.com、mail.163.com等。比直接使用202.20.20.12、203.2.5.6的IP形式更加让人接受。因此DNS域名解析服务由此而来。
2、项目知识准备
2.1、DNS(Domain Name Service,域名服务)是Internet/Intranet中最基础也是非常重要的一项服务,主要作用就是维护一个主机域名和IP地址的对应关系数据库,在需要的时候为客户端网络程序提供以下两个方面的地址解析功能。
2.1.1、正向解析:将主机的名称(域名)解析为对应的IP地址。域名的正向解析是DNS服务器最常用也是最基本的功能
2.1.2、反向解析:将IP地址解析为对应的域名。
2.2、认识域名空间
在整个internet中,如果将数以亿计的域名和IP地址对应关系添加到一台DNS服务器中管理,并处理整个互联网中客户机的域名解析请求,即便是超算中心,查询域名的效率也会非常低。因此internet中的域名系统采用分布式的数据库方式,将不同范围的域名和IP地址对应关系交给不同的DNS服务器进行管理。这个分布式数据库采用树形结构,全世界的域名系统都具有唯一的跟(.)。域名空间结构如下图:
注意:在域名空间中,DNS树的最大深度不得超过127层,树中的每个节点最长可以存储63个字符。
2.3、域和域名:
域名通常由一个完全正式域名(Fully Qualified Domain Name,FQDN)标识。FQDN是包含主机名和其所在域名的完整地址,它能准确表示出其相对于DNS域树根的位置,也就是节点到DNS树根的完整表述方式,从节点到树根采用反向书写,并将每个节点用“.”分隔。如新浪网站服务器地址www.baidu.com,其中www表示服务器的主机名(大多数的网站服务器都是用该名称),baidu为二级域,也可以说是com的子域。或news.baidu.com和tieba.baidu.com,news和tieba都是baidu的子域。
2.4、域名空间
Internet域名空间的结构为一棵倒置的树,对域名空间整体进行划分,由最顶层到下层,可以分成:根域、顶级域、二级域、子域。
- “.”根域服务器,是所有主机域名解析的源头,其记录着internet中的重要DNS信息(只负责记录一级域中各个DNS服务器的IP地址),由internet域名注册授权机构管理。地址中最后的”.”通常被省略。全球有13个根域服务器。
- DNS根域下面是顶级域,也由Internet域名注册授权机构管理。共有3种类型的顶级域。组织域:采用3个字符的代号,表示DNS域中所包含的组织的主要功能或活动。比如,com为商业机构组织,edu为教育机构组织,gov为政府机构组织,mil为军事机构组织,net为网络机构组织,org为非营利机构组织,int为国际机构组织。地址域:采用两个字符的国家或地区代号,如cn为中国、kr为韩国、us为美国。反向域:这是个特殊域,名字为.in-addr.arpa,用于将IP地址映射到名字(反向查询)。
- 对于顶级域(一级域)的下级域,域名注册授权机构授权给拥有顶级域使用权的组织或企业。当一个组织或企业获得对域名空间的授权后,该组织或企业负责命名其所分配的域及其子域,包括域中的计算机及其他设备,并管理分配的域中主机名与IP地址的映射信息。如,百度公司获得了baidu.com的授权,baidu.com的子域,如news.baidu.com或www.baidu.com,由百度公司自己定义。
- 组成DNS系统的核心是DNS服务器,它是回答DNS查询的计算机,DNS服务器是一个保存了主机名(域名)和对应IP地址的数据库。
2.4、区(zone):
在internet中,每一台DNS服务器都只负责管理一个有限范围(一个或几个域)内的主机域名和IP地址的对应关系,这些特定的DNS域成为“zone”(区域)。根据地址解析的方向不同,DNS区域相应的也分为正向区域(域名到IP的解析)和反向区域(IP到域名的解析)。
3、DNS服务器的分类
DNS服务器分类以下四类:
3.1、主DNS服务器:
主(Master或Primary)DNS服务器负责维护一个区域的所有域名信息,是特定的所有信息的权威信息源,数据可以修改。配置主域服务器需要一整套的配置文件,主要包括主配置文件(/etc/named.conf)、区域配置文件、正向域的区文件、反向域的区文件。
3.2、辅助DNS服务器:
辅助DNS服务器(Slave或Secondary)用于分担主DNS服务器的查询负载。区文件是从主服务器中转移出来的,并作为本地磁盘文件存储在辅助服务器中。在辅助DNS服务器中有一个所有域信息的完整复制,可以有权威地回答对该域的查询请求。当主域名服务器出现故障、关闭或负载过重时,辅助域名服务器作为主域名服务器的备份提供域名解析服务。辅助域名服务器中的区域文件中的数据是从主域名服务器中复制过来的,是不可以修改的。
3.3、转发DNS服务器:
转发DNS服务器(Forwarder Name Server)可以向其他DNS转发解析请求。在DNS服务器收到客户端的解析请求后,它首先会尝试从其本地数据库中查找;若未能找到,则需要向其他指定的DNS服务器转发解析请求;其他DNS服务器完成解析后会返回解析结果,转发DNS服务器将该解析结果缓存在自己的DNS缓存中,并向客户端返回解析结果。在缓存期内,如果客户端请求解析相同的名称,则转发DNS服务器会立即回应客户端;否则,将会再次发生转发解析的过程。
3.4、唯高速缓存DNS服务器
供本地网络上的客户机用来进行域名转换。它通过查询其他DNS服务器并将获得的信息存放在它的高速缓存中,为客户机查询信息提供服务。唯高速缓存DNS服务器(Caching-only DNS server)不是权威性的服务器,因为它提供的所有信息都是间接信息。
4、DNS查询模式:
4.1、递归查询:
在收到DNS客户端的查询请求后,DNS服务器在自己的缓存或区域数据库中查找。如果DNS服务器本地没有存储查询的DNS信息,那么,该服务器会询问其他服务器,并将返回的查询结果提交给客户端。总结:只发送一次请求,就会获得结果
4.2、迭代查询(转寄查询):
在收到DNS客户端的查询请求后,如果在DNS服务器中没有查到所需数据,该DNS服务器便会告诉DNS工作站另外一台DNS服务器的IP地址,然后,再由DNS客户端自行向此DNS服务器查询,依此类推,直到查到所需数据为止。如果到最后一台DNS服务器都没有查到所需数据,则通知DNS客户端查询失败。“迭代”的意思就是,若在某地查不到,该地就会告诉你其他地方的地址,让你转到其他地方去查。一般在DNS服务器之间的查询请求便属于迭代查询。总结:发送多次请求,才能得到最终结果
5、域名解析过程
5.1、DNS域名解析的工作原理:
案例:客户端访问www.163.com域名,DNS服务器为企业内部自己搭建的,IP为192.168.10.2,域名解析过程如下:
(1)客户端向本地DNS服务器192.168.10.2直接查询www.163.com的域名。
(2)本地DNS无法解析此域名,它先向根域服务器发出请求,查询.com的DNS地址。
(3)根域DNS管理.com、.net、.org等顶级域名的地址解析,它收到请求后,把解析结果返回给本地的DNS。
(4)本地DNS服务器192.168.10.2得到查询结果后,接着向管理.com域的DNS服务器发出进一步的查询请求,要求得到163.com的DNS地址。
(5).com域把解析结果返回给本地DNS服务器192.168.10.2。
(6)本地DNS服务器192.168.10.2得到查询结果后,接着向管理163.com域的DNS服务器发出查询具体主机IP地址的请求(如www),要求得到满足要求的主机IP地址。
(7)163.com把解析结果返回给本地DNS服务器192.168.10.2。
(8)本地DNS服务器得到了最终的查询结果,它把这个结果返回给客户端,从而使客户端能够和远程主机通信。
注意:DNS服务器的IP必须是静态的。
5.2、hosts文件:
hosts文件是Linux系统中一个负责IP地址和域名快速解析的文件,文件位置/etc/hosts。Hosts文件包含了IP地址和主机名/域名之间的映射,在没有域名服务器的情况下,系统上的所有网络程序都是通过查询该文件来解析对应于某个主机名/域名的IP地址,否则就需要使用DNS服务程序来解决。通常可以将常用的域名和IP地址映射加入hosts文件中,实现快速方便的查询。hosts文件的格式如下:IP地址 主机名/域名
注意:本地hosts文件优先级高于DNS。系统默认解析顺序:先查找hosts文件解析,
如过解析不了,再通过DNS服务器解析。
Windows系统中hosts文件的位置:C:/windwos/system32/drivers/etc/hosts
6、DNS配置过程:
6.1、DNS服务器软件介绍:
在Linux下架设DNS服务器通常使用伯克利互联网域名(Berkeley Internet Name Domain)程序来实现,简称BIND。BIND是一款实现DNS服务器的开放源码软件,能够运行当前大多数的操作系统上,如windows server、linux。在linux系统中,守护进程是named,端口为UDP53。
6.2、安装、启动DNS服务器
6.2.1、环境准备:
系统:Centos7
IP:192.168.100.3 网络模式选择NAT(yum安装需联网)
注意:DNS服务器的IP必须是固定的,IP需手动配置。
6.2.2、yum安装BIND软件包(需连外网)
yum install bind-chroot.x86_64 -y
6.2.3、启动 DNS服务,并加入开机自启
systemctl start named
systemctl enable named
6.3、认识BIND配置文件:
DNS服务器的配置文件有四个:
主配置文件:named.conf,该文件主要用于指定DNS服务器在哪个接口上监听DNS数据包,也可以指定哪些客户端可以进行DNS域名解析,以及区域配置文件的名称和路径,正向解析区域文件和反向解析区域文件的路径,还可以进行转发器的设置。
区域配置文件:区域配置文件的名称和路径由主配置文件决定,该文件主要用于指定主区域以及指定正向解析区域文件和反向解析区域文件的文件名。
正向解析区域文件:该文件主要用于记录该区域内的资源记录,也就是正向解析条目,如:
www.test.com <--->192.168.10.100
反向解析区域文件:该文件主要用于记录该区域内的资源记录,也就是反向解析条目,如:
192.168.10.100<--->www.test.com
注意:修改完配置文件需重启DNS服务。
6.4、DNS服务器配置流程实例:
DNS服务器工作流程如下:
(1)客户端需要获得www.smile.com这台主机所对应的IP地址,将查询请求发送给 服务器.
(2)服务器接收到请求后,查询主配置文件named.conf,检查是否能够管理smile.com
区域。而named.conf中记录着能够解析smile.com区域并提供smile.com区域文
件所在路径及文件名。
(3)服务器则根据named.conf文件中提供的路径和文件名找到smile.com区域所对
应的配置文件,并从中找到www.smile.com主机所对应的IP地址。
(4)将查询结果反馈给客户端,完成整个查询过程。
6.5、认识主配置文件:
主配置文件named.conf位于/etc目录下,该文件主要用于指定DNS服务器在哪个接口上监听DNS数据包,也可以指定哪些客户端可以进行DNS域名解析,以及区域配置文件的名称和路径,正向解析区域文件和反向解析区域文件的路径,还可以进行转发器的设置。
编辑主配置文件:vim /etc/named.conf
6.6、认识区域配置文件
区域配置文件位于/etc目录下,区域配置文件的名称必须和主配置文件当中的名称相对应。该文件主要用于指定主区域以及指定正向解析区域文件和反向解析区域文件的文件名。
编辑区域配置文件:vim /etc/named.rfc1912.zones
该文件系统默认有五个样例,可在样例的基础上进行修改,不用的样例可直接删除。如下图只保留了两个,一个正向解析,一个反向解析。
6.7、认识正、反向解析区域文件
该文件主要用于记录该区域内的资源记录,也就是正、反向解析条目。为了将名称解析
为IP地址服务器查询正反解析区域文件(又叫DNS数据库文件)。区域文件中包含组成相
关DNS域资源信息的资源记录。如某些资源记录把域名映射成IP地址。
6.7.1、资源记录(Resource Record)有多种类型:
- A资源记录:地址(Address,A)资源记录把FQDN映射到IP地址,因此解析器能查
询FQDN对应的IP地址。注意:仅限解析IPv4
- SOA资源记录:起始授权资源记录,用来标识哪个主机来管理这个域。一个区域
文件只允许存在唯一的SOA记录
- NS资源记录:名称服务资源记录,用来标识该域的本地DNS服务器。
- MX资源记录:邮件交换资源记录,用于标识该域的邮件服务器。
- CNAME资源记录:别名记录,如aaa.test.com是www.test.com的别名。
- PTR资源记录:指针资源记录把IP地址映射到FQDN。
6.7.2、编辑正向解析区域文件:vim /var/named/named.localhost
第1行:表示全局TTL缓存时间,1D代表一天,H代表小时,W代表周
第2行:SOA资源记录,@代表该域的名称test.com,IN是关键字,SOA是资源记录类型,dns.test.com.代表由dns.test.com这台主机管理这个域,zhangsan.test.com.代表这个域的管理员邮箱。
注意:解析区域文件中的第一条资源记录必须是SOA记录。
域名最后的根域“.”必须写上。
因为@代表本域,所以邮箱中的@要换成“.”
第8行:名称服务资源记录,表示本域的DNS服务器是dns.test.com.,必须定义。
第9行:邮件交换资源记录,表示本域的邮件服务器是mail.test.com.,其中10表示优先级,数字越小,优先级越高。该资源记录可以不写。
第10、11、12行:A记录,将域名解析为IP地址
第13行:别名资源记录,www.test.com的别名为web.test.com
6.7.3、编辑反向解析区域文件vim /var/named/named.loopback
第1行:表示全局TTL缓存时间
第2行:SOA资源记录,@代表该域的名称test.com,IN是关键字,SOA是资源记录类型,dns.test.com.代表由dns.test.com这台主机管理这个域,zhangsan.test.com.代表这个域的管理员邮箱。
第8行:名称服务资源记录,表示本域的DNS服务器是dns.test.com.,必须定义。
第9行:邮件交换资源记录,表示本域的邮件服务器是mail.test.com.,其中10表示优先级,数字越小,优先级越高。该资源记录可以不写
第10行:A记录,表示将dns解析为192.168.10.3
第11、12、13行:指针资源记录,使用PTR资源记录时,第一列中只需要指明对应IP地址的“主机地址”部分即可。如“1”,“2”,“3”,系统会自动补全。第11行就表示IP为192.168.10.1的主机的域名是www.test.com.。
6.8、DNS转发器(forwarders):
当DNS服务器在接收到DNS客户端的查询请求后,它将在所管辖区域的数据库中
寻找是否有该客户端的数据。如果该DNS服务器的区域中没有该客户端的数据(在DNS
服务器所在管辖区域数据库中没有该DNS客户端所查询的主机名)时,该DNS服务器需
要转向其他的DNS服务器进行查询。
DNS服务器可以解析自己区域文件中的域名,对于本服务器查询不了的域名,默认
情况下是将直接转发查询请求到根域DNS服务器。除此之外还有一种方法,在DNS服务
器上设置转发器将请求转发给其他DNS服务器。转发到转发器的查询一般为递归查询。
转发器的设置在主配置文件named.conf中设置:
编辑主配置文件:
7、项目案例:
7.1、拓扑结构:
7.2、需求分析:
(1)客户端在不设置DNS的情况下使用IP地址访问web服务器www.test.com
(2)客户端在设置内网DNS的情况下使用域名访问web服务器www.test.com
(3)客户端在设置内网DNS的情况下使用域名访问百度官网(配置转发器)
7.3、服务器和客户端配置信息如下:
主机名 | 操作系统 | IP地址 | 角色 |
DNS服务器:server01 | Centos7 | 192.168.100.100(VMnet8) | Web服务器 |
Web服务器:server02 | Centos7 | 192.168.100.200(VMnet8) | DNS服务器 |
Client客户端:client1 | Centos7 | 192.168.100.10(VMnet8) | 客户端 |
8、项目实施:
8.1、环境准备:
8.1.1、配置web服务器网络环境:
(1)网络模式设置为nat模式,根据上表手动配置网络
(2)yum安装httpd服务,启动httpd服务
yum install httpd –y
systemctl start httpd
(3)打开firefox浏览器验证是否安装成功
(4)设置防火墙,允许httpd的数据包通过
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
8.1.2、配置client1客户端:
(1)网络模式设置为nat模式,手动配置IP和网关,不设置DNS。
(2)打开firefox浏览器输入192.168.100.100访问web服务器,能够访问成功
8.1.3、配置DNS服务器网络环境
(1)网络模式设置为nat模式,根据上表手动配置网络
8.2、安装DNS服务器:
8.2.1、安装DNS服务器软件
yum install bind-chroot.x86_64 -y
8.2.2、启动DNS服务,并加入开机自启
systemctl start named
systemctl enable named
8.2.3、修改主配置文件:
vim /etc/named.conf
8.2.4、编辑区域配置文件:
vim /etc/named.rfc1912.zones
8.2.5、根据区域配置文件中的内容到/var/named/目录中修改正反解析区域文件的文件名
mv named.localhost test.com.zone
mv named.loopback 192.168.100.arpa
8.2.6、编辑正向解析区域文件
vim /var/named/test.com.zone
8.2.7、编辑反向解析区域文件
vim /var/named/192.168.100.arpa
8.2.8、设置防火墙,允许DNS数据包通过
firewall-cmd --permanent --add-service=dns
firewall-cmd –reload
8.2.9、重启DNS服务:
systemctl status named
8.2.10、在client1中设置DNS为192.168.100.200,在浏览器中访问www.test.com。访问成功。在浏览器中访问www.baidu.com,可以访问,但是速度较慢。
8.2.11、设置转发器,将不是本区域的域名转发给114.114.114.114解析
编辑主配置文件
vim /etc/named.conf
8.2.12、重启DNS服务器,在浏览器中访问百度进行验证
systemctl status named