本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告

Linux DNS教程(1)使用bind部署DNS服务

发布:TangLu2019-11-29 9:38分类: 服务部署 标签: DNS BIND

一、DNS服务器的基本概念

在线上工作的DNS服务器通常都是主辅结构。辅DNS用于分担查询请求,它的数据都是从主DNS同步,工作过程大概如下:

1、辅DNS根据配置文件中所设置的刷新间隔(refresh来定期向主DNS进行数据同步

2、辅DNS根据主服务器上序列号(serial作为标准决定是否需要执行同步

3、如果辅DNS无法连接主DNS,会根据设置的重试时间(retry)来重新与主DNS进行连接

4、如果重新连接了多次还是无法成功,那么达过过期时长(expire的限制后辅DNS就会放弃获取数据,辅DNS也不会升级成主DNS,而是下线不再提供服务(因为辅DNS是没有办法写入新数据的)


下面先看一个配置各种时长的设置示例

linuxe.cn  86400 IN SOA  linuxe.cn {
                    2017010801 ;serial序列号,标识是第几个版本
                    2H         ;refresh刷新时间
                    10M        ;retry重试时间
                    1W         ;expire过期时间
                    1D         ;否定回答时间
}


二、DNS的查询方式

一个是客户端向服务器提交查询,服务器直接做最终回应,这个是递归查询(只发出一次请求,最终得到结果);另一个是DNS服务器接收到客户端请求后,由于本地没有该解析记录,会将请求转给其他DNS服务器进行查询,这个叫做迭代查询(需要发出多次请求,最终获得正确的结果)

 

三、DNS常用记录类型

区域解析库文件:每个域名都有一个自己的区域解析库文件(zone文件),由一条条资源记录来定义具体指向

SOA记录:起始授权记录,一个区域解析库只能有一个SOA记录,而且必须为第一条。打个比方,建了个海岛,需要对外宣布世界上多了一个海岛,这个事情就是SOA在做    

NS记录:域名服务记录,一个区域解析库可以有多个NS记录,其中一个为主服务器。结合上面的例子,NS记录可以理解为用来宣布岛主是谁

A记录:地址记录,从域名解析为IP的记录

AAAA:IPv6的地址记录

PRT:反向解析记录,从IP解析为域名

MX:邮件交换记录。我们平时发邮件都是直接发到qq.com、163.com等域名上,但是这些域名肯定是有多台服务器的,MX记录就是指明了哪个服务器会负责邮件。MX服务可以存在多个,由优先级来区分先后,0-99,数字越小优先级越高

CNAME记录:给一个地址设置一个别名

 

四、资源记录的定义语法

在DNS服务器中每个域都要通过zone文件保存信息,文件语法格式是标准化的,一个典型配置内容如下:

dns111.png


首先在区域解析库zone文件的开头定义SOA记录,定义格式

linuxe.cn  86400 IN SOA  linuxe.cn {
                    2018051301 ;  #serial序列号,标识是第几个版本
                    2H         ;  #refresh刷新时间
                    10M        ;  #retry重试时间
                    1W         ;  #expire过期时间
                    1D         ;  #否定回答时间
}


定义当前区域的NS记录,定义格式示例

linuxe.cn    86400 IN NS ns1.linuxe.cn
linuxe.cn    86400 IN NS ns2.linuxe.cn


MX记录定义格式示例(多了一个优先级)

linuxe.cn  IN MX 10 mx1.linuxe.cn
linuxe.cn  IN MX 20 mx1.linuxe.cn


A记录记录定义格式示例

www.linuxe.cn  IN A 192.168.1.100
bbs.linuxe.cn  IN A 192.168.1.110


PTR(IP反过来写,加特定后缀):

100.1.168.192.in-addr.arpa  IN PTR  www.linuxe.cn.


CNAME记录定义格式示例

web.linuxe.cn  IN CNAME www.linuxe.cn


注意事项:

1、TTL可以从全局继承,不用每个记录都定义具体的TTL

2、@符号可以表示当前区域的名称,所以真需要写@的时候由.来代替。如最后一行“www   IN  A  192.168.1.1” 代表www.linuxe.cn 是解析到192.168.1.1这个地址的
bind5.jpg


3、相邻的两个记录,如果NAME相同那么后面一条的NAME可以省略,如:

www.linuxe.cn    IN A 192.1681.100
                 IN A 192.1681.110  #没写name
bbs.linuxe.cn    IN A 192.1681.100


4、对于正向区域来说,如果MX、NS等类型的记录VALUE为一个FQDN,那么此FQDN应该有一个A记录

 

五、DNS服务器的安装

1、如今使用最广泛的DNS服务器软件是BIND,在Linux和Windows平台都是支持的。只需要直接用yum安装即可

yum  install  bind  bind-utils  bind-devel bind-libs  bind-chroot  -y
systemctl start named
systemctl enable named
#BIND相关软件包介绍如下
#bind  DNS主程序包
#bind-utils  DNS客户端程序包,如nslookup,dig
#bind-devel  DNS开发包,也可以叫做支持包
#bind-libs  被bind和bind-utils共同用到的库文件
#bind-chroot  chroot牢笼,伪装根目录,选装


2、bind服务配置文件主要分为主配置文件和区域配置文件。

/etc/named.conf是主配置文件,用于配置全局选项以及创建查找区域。比如要创建一个linuxe.cn的查找区域就需要在该配置文件中完成。为避免主配置文件过于臃肿,还有一个/etc/named.rfc1912.zones文件被包含进主配置文件,所以要新增查找区域的话推荐在该文件中配置。

/var/named/存放区域配置文件的目录,每个域的zone文件(就是详细的解析信息文件)默认否存放于此


3、bind服务主程序是/usr/sbin/named服务默认监听在UDP、TCP协议的53端口,TCP的53端口是主从复制时使用,UDP的53端口是客户查询时使用;还有一个DNS远程控制工具rndc,也可以进行数据的更新、服务的启动等工作,其监听在本地的953端口

rndc reload 



 

六、bind正式配置,以创建linuxe.cn域名的正向解析为例(反向解析的话也要建立一个区域数据文件):

1、在主配置文件/etc/named.conf中修改监听的网卡地址

options {
  ...
  listen-on port 53 { 192.168.100.10; };  #修改为网卡的实际地址或者写为any,但端口一定别改
  directory  "/var/named";  #zone文件存放路径
  allow-query { 192.168.100.0/24; };  #只对该网段内的IP提供DNS服务,也可以用any
  #forward only;  #让该DNS成为转发器
  #forward { 8.8.8.8; };  #转发到的服务器地址
  recursion yes;  #允许递归查询
  ...
}


2、修改主配置文件或辅助配置文件/etc/named.rfc1912.zones(推荐使用辅助文件,该文件中定义了许多域名的zone文件),增加一个域名的定义,仅需4行即可:

zone "linuxe.cn"  IN {     
    type master;    #master代表是该域的主服务器 
    file  "linuxe.cn.zone";    #定义zone文件,存放路径由主配置文件directory决定
  };


3、建立区域数据zone文件推荐复制named.local作为模板文件进行修改)注意修改文件权限为640,属主root,属组named

touch /etc/var/named/linuxe.cn.zone    #这里用了绝对路径便于理解
$TTL 3600
#第一条记录必须是SOA记录
#用@表示当前区域,也就是linuxe.cn,IN为固定格式,SOA是记录类型,后面是DNS服务器和管理员邮箱,邮箱里的@用.表示
@ IN SOA ns1.linuxe.cn. 13841276.qq.com. {
                2018051401
                 1H
                 10M
                 3D
                 1D
 }
#A记录和其他记录
          IN    NS    ns1.linuxe.cn  #和上一条名称一样的话可以省略不写区域
ns1       IN    A     192.168.1.100
www       IN    A     192.168.1.110
web       IN   CNAME  www
bbs       IN    A     192.168.1.120


4、重启服务前可以使用named-checkconf、named-checkzone命令进行语法检查(仅仅是配置文件语法检测,而非逻辑检测),如果没有问题的话用rndc reload重新加载服务即可。

bind6.jpg


5、重启后可以将DNS客户端指向到这台测试DNS服务器,然后进行测试

 

七、DNS测试工具

1、dig工具,专门的DNS检测工具,不会走缓存查询。用-t选项指定解析类型,如A记录、MX记录,然后就可以看到完整具体的解析流程,QUESTION区显示了需要查询的域名、ANSWER显示了解析结果、AUTHORITY显示了进行查询的DNS服务器、ADDITIONAL显示了DNS服务器的地址

dig.jpg


2、nslookup工具,会进入交互模式,不输入server的话默认是本机。然后设置需要查询的类型,如set type=a代表查看A记录,然后跟上需要查询的域名就可以看到完整的解析流程了

dig2.jpg


3、traceroute。路由追踪根据,会显示达到目标IP时每给路由节点的情况,最多30跳。

traceroute 192.168.1.100



温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51
版权所有:《Linux运维技术学习站点
文章标题:《Linux DNS教程(1)使用bind部署DNS服务
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-140.html  [生成短网址]

已有 0/6814 人参与

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~