前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第六章 DNS服务(1)

第六章 DNS服务(1)

作者头像
晓天
发布2019-07-04 14:27:45
2.6K0
发布2019-07-04 14:27:45
举报

第六章 DNS服务(1)

6.1 DNS简介

6.1.1 DNS的功能

DNS 是域名系统(Domain Name System) 的缩写,它的功能是将域名解析成ip。我们日常上网浏览网页时,在浏览器(如:IE)的地址栏中常输入的是网站的网址,其实网址这个概念在专业的角度称为域名,即:网址=域名。

而域名主要是给我们人去使用的。我们知道,在网络上,计算机与计算机之间的寻址方式是靠的ip地址。IP地址是四段数字组成的,而我们人去记忆不同网站的ip地址,这种数字化的地址很容易记错或记混,我们人的思维模式更习惯于记忆名称,如:百度、163、QQ等网站,我们可以很轻松的写出它们的网址。所以,为了方便人与主机之间的沟通,在internet上,就需要有一台服务器,记录着网站域名(即网址)与服务器ip的对应关系。类似于表格,当我们上网时,在浏览器地址栏中输入网址,客户端则会向DNS服务器发出询问请求,DNS服务器通过查表得到对应服务器的IP,返回给客户端,客户端再以这个ip地址寻址到达服务器,申请访问web页面。所以,一次上网的过程中,客户端其实会向外发送两次请求,第一次是询问DNS,查表得到web服务器的ip,第二次是按照所获得的ip,寻址找到web服务器请求访问页面。DNS上查表的过程,我们用更专业的术语表示就叫做解析。所以DNS服务器又称为域名解析服务器,其功能就是将域名解析成ip的。

以上过程我们可以想象成生活中的手机电话簿功能:我们可以记住每个朋友的姓名,但我们是记不住每个朋友的手机号的,这就需要用电话簿记录各个朋友的手机号,当我们需要给某个朋友打电话时,一定会先查电话簿,查到电话后,即可拨号打电话了。这里的电话簿的功能就相当于DNS的功能。

6.1.2 DNS命名空间

既然DNS可以负责全球网络的域名解析工作,那么全球的网络必然或有一套严谨的命名规范,那就是DNS命名空间的功能。

我们假设将全球的网络资源都放到一个总的虚拟的域之下,这个总域我们称为根据即.域(点域)。在根域之下,划分为多个二级域,这些域被称为顶级域,顶级域是不允许企业或个人直接申请的,顶级域是由全球的网络维护商按照国家、地区、行业等分配的,如:.cn.表示中国地区,.hk.表示中国香港,.org.表示国际组织,.com.表示工商企业的,.net.表示网络提供商等等。因为所有域都在根域(即.域)之下,所以,一般书写时我们可以把最后的.省略,如:.com .cn等

作为企业或个人,只可以在顶级域下申请子域,申请到子域后即可在子域下指定自己的网络层次了。如下图:

图中,最右侧,假设有个企业在.com顶级域下申请了子域pp,该企业下有一台主机,主机名叫www,所以,它的完整域名就是把域的线路由下向上写上去,之间用.做分隔,即:www.pp.com;图中中间部分,有另一个企业在.cn下注册了子域rzz,rzz下又设置了一个子域bbs,在bbs下有四台主机,那么它们的完整名字即是:www.bbs.rzz.cn等。因为整个域名空间都是在虚拟的域体系之下,所以,每个主机的主机名也都是虚拟的,即是在网络环境中的名字(类似于每个人有真名,但是平时上网时可以使用网名一样,都是虚拟的名字)。只是,在网络上,各企业已经习惯使用www的主机名作为网站服务器的名字,所以大多数网站的域名都是www.XXX.XXX的格式的。

6.1.3 命名相关概念

先来分析一下域名的格式,我们知道上网时在浏览器输入域名后,浏览器会自动在域名前写上http://字样,即指定了通信协议,这种协议+地址的格式我们称为url。

url 统一资源定位符,即协议+完整网络路径,如:http://www.baidu.com。

其实我们日常中常说的链接,专业称谓就是url。如:我们会给朋友要的某网店链接,某电影的下载链接等,这些都是url。

全称域名(FQDN) 其实我们日常中说的域名(如www.baidu.com),严格来讲并不是标准的叫法。在专业的称谓中,一个完整的网址应该称为全称域名,简写FQDN(英文单词为全质量的域名)。而FQDN规定最多由255个字符组成。

域名 标准定义中,域名的概念只是指所在域部分,如:baidu.com。

主机名(又称NetBios名) FQDN中的www部分称为主机名部分。规定主机名最多16个字符,但最后一个字符固定为.(点),所以只有前15个字符可自定义。

小结,可见FQDN是由主机名+域名组成。

6.2 DNS解析原理

6.2.1 客户端解析顺序

首先来介绍一下客户端的申请解析顺序。作为客户端,在上网时会用到DNS解析,但是可以想象到,如果有几个网站,我们经常访问,而每次都需要访问公网的DNS做解析,势必会影响效率。那么,如果本机内有一个文件,记录下所有常用网站的ip,每次上网就可以不必再询问DNS了,这就是静态解析文件的作用。

在Linux中,静态解析文件是/etc/hosts(我们在第一章网络配置中介绍过)。所以,Linux系统的解析顺序是:当有网络访问需要做解析时,Linux先查看/etc/hosts文件中有无相关记录,若有,就按该记录执行了,不再去询问DNS服务器;若此文件中无相关记录,则再去询问DNS服务器做解析。PS:具体配置可参看本书第一章。

对比静态解析文件,DNS解析又被称为动态解析。

6.2.2 DNS支持的解析模式

因为DNS是负责域名与ip对应关系记录的,所以,客户端就会有两种询问情况:一种是客户端拿着域名,请求DNS给查询出ip;另一种是客户端拿着ip,请求DNS给查询出对应的域名。针对这两种情况,在DNS中定义其为两种解析模式:

正向解析:客户端拿着域名,请求DNS解析,获取到ip。

反向解析:客户端拿着ip,请求DNS解析,获取到域名。

6.2.3 DNS解析过程

我们可以想象到,客户端请求解析时,会询问DNS服务器,但全球有那么多台服务器,一台DNS上是不可能记录全球所有服务器的ip的。所以,在全球网络中,DNS的解析过程有一套完整的机制。首先来看一下下图:

如图,假设一台主机,网卡配置中指向了一台DNS服务器,当客户机想要访问www.microsoft.com这个域名时,会向网卡所指向的DNS服务器发出询问,若该dns有相关记录,就会立即回复。但若这台dns服务器无相关记录,则它会向全球的根域(即.)的dns服务器发出询问,根域服务器收到后,并不会返回最终结果,而是,分析域名请求,将域名所在的顶级域(即.com)的dns服务器地址反馈回去(如图中第2步)。则客户机网卡指向的那台dns服务器,再向.com顶级域的dns服务器发出请求,顶级域服务器同样不给最终答案,返回子域的dns服务器地址(图中第3步)。客户端所指向的dns再向子域的dns服务器发送请求,获取到最终答案(图中第4步)。客户端所指向的dns收到解析结果后,先放入缓存中,以备之后又其他客户端再次询问,然后再回复给客户端。

以上便是在全球范围内的解析过程,值得介绍的是,全球的根域dns服务器共有13台,这13台的ip是公开的,在安装dns软件包后,会自动写到相关配置文件中,以便解析时使用。

另外,在以上过程中,我们可以看到作为客户端,只需要发送请求,然后最后接收结果,这种工作模式成为递归模式。即递归模式是指只负责发送请求和接收最后结果,其他步骤都不参与。而客户端指向的dns服务器,它会参与到解析过程中的每一步,它会去询问根域、询问顶级域、询问子域,这种参与到每一步的工作模式称为迭代模式。所以总结可知,查询模式有两种:递归查询、迭代查询。一般客户端都工作在递归模式下,dns服务器都工作在迭代模式下。

6.3 DNS服务部署

下面我们来演示一个实验:部署一台基本的DNS服务器,并让它负责rzz.com域的解析工作。

实验环境:

服务器 Linux 192.168.10.1 关闭防火墙

客户端 windows 192.168.10.10 网卡dns指向 192.168.10.1

配置步骤如下:

1、安装DNS服务

yum -y bind bind-chroot ---安装dns所需软件包

2、编辑主配置文件,创建区域,即新建域

vi /etc/named.conf ---编辑DNS主配置文件

options{}中改:

listen-on port 53 { 192.168.10.1; }; ---指定本机对外提供服务的网卡

directory "/var/named"; ---指定区域文件的存放位置

allow-query { any; }; ---指定针对哪些客户端提供服务

下侧:加入

zone "rzz.com" IN { ---新建正向区域,关键字是zone

type master; ---设定类型为标准主要主区域

file "rzz_zheng"; ---指定区域文件名

allow-update { none; }; ---拒绝动态更新

};

zone "10.168.192.in-addr.arpa" IN { ---新建反向区域

type master;

file "rzz_fan";

allow-update { none; };

};

说明:

1)区域的类型有标准主要区域、辅助区域两种,主要区域就是首选的做各种配置的区域。辅助区域可视为做备用的区域,下一节会详细介绍。

2)file行表示指定该区域的区域文件名字,那么,在创建区域文件时,名字必须与这里指定的名字一致。区域文件中记录各个解析记录,详情见第三步.

3)allow-update行是指定允许哪个服务器做ip的动态更新,即当某服务器更换ip后,通知到DNS服务器上,则DNS服务器更新记录信息。一般都设置为none,即不支持动态更新。

4)反向区域是针对一个ip范围创建区域,这个范围内的ip都由这个区域负责反向解析。反向区域的名字“10.168.192.in-addr.arpa”是固定的书写格式。前面部分是ip地址中前三段的反写,后面的“.in-addr.arpa”是固定字符。

3、创建区域文件,写入记录

cd /var/named ---进入区域文件存放位置

vi rzz_zheng ---创建正向区域文件,对应主配置文件中区域文件名的指定

$TTL 1D ---最小生存期,即设定本缓存的存在时间

@ IN SOA ns1.rzz.com. admin.rzz.com. ( ---SOA指定谁是本域的主dns服务器,后面指定管理员邮箱, @符用.代替

20180319;serial ---序列号,即版本号,主辅更新比较相互的序列号

3H;refresh --- 更新周期,3H=3小时

15M;retry ---失败重试,即更新失败后,隔多久重试

1W;expire ---放弃时间,更新失败,重试坚持多久后放弃

1D;minimum --- 最短生效期,更新失败,发生变化的数据有效多久

) ---注:以上五行内容的功能,将在下节介绍。

@ IN NS ns1.rzz.com. ---指定有哪些dns服务器负责本域解析

@ IN NS ns2.rzz.com.

ns1 IN A 192.168.10.1 ---A记录指定域名对应的ip

ns2 IN A 192.168.10.2 ---对于NS记录必须做A记录的解析

www IN A 192.168.10.100 ---由于没有真正搭建web服务器,先假设www服务器ip是100,一下各条也是如此。

ftp IN A192.168.10.110

xia IN CNAME ftp.rzz.com. ---CNAME记录,设定别名

@ IN MX 10 mail.rzz.com. ---MX记录,指定本域邮件服务器,可以写多条MX记录,10表示优先级,数越小,优先级越高

mail IN A 192.168.10.120

说明:

1)本文件中所有的FQDN中最后的.(根域)不可省略。

2)若有两台或者多台DNS服务器负责当前区域的解析工作,则会有主、辅身份之分,主DNS为日常管理配置的主服务器。辅助DNS为备用机,会跟随主DNS的配置自动更新设置(下节会具体讲解)。所以在此文件中,需要指明都有哪些DNS服务器负责本区域的解析,用NS记录表示。但仅看NS记录是无法区分主、辅身份的,所以使用SOA记录指定谁是主DNS服务器,则其他的皆为辅助DNS了。

3)此文件中的@符表示当前域,所以带@符的配置即表示指定当前域内的NS记录、当前域内的SOA记录等。

4)因为在主配置文件(/etc/named.conf)中已经指定了正向区域的区域名(如rzz.com),此文件只是对应区域创建的区域文件,所以此文件中做解析时无需写明域名,只写主机名即可,如:www IN A 192.168.10.100。

5)此文件中的CNAME记录称为别名记录,是给某个FQDN起另一个名字的。可以理解为一台主机两个名字。

6)每行中的IN关键字,为固定的书写格式,原意表示标准的internet资源记录。

7)MX记录指定负责本域的邮件服务器是谁,再由A记录解析出ip。具体功能参看下图:

如图,假设有一个qq的用户,想要给163的用户发送邮件,按照邮件的通信原理,会先将邮件发送给自己域的邮件服务器(即QQ的邮件服务器,邮件服务遵守SMTP协议),再由QQ的邮件服务器转发给163的邮件服务器,再转给163的用户。但是作为QQ的邮件服务器,当接收到客户的邮件请求时,是不知道163邮件服务器的地址的,所以会向DNS发出询问,DNS会做两步操作:一,查询163.com区域内的MX记录,得到邮件服务器的FQDN,再根据A记录,把FQDN解析成ip,返回QQ的邮件服务器。QQ邮件服务器得到ip后,即可将邮件发送给163的服务器了。另外,MX记录可以写多条,通过数字设置优先级,则DNS会给客户端回复多个邮件服务器的ip,询问者会按优先级转发邮件,若一个发送不通再发给另一个。

下面,再来编写一下反向区域文件

vi rzz_fan

$TTL 1D

@ IN SOA ns1.rzz.com. admin.rzz.com. (

20180319;serial

3H;refresh

15M;retry

1W;expire

1D;minimum

)

@ IN NS ns1.rzz.com.

@ IN NS ns2.rzz.com.

1 IN PTR ns1.rzz.com. --- PTR 反向解析记录

2 IN PTR ns2.rzz.com.

100 IN PTR www.rzz.com.

110 IN PTR ftp.rzz.com.

120 IN PTR mail.rzz.com.

说明:

1)反向文件中的PTR记录是将ip解析成域名的

2)反向文件中只需要写ip地址的第四段数字,因为在主配置文件中反向区域名已经把ip的前三段写明了。

4、启动服务

systemctl restart named

systemctl enable named

配置完毕后,客户端即可检测验证了,我们在windows客户端的网卡上设置DNS指向10.1服务器,如下图:

在cmd界面中使用nslookup命令验证dns解析,如下图:

图中,可见当解析xia.rzz.com时,会显示原名为ftp.rzz.com,xia.rzz.com是别名(aliases)。其实我们在日常上网时,公网上查到的很多都是别名状态,如下图:

图中可见,www.baidu.com其实是网站的别名。其实,公网上很多网站的常用域名都是使用的别名,这是因为很多网站服务器在企业内部有其特殊的命名方式,但为了方便公网用户使用,所以在公网上常用的是别名。

6.4 区域文件记录类型总结

上节实验,我们已经通过区域文件实现了域名的解析,下面来总结一下区域文件中的可用记录类型:

SOA 起始授权机构,指定谁是主DNS

NS 域名服务器,指定本域都有哪些DNS

A 主机记录 ,解析域名=>ip

CNAME 别名记录,给域名起另一个名字

MX 邮件服务器记录,指定本域的邮件服务器

PTR 反向指针记录,解析ip=>域名

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 教主小筑 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档