请选择 进入手机版 | 继续访问电脑版
在线投稿 文字标题 文字标题 文字标题 文字标题 文字标题
切换皮肤
一、DNS服务器的基本概念
在线上工作的DNS服务器通常都是主辅结构。辅DNS用于分担查询请求,它的数据都是从主DNS同步,工作过程大概如下:
1、辅DNS根据配置文件中所设置的刷新间隔(refresh)来定期向主DNS进行数据同步
2、辅DNS根据主服务器上序列号(serial)作为标准决定是否需要执行同步
3、如果辅DNS无法连接主DNS,会根据设置的重试时间(retry)来重新与主DNS进行连接
4、如果重新连接了多次还是无法成功,那么达过过期时长(expire)的限制后辅DNS就会放弃获取数据,辅DNS也不会升级成主DNS,而是下线不再提供服务(因为辅DNS是没有办法写入新数据的)

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

[size=1em]
  1. linuxe.cn  86400 IN SOA  linuxe.cn {
  2.                     2017010801 ;serial序列号,标识是第几个版本
  3.                     2H         ;refresh刷新时间
  4.                     10M        ;retry重试时间
  5.                     1W         ;expire过期时间
  6.                     1D         ;否定回答时间
  7. }
复制代码
二、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文件保存信息,文件语法格式是标准化的,一个典型配置内容如下:

首先在区域解析库zone文件的开头定义SOA记录,定义格式:
  1. linuxe.cn  86400 IN SOA  linuxe.cn {
  2.                     2018051301 ;  #serial序列号,标识是第几个版本
  3.                     2H         ;  #refresh刷新时间
  4.                     10M        ;  #retry重试时间
  5.                     1W         ;  #expire过期时间
  6.                     1D         ;  #否定回答时间
  7. }
复制代码
定义当前区域的NS记录,定义格式示例:
  1. linuxe.cn    86400 IN NS ns1.linuxe.cn
  2. linuxe.cn    86400 IN NS ns2.linuxe.cn
复制代码
MX记录定义格式示例(多了一个优先级):
  1. linuxe.cn  IN MX 10 mx1.linuxe.cn
  2. linuxe.cn  IN MX 20 mx1.linuxe.cn
复制代码
A记录记录定义格式示例:
  1. www.linuxe.cn  IN A 192.168.1.100
  2. bbs.linuxe.cn  IN A 192.168.1.110
复制代码
PTR(IP反过来写,加特定后缀):
  1. 100.1.168.192.in-addr.arpa  IN PTR  www.linuxe.cn.
复制代码
CNAME记录定义格式示例:
  1. 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这个地址的
thum-29f61408689540.jpg

3、相邻的两个记录,如果NAME相同那么后面一条的NAME可以省略,如:
  1. www.linuxe.cn    IN A 192.1681.100
  2.                  IN A 192.1681.110  #没写name
  3. bbs.linuxe.cn    IN A 192.1681.100
复制代码

4、对于正向区域来说,如果MX、NS等类型的记录VALUE为一个FQDN,那么此FQDN应该有一个A记录
五、DNS服务器的安装
1、如今使用最广泛的DNS服务器软件是BIND,在Linux和Windows平台都是支持的。只需要直接用yum安装即可
  1. yum  install  bind  bind-utils  bind-devel bind-libs  bind-chroot  -y
  2. systemctl start named
  3. systemctl enable named
  4. #BIND相关软件包介绍如下
  5. #bind  DNS主程序包
  6. #bind-utils  DNS客户端程序包,如nslookup,dig
  7. #bind-devel  DNS开发包,也可以叫做支持包
  8. #bind-libs  被bind和bind-utils共同用到的库文件
  9. #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端口
  1. rndc reload
复制代码
六、bind正式配置,以创建linuxe.cn域名的正向解析为例(反向解析的话也要建立一个区域数据文件):
1、在主配置文件/etc/named.conf中修改监听的网卡地址啊
  1. options {
  2.   ...
  3.   listen-on port 53 { 192.168.100.10; };  #修改为网卡的实际地址或者写为any,但端口一定别改
  4.   directory  "/var/named";  #zone文件存放路径
  5.   allow-query { 192.168.100.0/24; };  #只对该网段内的IP提供DNS服务,也可以用any
  6.   #forward only;  #让该DNS成为转发器
  7.   #forward { 8.8.8.8; };  #转发到的服务器地址
  8.   recursion yes;  #允许递归查询
  9.   ...
  10. }
复制代码
2、修改主配置文件或辅助配置文件/etc/named.rfc1912.zones(推荐使用辅助文件,该文件中定义了许多域名的zone文件),增加一个域名的定义,仅需4行即可:
  1. zone "linuxe.cn"  IN {   
  2.     type master;    #master代表是该域的主服务器
  3.     file  "linuxe.cn.zone";    #定义zone文件,存放路径由主配置文件directory决定
  4.   };
复制代码

3、建立区域数据zone文件(推荐复制named.local作为模板文件进行修改)注意修改文件权限为640,属主root,属组named
  1. touch /etc/var/named/linuxe.cn.zone    #这里用了绝对路径便于理解
  2. $TTL 3600
  3. #第一条记录必须是SOA记录
  4. #用@表示当前区域,也就是linuxe.cn,IN为固定格式,SOA是记录类型,后面是DNS服务器和管理员邮箱,邮箱里的@用.表示
  5. @ IN SOA ns1.linuxe.cn. 13841276.qq.com. {
  6.                 2018051401
  7.                  1H
  8.                  10M
  9.                  3D
  10.                  1D
  11. }
  12. #A记录和其他记录
  13.           IN    NS    ns1.linuxe.cn  #和上一条名称一样的话可以省略不写区域
  14. ns1       IN    A     192.168.1.100
  15. www       IN    A     192.168.1.110
  16. web       IN   CNAME  www
  17. bbs       IN    A     192.168.1.120
复制代码

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

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

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

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








回复

使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    Archiver|手机版|小黑屋|齐聚无忧 |网站地图

    Powered by Discuz! X3.4  © 2001-2013 Comsenz Inc.