DNS Domain Name System 域名解析系统

dns作用

正向解析:将域名转换成对应的ip地址

反向解析:将ip地址转换成对应的域名

使用端口  tcp/udp 53  DNS在进行区域传输的时候使用TCP协议,其它时候则使用UDP协议;

域名解析过程

RHEL5上DNS服务的搭建_DNS服务

dns服务器类型   缓存服务器    主域名服务器    从域名服务器

使用rpm包或者yum安装DNS服务的软件bind bind-chroot caching-nameserver


        bind               服务器软件包

        bind-chroot        切换路径包

        caching-nameserver 模板文件

[root@localhostServer]# rpm -ivh bind-9.3.6-20.P1.el5_8.5.x86_64.rpmbind-chroot-9.3.6-20.P1.el5_8.5.x86_64.rpm caching-nameserver-9.3.6-20.P1.el5_8.5.x86_64.rpm

安装bind-chroot软件包后配置文件的根目录到/var/named/chroot

[root@localhost~]# cd /var/named/chroot/etc
编辑主配置文件named.conf,可以复制caching-nameserver.conf文件内容做模板修改
[root@localhostetc]# cp -p named.caching-nameserver.conf named.conf
[root@localhostetc]# ls
localtime named.caching-nameserver.conf named.conf named.rfc1912.zones  rndc.key

编辑主配置文件

[root@localhostetc]# vim named.conf
options {
       listen-on port 53 { 192.168.10.1; };     监听IP,DNS服务器本机的IP地址
       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     { any; };       允许访问的客户机
       allow-query-cache { any; };
};
logging {
       channel default_debug {
               file"data/named.run";
               severity dynamic;
       };
};
viewlocalhost_resolver {
       match-clients      { any; };       允许匹配的客户端
       match-destinations { any; };
       recursion yes;
       include "/etc/named.rfc1912.zones";
};

编辑/etc/named.rfc1912.zones文件

[root@localhostetc]# vim named.rfc1912.zones
zone"example.com" IN {       正向解析
      type master;     //type类型 hint根区域 ,master主区域,slave从区域,forward转发区域
      file "example.com.zone";  
};

zone"10.168.192.in-addr.arpa" IN {  反向解析
     type master;
     file "192.168.10.arpa";

};

编辑example.com.zone192.168.10.arpa文件,可以从named.loacl等文件复制模板。

[root@localhostetc]# cd /var/named/chroot/var/named/
[root@localhostnamed]# ls
data              localhost.zone   named.ca         named.local  slaves
localdomain.zone  named.broadcast  named.ip6.local  named.zero
[root@localhostnamed]# cp -p named.local example.com.zone

编辑正向解析文件

[root@localhostnamed]# vim example.com.zone
$TTL    86400
@       IN     SOA     example.com. root.example.com.  ( @代表域名(实验为example.com)
                                    2014030301 ; Serial    版本号,自己编写
                                    28800      ; Refresh
                                    14400      ; Retry
                                    3600000    ; Expire
                                     86400)    ; Minimum
       IN     NS      dns1.example.com.   对DNS服务器本地的声明,[zone] IN NS [主机名称]
NS后面接的一定是主机名称,代表:这个zone的查询请向后面这部主机要求。所以如果你这个zone有两部以上的DNS服务器负责时,就必须写两个NS,而NS后面接的主机名称必须要有ip的对应,这时就需要A这个标记了。                                                             
dns1    IN     A       192.168.10.1       对DNS服务器本机的地址解析
www     IN     A       192.168.10.2      对域名的地址解析
@        IN    MX    5    mail.example.com. 邮件解析,MX与MAIL SERVER有关,其用途是邮件转发,MX后面的数值越小越优先,而接的主机名称必须有A记录才可以。
mail    IN     A       192.168.10.3
bbs     IN     A       192.168.10.4
blogs   IN     CNAME   bbs               设置别名
@       IN     A       192.168.10.2      
*       IN     A       192.168.10.2        匹配地址.example.com前加任何字符的查询
$GENERATE20-200 station$ IN A  192.168.10.$调用函数

编辑反向解析文件,可以复制正向解析文件编辑

[root@localhostnamed]# cp -p example.com.zone 192.168.10.arpa
[root@localhostnamed]# vim 192.168.10.arpa
$TTL    86400
@       IN     SOA     example.com. root.example.com.  (
                                    2014030301 ; Serial
                                    28800      ; Refresh
                                    14400      ; Retry
                                    3600000    ; Expire
                                     86400)    ; Minimum
       IN     NS      dns1.example.com.    
1       IN     PTR     dns1.example.com.
2       IN     PTR     www.example.com.
3       IN     PTR     mail.example.com.
4       IN     PTR     bbs.example.com.
$GENERATE 20-200 $IN PTR  station$.example.com

对编辑的配置文件进行语法的检测named-checkconf,named-chenkzone

[root@localhostnamed]# named-checkconf /var/named/chroot/etc/named.conf
[root@localhostnamed]# named-checkzone example.com /var/named/ chroot/var/named/example.com.arpa
zone example.com/IN:loaded serial 2014030301
OK
[root@localhostnamed]# named-checkzone example.com /var/named/ chroot/var/named/192.168.10.arpa
zone example.com/IN:loaded serial 2014030301
OK

配置从DNS服务器

[root@localhost~]# cd /var/named/chroot/etc/
[root@localhostetc]# ls
localtime  named.caching-nameserver.conf  named.rfc1912.zones  rndc.key
[root@localhostetc]# cp -p named.caching-nameserver.conf named.conf
[root@localhostetc]# vim named.conf
options {
       listen-on port 53 { 192.168.10.254; };
       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";
       // Those options should be usedcarefully because they disable port
       // randomization
       // query-source    port 53;    
       // query-source-v6 port 53;

       allow-query     { any; };
       allow-query-cache { any; };
};
logging {
       channel default_debug {
               file"data/named.run";
               severity dynamic;
       };
};
viewlocalhost_resolver {
       match-clients      { any; };
       match-destinations { any; };
       recursion yes;
       include"/etc/named.rfc1912.zones";
};
[root@localhostetc]# vim named.rfc1912.zones
zone "example.com" IN {
      type slave;
      file"slaves/example.com.zone";
      masters{192.168.10.1;};
};

zone "10.168.192.in-addr.arpa" IN {
     type slave;
     file"slaves/192.168.10.zrpa";
     masters {192.168.10.1;};
};

在主DNS服务器的主配置文件中添加,只允许此IP地址的客户端从主DNS服务器获得解析文件

[root@server1~]# vim /var/named/chroot/etc/named.conf
allow-transfer { 192.168.10.1; };

子域授权。 

    dns是分层负责解析的,子域授权就是在一个域内新建几个子域,然后客户端的dns指向父域的地址,能够解析到父域管辖内子域的记录,子域的客户端把DNS指向子域能够解析父域的地址。减轻父域的负担

    配置DNS服务器的子域授权。正常配置两台DNS服务器,在父DNS服务器的正向解析文件中添加子域DNS服务器的地址指向。有时配置不成功,需要在父域主配置文件中添加allow-recursion { any };允许递归查询。在子域DNS服务器中全局配置中添加forwarders { 192.168.10.254; };,当有DNS请求发给子域DNS服务器时,子域可以将请求转发给父域。

我们的DNS在本地指定的DNS找不到解析后,会直接向跟发起请求,为了使根的负载变小,我们可以设置请求转发。在/etc/named.conf中可以在options段中使用forwarders和forward指令设置DNS转发:

转发格式:

forwarders {

   DNS_IP_1;

   DNS_IP_2;

   };

forwarders指令用于设置将DNS请求转发到哪个服务器,可以指定多个服务器的IP地址。

forward

forward first | only;

forward指令用于设置DNS转发的工作方式:

forward first设置优先使用forwarders DNS服务器做域名解析,如果查询不到再使用本地DNS服务器做域名解析。

forward only设置只使用forwarders DNS服务器做域名解析,如果查询不到则返回DNS客户端查询失败。

转发某特定区域:

zone "特定区域" IN {

type forward;

forwarders { IP; }

forward only|first;

}

DNS缓存服务器

利用forwarders可以做DNS缓存服务器。只需在主配置文件中添加forwarders { ; };

父域
[root@server1~]# vim /var/named/chroot/var/named/tarena.com.zone
bj.example.com. IN NS dns1.example.com.
dns1.bj.example.com. IN A 192.168.10.2
子域配置
[root@localhostetc]# vim /var/named/chroot/etc/named.conf
forwarders { 192.168.10.254; };  全局配置中

分离解析

根据不同客户端的来源地址在访问相同域名时,可以给出不同解析结果。

[root@localhostetc]# vim /var/named/chroot/etc/named.conf
viewlocalhost_resolver {                  view名字不能一样
       match-clients      { any; };    //设置使用此zone的匹配的客户端限制,telecom电信,unicom联通。
       match-destinations { any; };
       recursion yes;
       include"/etc/named.rfc1912.zones";
};
viewlocalhosti1_resolver {
       match-clients      { any; };
       match-destinations { any; };
       recursion yes;
       include"/etc/named.rfc1913.zones";     文件名不能一样
};
[root@localhostetc]# cp -p named.rfc1912.zones named.rfc1913.zones
[root@server1~]# vim /var/named/chroot/etc/named.rfc1913.zones
不能与原来文件名一样
zone"tarena.com" IN {
       type master;
       file "ly.example.com.zone";    正向解析
};

zone"10.168.192.in-addr.arpa" IN {   反向解析
      type master;              
      file "ly.192.168.10.arpa";
};

编辑正向解析文件

[root@server1named]# cp -p example.com.zone ly.example.com.zone
[root@server1named]# vim ly.example.com.zone
$TTL    86400
@       IN     SOA     example.com.root.example.com.  (
                                    2014030601 ; Serial
                                    28800      ; Refresh
                                    14400      ; Retry
                                     3600000    ; Expire
                                     86400)    ; Minimum
       IN     NS      dns1.example.com.
dns1    IN     A       192.168.10.254
www     IN     A       192.168.10.2