DNS服务配置

来源:互联网 发布:k线图 知乎 编辑:程序博客网 时间:2024/05/17 03:10

【DNS介绍】

  DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,DNS服务器将用户方便记忆的网址转化为计算机可以识别的IP地址,这一过程就称为域名解析。DNS协议运行在UDP协议之上,使用端口号53。

  通常 Internet 主机域名的一般结构为:主机名.三级域名.二级域名.顶级域名。通常顶级域名又称为根域,目前全球共有13个根服务器,其中10个在美国,另外三个位于英国、瑞典、日本。

域名结构为根域、一级域名、二级域名…….最多可以有127个域名。

一级域名就是我们常见的网址的后缀,即com、cn、edu等等。

这里写图片描述

DNS查询类型:

  递归查询

   当一台客户端去访问某个主机时,首先会查询本机的缓存;如本机中没有,则去DNS服务器中去查找,如果DNS服务器没有,则它会去根服务器询问,根服务器又查找到其中某个二级域,依次找下去,直到找到这台主机。在这其中DNS服务器执行的就是递归查询,对客户端的请求负责到底;

  迭代查询

   上述描述中,根服务器以及其他服务器执行的是迭代查询。

解析类型:

  FQDN –> IP (FQDN指完整的合格域名)

   将域名解析为ip地址,通常称为正向解析。

  IP –> FQDN

   将ip地址解析为域名,通常称为反向解析。

DNS服务器类型:

主DNS服务器 (只能有一个)

从DNS服务器 (可以有多个)

缓存DNS服务器(转发器)

主DNS服务器:管理和维护所负责解析的域内解析库的服务器

从DNS服务器:从主服务器或从服务器“复制”(区域传输)解析库副本 (可以对照/var/named/named.localhost文件)

   序列号:解析库版本号,主服务器解析库变化时,其序列递增

   刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔

   重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔

   过期时长:从服务器联系不到主服务器时,多久后停止服务

   否定答案的缓存时间

“通知”机制:主服务器解析库发生变化时,会主动通知从服务器

   有两种方式:一种是当主服务器数据发生变化时,主动告诉从服务器,将数据push给从服务器; 一种是从服务器定期查看主服务器,一旦发现变化,将数据pull回来,一般这种方法增加负载,多采用第一种。

每台DNS服务器都需要有一个资源解析库,用来存放解析记录,该文件中有以下几种记录类型:

SOA:Start Of Authority,起始授权记录;这条记录表明了谁是这条区域的拥有者,即谁可以对这个区域的信息进行修改。一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录。

   A:internet Address,作用是将域名解析为ip地址。

   AAAA: 将域名解析为IPV6地址。

   PTR: 反向解析,即将ip地址解析为域名。

   NS: Name Server,专用于标明当前区域的DNS服务器。资源解析库中有一条NS记录,相应的就应该有一条A记录与之对应。

   CNAME:Canonical Name,别名记录 (有些著名的域名使用的是别名)

   MX: Mail eXchanger,邮件交换器

注意:在DNS服务器的资源解析库中必须要有SOA、A、NS记录。如图:

这里写图片描述

  以上例子中的0表示序列号,当有主从服务器的时候,主服务器的解析库发生变化,会更新序列号,从服务器会根据主服务器的序列号来判断是否更新自己的解析库。1D表示从服务器主动向主服务器查看更新的刷新时间为1天;1H表示如果失败了以后每隔一个小时重新尝试一次;1W表示过期时间;3H表示否定答案的缓存时间。

如果想在虚拟机上实现DNS服务器,需要安装bind包,开启named服务。

【实验】

实验拓扑图:

这里写图片描述

  实验原理:某小区里有一台客户端想要访问www.ali.com的网站,当它发起请求时,客户端会将这条请求发送给小区的DNS服务器。小区的DNS服务器会先检查自己的缓存里有没有这条记录,如果没有,它将跑到根服务器区询问;根服务器收到后表示自己也没有,但是com是根的下级域,然后将com的地址给小区的DNS;小区DNS又跑去com服务器上询问,com表示也没有,但是ali是com的下级域,将ali的地址给了它;它拿着地址又去问ali.com;ali.com表示www是自己的下级域,里面有对应的ip地址;查询到这里,任务完成,小区DNS将地址返回给客户端,客户端成功访问。

  实验条件:准备6台不同的主机,分别扮演上述角色,实现客户端访问www.ali.com的目的。

1、配置web server ,这里准备一个网页,客户端可以查看该网页内容则表示实验成功;

这里写图片描述

2、分别在各个DNS服务器上安装bind,并检查SELinux策略和防火墙是否关闭,否则会影响实验结果;

将每台DNS服务器的named配置文件进行修改:

这里写图片描述

3、首先将每个DNS服务器的根地址指向我们设定的根服务器

这里写图片描述

充当根服务器的主机需要以下配置(172.17.253.88):

vim /etc/named.conf

这里写图片描述

touch /var/named/root.zone

vim /var/named/root.zone

这里写图片描述

在根服务器上将com域委派给172.17.253.60主机,

4、配置.com域(172.17.253.60):

vim /etc/named.rfc1912.zones

这里写图片描述

将.ali域委派给172.17.253.55主机,

vim /var/named/com.zone

这里写图片描述

5、配置.ali域(172.17.253.55)

vim /etc/named.rfc1912.zones

这里写图片描述

vim /var/named/ali.com.zone

这里写图片描述

6、在ali域上直接指定了www.ali.com主机的地址,这时可以先来在客户端上测试一下是否可以解析出正确的地址,使用dig命令:

这里写图片描述
这里写图片描述
这里写图片描述

7、实验完成。

【反向解析】

除了正向解析库,还有反向解析库,即将IP地址解析为域名:

vim /etc/named.rfc1912.zones

这里写图片描述

vim ali.com.ptr

这里写图片描述

【智能DNS】

bind有四个内置的acl:

  none: 没有一个主机

  any: 任意主机

  localhost: 本机

  localnet: 本机的IP同掩码运算后得到的网络地址

注意:只能先定义,后使用;因此一般定义在配置文件中,处于options的前面

bind view

  view:视图,一个bind服务器可定义多个view,每个view中可定义一个或多个zone;每个view用来匹配一组客户端

  多个view内可能需要对同一个区域进行解析,但使用不同的区域解析库文件

注意:

  (1) 一旦启用了view,所有的zone都只能定义在view中

  (2) 仅在允许递归请求的客户端所在view中定义根区域

  (3) 客户端请求到达时,是自上而下检查每个view所服务的客户端列表,一旦满足一条,下面的将不再检查。

  简单的来说,智能DNS实现的将访问地址根据定义的acl分为不同的类,每个类返回不同的解析地址,这样做的效率提高了访问效率而且不会浪费带宽。比如说,北京的ip域是192.168.216.0/24,上海的IP域是172.17.251.0/16,这样当DNS服务器收到192.168.216.0/24地址访问时,就返回一个1.1.1.1的地址;收到172.17.251.0/16访问时收到2.2.2.2的地址;分类管理效率更高。

【实验】智能DNS实现

1、vim /etc/named.conf

这里写图片描述
这里写图片描述

2、vim ali.com.henan

这里写图片描述

3、vim ali.com.shanghai

这里写图片描述

4、测试

这里写图片描述
这里写图片描述

原创粉丝点击