码迷,mamicode.com
首页 > 其他好文 > 详细

DNS正向解析、反向解析、主从复制以及正向子域授权

时间:2015-04-27 15:40:43      阅读:356      评论:0      收藏:0      [点我收藏+]

标签:dns(domain name system   因特网上作为域名和ip地址相互映射的一个分布式数据库   域名系统)   而不用去记住能够被机器直接读取的ip数串。通过主机名   能够使用户更方便的访问互联网   最终得到该主机名对应的ip地址的过程叫做域名解析(或主机名解析)。dns协议运行在udp协议之上   

一、DNS概述以及相关术语

    1.DNS是域名系统 (Domain Name System) 的缩写,是一种组织域层次结构的计算机和网络服务命名系统。它的作用是:把域名转换成为网络可以识别的 IP 地址,查询结果保存起来,并告诉给客户端。

    2.FQDN全名是Fully Qualified Domain Name,即完全合格域名

              3.CDN的全称是Content Delivery Network,即内容分发网络,通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。



二、DNS查询过程

    DNS的查询过程是指在客户端是通过DNS服务器将一个IP地址转化为一个FQDN、将一个FQDN转化为一个IP地址或查询一个区域的邮件服务器的过程。

    1.按查询方式分类DNS查询

        a.递归查询:当DNS服务器接收到查询请求时,要么做出查询成功响应,要么做出查询失败的响应。递归查询一般发生在DNS客户端与DNS服务器之间。

        b.迭代查询:DNS服务器根据自己的高速缓存或区域的数据,以最佳结果响应。如果DNS服务器无法解析,它可能返回一个指针。指针指向有下级域名的DNS服务器,继续该过程,直到找到拥有所查询名字的DNS服务器,或直到出错、超时为止。迭代查询一般发生在DNS服务器之间。

    2.按查询内容分类DNS查询

        a.正向查询;域名-->IP

        b.反向查询:IP---->域名


三、DNS的测试工具

1.dig的使用(用来测试正向解析,在本机用)

    dig [-t type] name [@SERVER] [query options]

                         dig用于测试dns系统,因此,不会查询hosts文件进行解析;

                             查询选项:

+[no]trace:跟踪解析过程

+[no]recurse:进行递归解析

                         测试反向解析:

dig -x IP @SERVER

                         模拟区域传送:

dig -t axfr ZONE_NAME @SERVER

                             例如:dig -t axfr magedu.com @172.16.100.11                                                       @172.16.100.11:表示使用172.16.100.11服务器来解析


2.host命令:

host [-t type] name [SERVER]

 

3.nslookup命令:

 nslookup [-option] [name | -] [server]

 

 交互式模式:

         nslookup>

                 server IP: 指明使用哪个DNS server进行查询;

                 set q=RR_TYPE: 指明查询的资源记录类型;

                 NAME:要查询的名称;



四、正、反向解析、主从复制以及正向子域授权相关示例

  1. 先安装bind工具

[root@localhost ~]# yum install bind -y

2.缓存服务器的配置以及正向解析的过程(正向解析是将域名解析为ip)

[root@localhost ~]# vim /etc/named.conf
#
options {
       // listen-on port 53 { 127.0.0.1; };
       //listen-on-v6 port 53 { ::1; };
        directory       "/var/named";    #表示工作目录
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        //allow-query     { localhost; };    #注释掉表示允许所有
        recursion yes;                #允许递归

       // dnssec-enable yes;
        //dnssec-validation yes;
        //dnssec-lookaside auto;

        /* Path to ISC DLV key */
        //bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
};
[root@localhost ~]# service named restart
[root@localhost ~]# ss -tunl | grep :53
[root@localhost ~]# vim /etc/named.rfc1912.zones    
#添加正向区域
    zone  "tg.com" IN {
            type master;
            file "tg.com.zone";
    };    
[root@localhost ~]# named-checkconf                 #检查配置文件有没语法错误
[root@localhost ~]# rndc reload
[root@localhost ~]# rndc status
[root@localhost ~]# tail /var/log/messages    #查看日志后会发现差一个区域解析库文件
[root@localhost ~]# vim /var/named/tg.com.zone
#添加
    
$TTL 1D    #统一的TTL值
$ORIGIN tg.com.    #统一的后缀:tg.com.
@       IN       SOA     ns1.tg.com.  #(服务器)    ns1admin.tg.com.  #(管理员邮箱地址) (
                2015042201            #序列号
                2H            #刷新时间
                10M            #重试时间
                1W            #过期时间
                1D            #否定答案的最小TTL值
)

        IN      NS      ns1            #定义名称服务器ns1
        IN      NS      ns2            #定义名称服务器ns2
        IN      MX  10  mx1
        IN      MX  20  mx2
ns1     IN      A       192.168.2.199
ns2     IN      A       192.168.2.222
mx1     IN      A       192.168.2.199
mx2     IN      A       192.168.2.193
www     IN      CNAME   ns1
ftp     IN      CNAME   ns2
*             IN            A            192.168.2.199

[root@localhost ~]# named-checkzone "tg.com" /var/named/tg.com.zone 
zone tg.com/IN: loaded serial 2015042201
OK
[root@localhost ~]# cd /var/named/
[root@localhost named]# chown :named tg.com.zone 
[root@localhost named]# chmod 640 tg.com.zone 
[root@localhost named]# rndc reload
[root@localhost named]# dig -t A www.tg.com  @192.168.2.200    #测试解析是否成功,到此主服务器就实现了

至此,我们的正向解析器就完工了。


3.反向解析(将IP解析为域名)

[root@localhost named]# vim /etc/named.rfc1912.zones 
#添加反向区域
zone "2.168.192.in-addr.arpa" IN {
        type master;
        file "2.168.192.zone";
};

[root@localhost named]# vim 2.168.192.zone 
$TTL 2D
$ORIGIN 2.168.192.in-addr.arpa.
@       IN      SOA     ns1.tg.com.     admin.tg.com. (
        2015042610
        2H
        1M
        2W
        1D
)

        IN      NS      ns1.tg.com.
        IN      NS      ns2.tg.com.

99      IN      PTR     www.tg.com.
200     IN      PTR     ftp.tg.com.
200     IN      PTR     ns1.tg.com.
200     IN      PTR     ns2.tg.com.

[root@localhost named]#chmod 640 /var/named/2.168.192.zone
[root@localhost named]#chown :named /var/named/2.168.192.zone

[root@localhost named]# rndc reload
server reload successful
[root@localhost named]# rndc status
version: 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6
CPUs found: 1
worker threads: 1
number of zones: 21
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running   

[root@localhost named]# dig -x 192.168.2.99 @192.168.2.200    #测试解析一下192.168.2.99,发现能解析成功

; ;; QUESTION SECTION:
;www.tg.com.			IN	A

;; ANSWER SECTION:
www.tg.com.		86400	IN	CNAME	ns3.tg.com.
ns3.tg.com.		86400	IN	A	2.2.2.2

到此反向解析就成功了


4.主从复制


#重新进入一台主机,比如我这里进入的是192.168.2.199,然后直接进入它的主配置文件
[root@localhost etc]# vim named.rfc1912.zones 
#添加到这个文件里面
zone "tg.com" IN {
        type slave;
        masters { 192.168.2.200; };
        file "slaves/tg.com.zone";
};
[root@localhost named]# cd /var/named/slaves ;ls
tg.com.zone                #可以发现slaves目录下有了主服务器的正向解析库文件,说明主从服务器同步成功
[root@localhost slaves]# dig -t A www.tg.com @192.168.2.199
.....
;; QUESTION SECTION:
;www.tg.com.			IN	A

;; ANSWER SECTION:
www.tg.com.		86400	IN	CNAME	ns3.tg.com.
ns3.tg.com.		86400	IN	A	2.2.2.2
......
#测试了一下可以看出,测试成功了

至此我们的主从复制就OK了



5.正向子域授权(即在原有的域上再划分出一个小的区域并指定新DNS服务器。)

[root@localhost named]# vim /var/named/tg.com.zone     #在里面添加子域ops.tg.com
ops     IN      NS      ns1.ops
ops     IN      NS      ns2.ops
ns1.ops IN     A      192.168.2.01
ns2.ops IN      A       192.168.2.02
[root@localhost named]# rndc status
[root@localhost named]# rndc reload
[root@localhost named]# rndc status    #可以发现区域数没发生改变,因为只是子域授权,没,没发生本质性改变。然后再另外一台机器上配置子域服务器


[root@localhost ~]# yum install bind -y    #在新的机器里面安装bind

[root@localhost ~]# vim /etc/named.conf 

#注释掉
options {
//      listen-on port 53 { 127.0.0.1; };
//      listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
//      allow-query     { localhost; };
        recursion yes;

//      dnssec-enable yes;
//      dnssec-validation yes;
//      dnssec-lookaside auto;

        /* Path to ISC DLV key */
//      bindkeys-file "/etc/named.iscdlv.key";

//      managed-keys-directory "/var/named/dynamic";
};
[root@localhost ~]# service named restart
Stopping named:                                            [  OK  ]
Starting named:                                            [  OK  ]
[root@localhost ~]# ss -tunl | grep :53
udp    UNCONN     0      0          192.168.2.199:53                    *:*     
udp    UNCONN     0      0              127.0.0.1:53                    *:*     
tcp    LISTEN     0      3          192.168.2.199:53                    *:*     
tcp    LISTEN     0      3              127.0.0.1:53                    *:*     
#可以看出已经监听在53号端口了
[root@localhost ~]# vim /etc/named.rfc1912.zones     #在最后面添加区域ops.tg.com
zone "ops.tg.com" IN {
        type master;
        file "ops.tg.com.zone";
};
[root@localhost ~]# rndc status
[root@localhost ~]# rndc reload
[root@localhost ~]# rndc status        #可以发现区域解析库文件多了一个
[root@localhost ~]# tail /var/log/messages    #可以方发现少一个ops.tg.com的区域解析库文件
[root@localhost ~]# vim /var/named/ops.tg.com.zone

$TTL 1D
$ORIGIN ops.tg.com
@       IN      SA      ns1.ops.tg.com. admin.ops.tg.com. (
                        2015042601
                        1H
                        10M
                        3D
                        1D
)

        IN      NS      ns1
        IN      NS      ns2
ns1     IN      A       192.168.2.01    #必须跟父域中的保持一致
ns2     IN      A       192.168.2.02    #必须跟父域中的保持一致
www     IN      A       192.168.2.100
*       IN      A       192.168.2.100
 
[root@localhost ~]# cd /var/named
[root@localhost named]# chmod 640 ops.tg.com.zone 
[root@localhost named]# chown :named ops.tg.com.zone 
[root@localhost named]# rndc reload
server reload successful
                                    
[root@localhost ~]# rndc reload
server reload successful
[root@localhost ~]# dig -t A ns2.ops.tg.com @192.168.2.199    #查子域中ns2.ops.tg.com,发现可以解析出来
[root@localhost ~]# dig -t A ns2.tg.com @192.168.2.199        #查父域ns2.tg.com,发现解析不了,因为它不知道父域在哪儿,有网的话,它就去找根了

#让子域能解析父域而不用去找根


[root@localhost named]# vim /etc/named.conf    #在父服务器里面options{}里面添加转发器,提供转发功能
 forward first;
 forwarders { 192.168.2.1; }    #192.168.2.1表示能与外面通信的服务器

[root@localhost named]# rndc reload
[root@localhost named]# dig -t A www.baidu.com @192.168.2.199    #发现能够成功解析,在转发之前是解析不到的,这是全部转发


下面是区域转发,在子域服务器里面:

[root@localhost named]# vim /etc/named.rfc1912.zones 
zone "tg.com"   IN {
        type forward;
        foward only;
        forwarders { 192.168.2.1; }
};

[root@localhost named]# vim /etc/named.conf 

        dnssec-enable no;    #将已注释掉的这行去掉注释,并将yes改为no
        dnssec-validation no;    #将已注释掉的这行去掉注释,并将yes改为no
//      dnssec-lookaside auto;

[root@localhost named]# rndc reload

至此我们的子域授权就OK了

DNS正向解析、反向解析、主从复制以及正向子域授权

标签:dns(domain name system   因特网上作为域名和ip地址相互映射的一个分布式数据库   域名系统)   而不用去记住能够被机器直接读取的ip数串。通过主机名   能够使用户更方便的访问互联网   最终得到该主机名对应的ip地址的过程叫做域名解析(或主机名解析)。dns协议运行在udp协议之上   

原文地址:http://tanjie.blog.51cto.com/10027618/1638888

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!