DNS服务器

1. 什么是DNS

     DNS--Domain Name System 域名系统

2. DNS是用来干什么的

     顾名思义,DNS是用来解析域名的,当然同时也可以反向解析IP地址对应的域名

3. 域名的分层

     (1) 根域(“.”表示根域,现在所有的域名后面的根域已经省略了,因为浏览器会自动为域名加上如: baidu.com,实际为baidu.com.

            根域现在由全球13台服务器共同维护,这13台服务器分布如下:美国(9),英国(1),法国(1),瑞典(1),日本(1)

     (2) 顶级域

           顶级域分为:

           a. 组织域 :如com(商业组织) , org(民间组织),net(网络组织),mil(军事组织)等

           b. 国家或地区域:如cn(中国),jp(日本),kr(韩国)

           c. 反向域:如in-addr.arpa

     (3)二级域

           二级域下可以包括主机以及子域,如www.baike.baidu.com(www即为主机名称,baike.baidu.com就是子域名称,其中.com是顶级域)

     (4)主机

          主机是域的最底层,通常位于FQDN(Fully qualified Domain Name完全限定域名,由主机和域名共同组成的全称)的最左端

4.域名的查询

      (1) 按查询内容通常分为正向查询(根据域名查询IP)和反向查询(根据IP查询域名)

      (2) 按查询方式通常分为递归查询和迭代(或循环)查询

             a. 递归查询:

                  由客户端发出查询请求,DNS服务器接收到请求开始查询,如果查询失败,则该DNS服务器会代替客户端向其他DNS服务器发出查询请求,直至失败或成功

                  递归查询请求由客户端发出

             b. 迭代查询:

                  DNS服务器之间的查询请求

       域名查询过程如下图所示:

       

4.DNS资源记录类型

            DNS在对域名进行解析时,会查询自己的数据库,该数据库包含了所有DNS区域资源信息的记录,具体信息如下:

            (1) SOA ( Start Of Authority 授权开始):定义了该区域的全局配置参数

                  格式: 区域名称  IN  SOA  域名服务器 管理员邮箱 ( 序列号  刷新时间 重试时间  失效时间  TTL )

            (2) NS ( Name Server 域名服务器) :定义域名服务器

                  格式: FQDN  IN  NS 域名服务器 

            (3) A ( Address IP地址):定义了域名所对应的IP地址

                 格式:  FQDN  IN  A  IP地址

            (4) MX ( Mail eXchange 邮件交换记录):定义了邮件服务器及邮件@后缀名称

                  格式: 邮件服务器后缀  IN  MX  邮件服务器

            (5) CNAME ( Canonical Name 别名):定义域名的别名

                  格式: 别名   IN CNAME  对应真实域名

            (6) PTR ( 反向解析记录 ) :定义IP地址对应的域名

                  格式: IP   IN  PTR   FQDN

            (7) SRV : 定义与微软的活动目录相关的应用

            (8) NXT / DNSSEC: 指定某个特定名称不在该域中      

            (9) KEY: 保存一个关于DNS名称的记录

5. DNS名称解析的顺序

             (1) Linux名称解析顺序

                            Linux名称解析主要由两个文件控制(/etc/hosts.conf和/etc/nsswitch.conf),其中/etc/hosts.conf是以前或老一点的系统用的,现在统一都改成

                  了/etc/nsswitch.conf,该文件中有一行

                   hosts: files dns

                   表示DNS名称解析时先查找本地文件/etc/hosts,如果未找到相关记录,再将信息发送给指定的DNS服务器进行查询

              (2) Windows名称解析顺序

                    Windows系统因为有NetBIOS名称,所以解析要稍显复杂:

                     a. 检查所解析名称是否为本机

                     b. 尝试通过DNS缓存进行查询解析(通过ipconfig /displaydns查看DNS缓存)

                     c. 尝试通过%systemroot%/system32/drivers/etc/hosts文件进行解析

                     d. 将查询请求发送给指定的DNS服务器进行查询

                     e. 尝试通过NetBIOS名称缓存进行名称解析(通过nbtstat -c查看NetBIOS名称缓存信息)

                      f. 将请求发送给指定WINS服务器

                     g. 尝试通过广播进行名称解析

                     h. 尝试通过%systemroot%/system32/drivers/etc/lmhosts文件进行名称解析(类似hosts文件)

6. DNS软件(BIND9)安装

               # aptitude install bind9 dnsutils

7. BIND9配置

                        除了全局配置文件named.conf.options外,还有若干主配置文件和区域配置文件,当bind启动时,首先读取全局配置文件named.conf.options,

               然后再通过读取主配置文件来获取所管辖区域的相关信息,最后读取相应区域配置文件来获取相关DNS信息,而配置文件named.conf是这整个流程的控制中心。

               (1)全局配置文件named.conf.options结构

                         a. options块

      • listen-on port 53  : 指定bind侦听DNS查询请求的本机IP和端口,例如 listen-on port 53 { 192.168.1.5;};
      • directory                 :指定区域配置文件所在路径/var/cache/bind
      • allow-query { ... }   :指定接受DNS查询请求的客户端,如 allow-query { 192.168.1.5;192.168.1.6;192.168.1.7;};只允许以上IP发送查询DNS请求
      • forwarders { ... }    :指定DNS转发服务器,若有多个,则按顺序依次转发,直至成功为止
      • forward only|first   :转发方式,first表示首先转发到forwarders指定的DNS服务器查询,然后再查询本机,only表示只转发给forwarders指定的DNS服务器,不再查询本机
      • tcp-clients              :DNS同时接受客户端TCP连接的最大数量,默认100
      • allow-tranfer          :允许区域传输的辅助区域,若设置了辅助区域,则需要在主要区域中设定该值,用于将主要区域信息传输给辅助区域               

                        b. logging块:指定DNS服务器的日志参数

                        c. view块:指定主配置文件存放的路径及名称

      • match-clients:指定提交DNS请求客户端源IP地址范围
      • match-destinations:指定提交DNS请求客户端的目标IP地址范围
      • include:指定主配置文件

                                   view  form0 {

                                            match-clients { 192.168.0.0/24;};

                                            match-destinations { any; };

                                            include "/etc/bind/named0.conf";

                                   }

                                   view  form1 {

                                            match-clients { 192.168.1.0/24;};

                                            match-destinations { any; };

                                            include "/etc/bind/named1.conf";

                                   }

                               说明:以上view块中的信息表示,192.168.0.0段的客户端发送的任何DNS请求,将采用主配置文件/etc/bind/named0.conf相关配置进行解析,

                                           同理192.168.1.0段的将采用/etc/bind/named1.conf进行解析

               (2)主配置文件

                         主配置文件通过zone关键字定义当前所管辖的区域,格式如下:

                         zone "区域名称"  IN {

                                     参数;

                         };


                          其中包含的参数主要包括type(区域类型),file(区域配置文件),allow-update(指定可动态更新的客户端):

                         type区域类型如下:

                         a. master:主要区域

                         b. slave   :辅助区域,同步主要区域所有信息

                         c. stub     :类似辅助区域,只同步主要区域的NS信息以及NS信息对应的A记录信息

                         d. forward:转发区域,用于转发客户端的递归查询信息

                         e. hint      :当bind启动时,用来查询根域名服务器

                (3)区域配置文件

                          区域配置文件结构如下:

                          $TTL  86400

                          区域名称   记录类型   SOA  域名服务器FQDN.  管理员邮箱. ( 序列号   刷新时间   重试时间   失效时间  TTL)

                          区域名称   IN    NS    FQDN

                          FQDN       IN     A       IP地址

                          别名          IN     CNAME  对应A记录

                          区域名称  IN     MX      优先级     邮件服务器对应A记录

                          IP地址      IN     PTR       FQDN

                          说明:其中管理员邮箱中的@由“.”来替代,刷新时间,重试时间,失效时间均是针对辅助区域与主要区域的信息同步而言的,

                                      邮件交换记录中的优先级,数字越小,优先级越高

8. 辅助区域配置:

               (1)首先要在主要区域服务器的全局配置文件中添加如下参数:allow-transfer { 辅助区域服务器IP地址; };

               (2)修改辅助区域的主要配置文件

                          zone  "example.com"  IN {

                                     type slave;

                                     masters {主要区域服务器IP地址};

                                     file “/etc/bind/named0.conf”;

                          };

9.转发区域配置

                   BIND在配置转发时有完全转发和条件转发两种方式:

                 (1)完全转发。在全局配置文件options块中增加如下内容后,BIND先将客户端DNS查询信息转发到202.103.24.68DNS服务器,若未查询到信息,则再转发到下一个DNS服务器,直至最后转发到本机查询

                             forwarders { 202.103.24.68;202.103.0.117;};

                             forward first;

                 (2) 条件转发。在主要配置文件中增加如下内容,BIND将客户端DNS查询请求中后缀为demo.com的文件转发到202.103.24.68

                             zone "demo.com"  IN {

                                        type forward;

                                        forwarder { 202.103.24.68; };

                             };

10. TSIG(Transaction Signature 事务签名):主要用于辅助区域与主要区域数据同步传输的加密,提高数据同步过程的安全性

              (1)主要区域配置

                        a. 生成密钥

                             dnssec-keygen -a HMAC-MD5 -b 128 -n  HOST rndc-key

                              说明: -a:指定加密算法为HMAC-MD5

                                           -b:指定使用128位密钥长度

                                           -n:指定主机为rndc-key文件中的密钥所指定的主机

                        b. 查看密钥

                             通过上述命令会在当前目录下生成一个密钥对文件,通过cat获取该文件中的密钥字符串

                        c.主要全局配置文件/etc/bind/named.conf.options,在其中添加如下内容:

                            key   tiddyzhangtransfer {

                                   algorithm hmac-md5;

                                   secret  3JhG17t8kduTisdj234jylsdf==;

                            };

                             server 192.168.0.11 {

                                    keys { tiddyzhangtransfer; };

                             };

                           d. 修改主配置文件/etc/named.conf.local,添加如下黑体字内容

                                zone "example.com"  IN {

                                         type master;

                                         file "/etc/bind/example.com";

                                         allow-transfer { key tiddyzhangtransfer; };

                                };

                                zone "0.168.192.in-addr.arpa"  IN {

                                         type master;

                                         file "/etc/bind/0.168.192.local";

                                         allow-transfer { key tiddyzhangtransfer; };

                                };

                (2)辅助区域配置

 

                        a. 在主要全局配置文件/etc/bind/named.conf.options,在其中添加如下内容:

                            key   tiddyzhangtransfer {

                                   algorithm hmac-md5;

                                   secret  3JhG17t8kduTisdj234jylsdf==;

                            };

                             server 192.168.0.11 {

                                    keys { tiddyzhangtransfer; };

                             };

                         b. 修改主配置文件/etc/named.conf.local,注意如下黑体字内容

                                zone "example.com"  IN {

                                         type slave;

                                         masters { 192.168.0.10;};

                                         file "/etc/bind/example.com";

                                };

                                zone "0.168.192.in-addr.arpa"  IN {

                                         type slave;

                                         masters { 192.168.0.10;};

                                         file "/etc/bind/0.168.192.local";

                                };

11. DDNS(Dynamic Domain Name System 动态域名系统)
       (1)为什么引入DDNS
                 DNS可以为客户端进行名称解析的前提是DNS服务器上有相关的A记录(或PTR记录),前面已经提到如何手动向DNS中添加A记录,但是如果客户端IP不固定或客户端很多,那就无法准确的添加A记录(或PTR记录)到DNS服务器配置文件中,这就需要DDNS
                 DDNS是客户端的动态IP地址映射到一个固定的DNS服务器上,客户端每次连接网络时会通过信息传递把该FQDN与IP地址的对应关系传递给DNS服务器,DDNS需要DNS和DHCP结合来进行。DHCP服务在为客户端分配IP时,可以代表其DHCP客户端注册和更新客户端在DNS服务器上的A记录和PTR,此外DHCP服务器还可以在DHCP客户端IP租约被删除时清除该客户端在DNS服务器上的A记录和PTR记录

       (2)如何配置DDNS

                      a. 运用如下命令生成密钥

                         dnssec-keygen -a HMAC-MD5 -b 128 -n  USER tiddyzhangdns

                              说明: -a:指定加密算法为HMAC-MD5

                                           -b:指定使用128位密钥长度

                                           -n:指定用户名为tiddyzhangdns

                        b. 获取密钥

                             通过上述命令会在当前目录下生成一个密钥对文件,通过cat获取该文件中的密钥字符串

                        c. 修改DNS全局配置文件/etc/bind/named.conf.options,增加如下内容

                             

                             key   tiddyzhangdns {

                                   algorithm hmac-md5;

                                   secret  3JhG17t8kduTisdj234jylsdf==;

                            };

                        d. 修改DNS主配置文件/etc/bind/named.conf.local,增加黑体字部分

                             zone "example.com"  IN {

                                        type master;

                                        file  "/etc/bind/example.com";

                                        allow-update { key tiddyzhangdns; };

                             };

                             zone  "0.168.192.in-addr.arpa"  IN {

                                         type master;

                                         file "/etc/bind/0.168.192.local";

                                        allow-update { key tiddyzhangdns; }; 

                             };

                        e. 修改DHCP配置/etc/dhcp/dhcpd.conf,注意如下黑体字部分

                              

                                 key   tiddyzhangdns {

                                       algorithm hmac-md5;

                                       secret  3JhG17t8kduTisdj234jylsdf==;

                                 }

                                 zone  example.com. {

                                        primary 192.168.0.10;

                                        key   tiddyzhangdns;

                                }

                                zone 0.168.192.in-addr.arpa. {

                                        primary 192.168.0.10;

                                        key   tiddyzhangdns;

                                }

                                subnet   192.168.0.0  netmask 255.255.255.0  {

                                          option domain-name   "example.com";

                                          option  domain-name-servers 192.168.0.10;

                                          ...

                                 }

                        f. Linux客户端配置

                           在/etc/dhcp下建立文件dhclient.conf,内容如下:

                            send fqdn.fqdn  "client2"

                            send fqdn.encoded on;

                            send  fqdn.server-update off;

                        g. 检查DDNS配置是否成功

                            在配置完成DDNS后,在/etc/bind下会生成两个.jnl文件,这两个文件时当前正在区域配置文件的运行时文件,所有动态更新的记录首先会记录到这两个文件中。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值