DNS是在网络中将计算机名转换成IP的一个服务,在LINUX中可以很轻松的搭建一台DNS服务器,我们需要在LINUX系统中安装DNS服务(安装包名:bind)为了安全我们通常用一起安装bind-chroot为DNS的牢目录、根目录。为了放便还可以安装DNS配置文件的模板包(caching-nameserver).安装完后,我们需要对DNS进行配置我们要监听的IP、端口、解析的域名,配置好后我们重启服务就好了,然后我们可以找别一台,本机也可以,指定DNS地址然后进行测试。

下面是我们的一个搭建过程

拓扑:

                                 DNS Slave

-----DNS Master(vmnet1)----------(vmnet1)

                                 Win7 Client

实验一:搭建主DNS服务器

    

     www.192.168.10.253

     bbs.    192.168.10.100

     blog是bbs别名    

1、安装软件包

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

2、修改主配置文件

[root@localhost ~]# cd /var/named/chroot/etc/     //牢目录/var/named/chroot

[root@localhostetc]# cp -p named.caching-nameserver.confnamed.conf  

//拷贝模板成为主配置文件

[root@localhostetc]# vimnamed.conf

...

 15         listen-on port 53 { 192.168.10.253; };                    //监听本机端口

 16 //      listen-on-v6 port 53 { ::1; };                                   //IPV6模式

...

 27         allow-query     { any; };                                             //访问权限

 28         allow-query-cache { any; };

...

 37         match-clients      { any; };

 38         match-destinations { any; };

[root@localhostetc]# vim named.rfc1912.zones

...

 51 zone "" IN {                                                          //解析的域名

 52         type master;                                                                  //类型   主

 53         file ".zone";                                  // 解析数据库文件

54 };

 55

 56 zone "10.168.192.in-addr.arpa" IN {              //解析的IP地址段(反向解析)

 57         type master;

 58         file ".arpa";

59 };

[root@localhostetc]# named-checkconfnamed.conf                  检验配置文件语法

 

3、修改数据库文件

 

 

[root@localhostetc]# cd /var/named/chroot/var/named/ 

//进入数据库文件目录

[root@localhost named]# cp -p named.local.zone              

// 建立两个文件(与主配置文件中设置同名)

[root@localhost named]# cp -p named.local.arpa

[root@localhost named]# vim .zone      //编辑文件,写入信息

$TTL    86400

@       IN      SOA     localhost. root.localhost.  (

2014061701 ; Serial

                                      28800      ; Refresh

                                      14400      ; Retry

                                      3600000    ; Expire

86400 )    ; Minimum

IN      NS      dns01..

dns01    IN      A       192.168.10.253

www     IN      A       192.168.10.253

bbs     IN      A       192.168.10.100

blog    IN      CNAME   bbs

[root@localhost named]# cat.arpa

$TTL    86400

@       IN      SOA     localhost. root.localhost.  (

                                      2014061701; Serial

                                      28800      ; Refresh

                                      14400      ; Retry

                                      3600000    ; Expire

86400 )    ; Minimum

IN      NS      dns01..

253      IN      PTR     dns01..

253      IN      PTR     www..

100      IN      PTR     bbs..

100      IN      PTR     blog..

[root@localhost named]# named-checkzone   .zone                //检验解析库语法

zone /IN: loaded serial 1997022700

OK

[root@localhost named]# named-checkzone  .arpa                                            //检验解析库语法

zone /IN: loaded serial 1997022700

OK                                           

4、启动服务

[root@localhost named]# service named restart

[root@localhost named]# chkconfig named on

 

5、测试

取消之前hosts文件定义

把DNS指向服务器

host www.

nslookup

 

 

实验二:DNS高级应用

     实现DNS负载均衡,当用户访问www.的时候,2/3用户访问10.253,1/3用户访问10.100

     确保用户访问的时候仍然可以访问www. 的网站     

     实现用户在访问的时候只要域名正确就可以访问www. 的网站

 

[root@localhost ~]# cd /var/named/chroot/var/named/

[root@localhost named]# cat .zone

...

www     IN      A       192.168.10.253

www     IN      A       192.168.10.253

www     IN      A       192.168.10.100

.  IN A    192.168.10.253

$GENERATE 20-50 station$ IN A   192.168.10.$

*       IN      A       192.168.10.253

 

实验三:搭建从DNS服务器

     给上面的主DNS搭建一个辅助DNS

1、安装软件包

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

2、修改从DNS的主配置文件

 

[root@localhost ~]# cd /var/named/chroot/etc/

[root@localhostetc]# cp -p named.caching-nameserver.confnamed.conf

[root@localhostetc]# vimnamed.conf

15         listen-on port 53 { 192.168.10.100; };

...

 27         allow-query     { any; };

 28         allow-query-cache { any; };

...

 37         match-clients      { any; };

 38         match-destinations { any; };

//编辑主配置连接文件,这个文件包含域名,域库文件的相关设置,解析方式。

[root@ser2 etc]# vim named.rfc1912.zones

...

 51 zone "" IN {                                                 //需要解析的域

 52         type slave;                                                 //从DNS服务器

 53         file "slaves/.zone";             //更新来的库文件存放位置

 54         masters { 192.168.10.253; };                //从192.168.10.253处更新

55 };

 56

 57 zone "10.168.192.in-addr.arpa" IN {

 58         type slave;

 59         file "slaves/.arpa";

 60         masters { 192.168.10.253; };

61 };

[root@ser2 etc]# named-checkconfnamed.conf

 

 

3、修改主DNS的主配置文件,添加授权信息

 

 

 

[root@localhost ~]# cd /var/named/chroot/etc/                                   

[root@localhostetc]# vim named.conf              

//添加21行内容                                 

 

 21         allow-transfer { 192.168.10.100; }; 

  //只允许192.168.10.100更新库文件

...

[root@localhostetc]# cd /var/named/chroot/var/named/

下面是正向解析文件

[root@localhost named]# cat .zone

$TTL    86400

@       IN      SOA     . root..  (

                                      2014041802 ; Serial          //序列号加1

                                      28800      ; Refresh

                                      14400      ; Retry

                                      3600000    ; Expire

86400 )    ; Minimum

IN      NS      dns01..

IN      NS      dns02..                         //添加从DNS服务器

        IN      A       192.168.10.253

dns01    IN      A       192.168.10.253

dns02    IN      A       192.168.10.100                   //为从DNS正向解析

www    IN      A       192.168.10.253

www    IN      A       192.168.10.253

www     IN      A       192.168.10.100

bbs     IN      A       192.168.10.100

blog    IN      CNAME   bbs

$GENERATE 20-50 station$ IN A   192.168.10.$    //定义变量

*       IN      A       192.168.10.101

 

下面是反向解析文件

 

[root@localhost named]# cat .arpa

$TTL    86400

@       IN      SOA     . root..  (

                                      2014041802 ; Serial      //序列号加1

                                      28800      ; Refresh

                                      14400      ; Retry

                                      3600000    ; Expire

86400 )    ; Minimum

IN      NS      dns01..

IN      NS      dns02..           //添加从DNS服务器

253      IN      PTR     dns01..

100     IN      PTR     dns02..       //为从DNS反向解析

253      IN      PTR     www..

100      IN      PTR     bbs..

[root@localhostetc]# service named restart

 

 

 4、启动从DNS服务器并验证

 

[root@localhostetc]# service named restart

[root@localhostetc]# chkconfig named on

[root@localhostetc]# ls /var/named/chroot/var/named/slaves/

.zone.arpa

【DNS子域授权配置】
使子域同样具有DNS解析的能力。只需要在子域中以子域为域名来建立DNS服务器
例:总部:
    分部:sh.
    分部DNS服务器:
www.sh.


【DNS子域授权配置】
kvm_node2(子域)上面操作:

进到目录
[root@dns2 ~]# cd /var/named/chroot/etc/

编辑配置文件

[root@dns2 etc]# vim named.rfc1912.zones
...
 51 zone "sh." IN {
 52         type master;
 53         file "sh..zone";
 54         allow-transfer { none; };
 55 };

 

[root@dns2 etc]# cd /var/named/chroot/var/named/
[root@dns2 named]# cp -p named.zero sh..zone
[root@dns2 named]# cat sh..zone
$TTL    86400
@               IN SOA  dns1.sh..      root.sh.. (
                                        2014062401      ; serial (d. adams)
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum
              IN      NS      dns1.sh..
dns1      IN      A       192.168.100.20
www     IN      A       192.168.100.100
[root@dns2 named]# service named restart

kvm_node1(父域)上面操作:
[root@dns1 ~]# cd /var/named/chroot/var/named/
[root@dns1 named]# cat .zone
$TTL    86400
@               IN SOA  dns1..      root.. (
                                        2014062401      ; serial (d. adams)
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum
        IN      NS      dns1..
sh..              IN      NS      dns1.sh..       

//标记子域DNS服务器
dns1.sh..     IN      A       192.168.100.20
dns1     IN      A       192.168.100.10
www     IN      A       192.168.100.1
blog      IN      CNAME   www
$GENERATE       1-100   station$        IN      A       192.168.100.$

[root@dns1 named]# service named restart                //重启服务                       
测试:
[root@localhost ~]# host
www.sh. 192.168.100.10


反过来客户端dns指向子域,解析父域条目

 

[root@dns2 named]# vim /var/named/chroot/etc/named.conf
 21         forwarders { 192.168.100.10; };                  //指定父域
[root@dns2 named]# service named restart

测试:

 

[root@localhost ~]# host www. 192.168.100.20
Using domain server:
Name: 192.168.100.20
Address: 192.168.100.20#53
Aliases:

www. has address 192.168.100.1     //成功解析到了域名

 

 


【DNS分离解析/视图】
判断不同的来源地址访问相同域名给解析不同结果,这样我们需要不同的配置文件,在主配置文件中进行判断,判断后指向不同的配置文件,来查找不同的解析库文件

[root@dns1 ~]# cd /var/named/chroot/etc/
[root@dns1 etc]# vim named.conf
...
 15         listen-on port 53 { 192.168.100.10; };
 16 //      listen-on-v6 port 53 { ::1; };
...
 27         allow-query     { any; };
 28         allow-query-cache { any; };
...
 36 view lt {
 37         match-clients      { 192.168.100.20; };            //判断依据
 38         match-destinations { any; };
 39         recursion yes;
 40         include "/etc/named.rfc1912.zones";              //执行的文件
 41 };
 42
 43 view yd {
 44         match-clients      { any; };
 45         match-destinations { any; };
 46         recursion yes;
 47         include "/etc/named.rfc1913.zones";
 48 };
[root@dns1 etc]# cp -p named.rfc1912.zones named.rfc1913.zones
[root@dns1 etc]# vim named.rfc1912.zones
...
 51 zone "" IN {
 52         type master;
 53         file "lt..zone";
 54         allow-transfer { none; };
 55 };
[root@dns1 etc]# vim named.rfc1913.zones
 51 zone "" IN {
 52         type master;
 53         file "yd..zone";
 54         allow-transfer { none; };
 55 };

[root@dns1 etc]# cd /var/named/chroot/var/named/
[root@dns1 named]# cp -p named.zero lt..zone
[root@dns1 named]# cp -p named.zero yd..zone
[root@dns1 named]# cat lt..zone
$TTL    86400
@               IN SOA  dns1..      root.. (
                                        2014062401      ; serial (d. adams)
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum
        IN      NS      dns1..
dns1    IN      A       192.168.100.10
www     IN      A       1.1.1.1
[root@dns1 named]# cat yd..zone
$TTL    86400
@               IN SOA  dns1..      root.. (
                                        2014062401      ; serial (d. adams)
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum
        IN      NS      dns1..
dns1    IN      A       192.168.100.10
www     IN      A       2.2.2.2

[root@dns1 named]# service named restart               // 重启服务器         

测试:
用192.168.100.20和其他客户机分别测试