公司网站已经搭建完成,但是目前只能通过IP地址进行访问。因前期已经申请了二级DNS区域tarena.com,现要求为此区域搭建一台DNS服务器,以便用户能通过域名的方式访问网站。测试阶段主要提供以下正向记录解析:

svr5.tarena.com ---> 192.168.4.5

pc205.tarena.com ---> 192.168.4.205

win7pc.tarena.com ---> 192.168.4.234


步骤一:构建DNS服务器

1)使用yum安装DNS所需软件包bind、bind-chroot

[root@svr5 ~]# yum -y install bind bind-chroot

.. ..

[root@svr5 ~]# rpm -q bind bind-chroot

bind-9.8.2-0.17.rc1.el6_4.6.x86_64

bind-chroot-9.8.2-0.17.rc1.el6_4.6.x86_64

2)为DNS服务定义区域

安装好bind软件包以后,默认提供了一个现成的/etc/named.conf配置文件,大家可以基于此文件的内容去修改,也可以移除此文件后重新建立。由于其中有很多配置内容尚未学到,为了简单起见,建议大家先做好备份,然后从空文件手动建立named.conf:

[root@svr5 ~]# mv  /etc/named.conf  /etc/named.conf.bak      //备份默认配置

[root@svr5 ~]# vim  /etc/named.conf                  //建立新配置

options {

    directory   "/var/named";                         //地址文件的默认位置

};

zone "tarena.com" IN {                             //定义正向区域

    type  master;                                     //区域类型为主DNS

    file  "tarena.com.zone";                        //区域数据文件

};

创建完成后,可以检查一下语法格式,如果有提示错误,则需要纠正;否则应无任何输出,说明语法上正常。

[root@svr5 ~]# named-checkconf /etc/named.conf

[root@svr5 ~]#                   //无错误,无输出

3)建立解析数据库(区域文件)

根据named.conf配置中指定的路径和名称,直接vim建立区域文件:

[root@svr5 ~]# vim /var/named/tarena.com.zone

$TTL   86400

@   IN   SOA   @    root.tarena.com.  (

    2015052201                                          ;更新序列号

    4H                                                  ;刷新时间

    15M                                                 ;重试间隔

    4H                                                  ;超时时间

    1D                                                  ;无效记录的生存时间

)

@       IN      NS      svr5.tarena.com.                ;本区域DNS服务器的主机名

svr5    IN      A       192.168.4.5                     ;本区域DNS服务器的IP地址

pc205   IN      A       192.168.4.205                   ;其他解析记录 

win7pc  IN      A       192.168.4.110

建好之后,检查一下文件的配置语法,确保结果为OK:

[root@svr5 named]# named-checkzone  tarena.com  /var/named/tarena.com.zone

zone tarena.com/IN: loaded serial 2013090901

OK                                                   //检查未发现问题

4)确保重新加载DNS服务程序

重新启动named服务:

[root@svr5 named]# service named restart 

停止 named:                                               [确定]

Generating /etc/rndc.key:                                [确定]

启动 named:                                               [确定]

第一次运行named服务时,服务脚本因生成/etc/rndc.key密钥文件需要提供一些随机信息,可能会耗时较长。采用以下任一种方法可避免漫长的等待:做一些随意的键盘输入或读磁盘操作(比如ls -R /)来增加随机信息;或者,直接执行rndc-confgen -r /dev/urandom -a操作来创建/etc/rndc.key文件。

注意:/dev/urandom是Linux系统中用来提供随机字串信息的特殊设备。

启动完成后,确认服务器的多个IP地址都监听了UDP 53端口:

[root@svr5 named]# netstat -anptu|grep named

tcp        0      0 192.168.4.5:53     0.0.0.0:*     LISTEN      31868/named         

tcp        0      0 127.0.0.1:53       0.0.0.0:*     LISTEN      31868/named         

tcp        0      0 127.0.0.1:953      0.0.0.0:*     LISTEN      31868/named         

tcp        0      0 ::1:953             :::*          LISTEN      31868/named         

udp        0     0 192.168.4.5:53       0.0.0.0:*                 31868/named         

udp        0      0 127.0.0.1:53        0.0.0.0:*                 31868/named


步骤二:配置DNS客户机并测试

1)为Linux客户机指定默认使用的DNS服务器地址

修改/etc/resolv.conf文件,通过nameserver记录设置:

[root@pc205 ~]# vim /etc/resolv.conf

.. ..

nameserver 192.168.4.5

2)使用nslookup查询任务要求的几个域名

查询域名svr5.tarena.com,对应的记录应为192.168.4.5:

[root@pc205 ~]# nslookup svr5.tarena.com 

Server:        192.168.4.5                          //DNS服务器的名称

Address:    192.168.4.5#53                           //DNS服务器的地址、端口

Name:    svr5.tarena.com                          //查询的目标域名 

Address: 192.168.4.5                              //反馈的结果IP地址

查询域名pc205.tarena.com,对应的记录应为192.168.4.205:

[root@pc205 ~]# nslookup pc205.tarena.com

Server:        192.168.4.5

Address:    192.168.4.5#53

Name:    pc205.tarena.com

Address: 192.168.4.205

查询域名win7pc.tarena.com,对应的记录应为192.168.4.110:

[root@pc205 ~]# nslookup win7pc.tarena.com

Server:        192.168.4.5

Address:    192.168.4.5#53

Name:    win7pc.tarena.com

Address: 192.168.4.110


2 搭建多区域DNS服务器

2.1 问题

沿用练习一,扩展现有的DNS服务配置,增加对baidu.com区域的解析支持:

能够将www.baidu.com或baidu.com解析为1.2.3.4

能够将music.baidu.com解析为5.6.7.8

另一方面,为192.168.4.0/24网段提供反向解析:

能够将192.168.4.100解析为www.tarena.com

能够将192.168.4.205解析为pc205.tarena.com

2.2 方案

对于一台DNS服务器来说,可能不止管理一个区域。当需要支持多个DNS区域的时候,可以在named.conf配置文件中添加新的zone区域定义,并且为这些区域分别制定解析记录文件,然后重新启动DNS服务即可。

多区域定义的配置构成如下:

zone  "区域1" IN {

    type 类型; 

    file "区域1的解析记录文件";

};

zone  "区域2" IN {

    type 类型;

    file "区域2的解析记录文件";                               

};

.. ..

根据IP地址来查询域名的方式叫做反向解析,如果需要支持反向查询,区域名称应符合格式“反序网段地址.in-addr.arpa”。比方说,对于192.168.4.0/24网段,反向区域的名称应该表示为4.168.192.in-addr.arpa。另外,在反向区域的解析记录文件中,对应的资源类型应该是PTR,而不是A。


2.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:添加baidu.com区域

1)修改主配置文件/etc/named.conf

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

.. ..

zone "baidu.com" IN {                               //添加区域baidu.com

        type master;

        file "baidu.com.zone";

};

2)为新区域baidu.com建立解析记录文件

[root@svr5 ~]# vim /var/named/baidu.com.zone

$TTL   86400

@   IN   SOA   @    root.tarena.com.  (

    2015052201                                          ;更新序列号

    4H                                                  ;刷新时间

    15M                                                 ;重试间隔

    4H                                                  ;超时时间

    1D                                                  ;无效记录的生存时间

)

@       IN      NS      svr5.tarena.com.                    ;本区域DNS服务器的主机名

www     IN      A       1.2.3.4                             ;本区域DNS服务器的IP地址

music   IN      A       5.6.7.8                             ;其他解析记录

3)重新加载named服务

[root@svr5 ~]# service named restart 

停止 named:                                               [确定]

启动 named:                                               [确定]

4)验证新区域的域名查询

查询域名www.baidu.com时,解析结果应为1.2.3.4:

[root@pc205 named]# nslookup www.baidu.com

Server:        192.168.4.5

Address:    192.168.4.5#53

Name:    www.baidu.com

Address: 1.2.3.4

查询域名music.baidu.com时,解析结果应为5.6.7.8:

[root@pc205 named]# nslookup music.baidu.com

Server:        192.168.4.5

Address:    192.168.4.5#53

Name:    music.baidu.com

Address: 5.6.7.8


步骤二:为192.168.4.0/24网段提供反向解析

1)修改主配置文件/etc/named.conf

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

.. ..

zone "4.168.192.in-addr.arpa" IN {                      //添加反向区域

        type master;

        file "192.168.4.arpa";

};

2)为新区域4.168.192.in-addr.arpa建立解析记录文件

[root@svr5 ~]# vim /var/named/192.168.4.arpa

$TTL   86400

@   IN   SOA   @    root.tarena.com.  (

    2015052201                                          ;更新序列号

    4H                                                  ;刷新时间

    15M                                                 ;重试间隔

    4H                                                  ;超时时间

    1D                                                  ;无效记录的生存时间

)

@       IN      NS      svr5.tarena.com.                    ;本区域DNS服务器的主机名

100     IN      PTR     www.tarena.com.                     ;反向区域解析记录

205     IN      PTR     pc205.tarena.com.

3)重新加载named服务

[root@svr5 ~]# service named restart 

停止 named:                                               [确定]

启动 named:                                               [确定]

4)验证新区域的域名查询

查询IP地址192.168.4.100时,解析结果应为www.tarena.com:

[root@pc205 ~]# nslookup 192.168.4.100

Server:        192.168.4.5

Address:    192.168.4.5#53

100.4.168.192.in-addr.arpa        name = www.tarena.com.

查询IP地址192.168.4.205时,解析结果应为pc205.tarena.com:

[root@pc205 ~]# nslookup 192.168.4.205

Server:        192.168.4.5

Address:    192.168.4.5#53

205.4.168.192.in-addr.arpa        name = pc205.tarena.com.


3 DNS轮询+泛域名解析

3.1 问题

沿用练习二,通过调整DNS服务端配置,实现以下目标:

为站点www.tarena.com 实现DNS轮询解析,目标IP地址包括 192.168.4.100、192.168.4.110、192.168.4.120

提供“station1~200.tarena.com <---> 192.168.4.1~200”的正反向解析

提供“任意名称.tarena.com --->119.75.217.56”解析

3.2 方案

通过DNS轮询的应用,可以针对大量客户机对同一个域名的解析轮流反馈不同的解析结果,从而间接实现了负载均衡的效果,减轻目标站点的压力。在配置DNS服务时,轮询的实现主要在于修改解析记录,即同一个站点对应到多个不同的IP地址:

目标域名     IN      A       第1个节点的IP地址

目标域名     IN      A       第2个节点的IP地址

目标域名     IN      A       第3个节点的IP地址

.. ..

对于泛域名来说,如果目标主机名未知,可以在解析记录最后添加一条 * 匹配:

*          IN      A       任意主机名导向到的指定IP地址

如果目标主机名已知而且有整数规律,可以采用$符号来代替数值部分,以简化解析记录的设置;对应的整数范围可以通过$GENERATE函数生成。其中,正向记录参考:

$GENERATE   1-200   station$     IN A   192.168.4.$

有规律的反向泛域名解析记录参考:

$GENERATE   1-200   $   IN PTR         station$.tarena.com. 


3.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:为站点www.tarena.com实现DNS轮询

1)调整tarena.com区域的配置

[root@svr5 ~]# vim /var/named/tarena.com.zone

.. ..

www     IN      A       192.168.4.100

www     IN      A       192.168.4.110

www     IN      A       192.168.4.120

[root@svr5 ~]# service named restart

停止 named:                                               [确定]

启动 named:                                               [确定]

2)使用ping命令验证DNS轮询解析

[root@svr5 ~]# ping www.tarena.com

PING www.tarena.com (192.168.4.100) 56(84) bytes of data.

.. ..

[root@svr5 ~]# ping www.tarena.com

PING www.tarena.com (192.168.4.110) 56(84) bytes of data.

.. ..

[root@svr5 ~]# ping www.tarena.com

PING www.tarena.com (192.168.4.120) 56(84) bytes of data.

.. ..


步骤二:配置泛域名解释

1)设置正向的泛域名解析记录

[root@svr5 ~]# vim  /var/named/tarena.com.zone

.. .. 

$GENERATE   1-200   station$     IN A   192.168.4.$

*       IN      A       119.75.217.56              //提供任意名称.tarena.com解析

2)设置反向的泛域名解析记录

[root@svr5 ~]# vim  /var/named/192.168.4.arpa

.. ..

$GENERATE   1-200   $   IN PTR         station$.tarena.com. 

3)重新加载named服务

[root@svr5 ~]# service named restart                  //重启named服务

停止 named:                                               [确定]

启动 named:                                               [确定]

4)测试泛域名解析结果

[root@svr5 ~]# nslookup station99.tarena.com          //查询正向泛域名99

Server:        192.168.4.5

Address:    192.168.4.5#53

Name:    station99.tarena.com

Address: 192.168.4.99

[root@svr5 ~]# nslookup tamzx.tarena.com              //查询任意名称泛域名

Server:        192.168.4.5

Address:    192.168.4.5#53

Name:    tamzx.tarena.com

Address: 119.75.217.56


4 构建主/从DNS服务器

4.1 问题

准备2台RHEL6虚拟机,配置实现DNS主/从结构,相关要求如下:

主DNS的域名为svr5.tarena.com,IP地址为192.168.4.5/24

从DNS的域名为pc205.tarena.com,IP地址为192.168.4.205

主、从均能够解析tts7.tarena.com --> 118.45.29.31

当主DNS的tts7.tarena.com记录的IP地址变更为4.4.4.4以后,从DNS能够自动同步此更改


4.2 方案

使用2台RHEL6虚拟机,其中一台作为主DNS服务器(192.168.4.5)、另外一台作为从DNS服务器(192.168.4.205);同时,这两台虚拟机中的任何一台都可以作为测试用的Linux客户机,如图-2所示。


图-2

主DNS的配置关键——修改named.conf配置文件,为从DNS设置授权:

options {

        .. ..

        allow-transfer {

                从DNS服务器的IP地址;

        }; 

};

从DNS的配置关键——无需手动建立解析记录,只需修改named.conf配置文件:

zone "tarena.com" IN {

        type slave;                                  //类型为slave

        file "slaves/tarena.com.zone";                //下载存放位置

        masters { 主DNS服务器的IP地址; }; 

}; 


4.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:主DNS授权从DNS服务器,允许其下载地址记录

1)修改named.conf配置文件,授权从DNS服务器,允许其下载地址记录

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

options  {

        directory  "/var/named";

        allow-transfer { 192.168.4.6;  };           //授权从DNS服务器

};

zone "tarena.com" IN {

        type master;

        file "tarena.com.zone";

};

.. ..

2)修改区域记录文件,为从DNS添加NS记录,并设置测试A记录

[root@svr5 ~]# vim /var/named/tarena.com.zone 

$TTL   86400

@   IN   SOA   @    root.tarena.com.  (

    2015052201                                          ;更新序列号

    4H                                                  ;刷新时间

    15M                                                 ;重试间隔

    4H                                                  ;超时时间

    1D                                                  ;无效记录的生存时间

)

@       IN      NS      svr5.tarena.com.                  //指定主DNS记录

@       IN      NS      pc205.tarena.com.                //指定从DNS记录

svr5    IN      A       192.168.4.5                  //主DNS的A记录

pc205   IN      A       192.168.4.205                    //从DNS的 A记录

tts7    IN      A       118.45.29.31                     //tts7.tarena.com解析记录

.. ..                                            //其他A记录

3)重新加载named服务

[root@svr5 ~]# service named restart  

停止 named:.                                              [确定]

启动 named:                                               [确定]

步骤二:建立从DNS服务器


1)使用yum安装DNS服务相关软件包

[root@pc205 ~]# yum -y install bind bind-chroot

.. ..

[root@pc205 ~]# rpm -q bind bind-chroot

bind-9.8.2-0.17.rc1.el6_4.6.x86_64

bind-chroot-9.8.2-0.17.rc1.el6_4.6.x86_64

2)建立/etc/named.conf配置文件

[root@svr5 ~]# mv  /etc/named.conf  /etc/named.conf.bak      //备份默认配置

[root@svr5 ~]# vim  /etc/named.conf              //建立新配置

options {

        directory "/var/named";

};

zone "tarena.com" IN {                            //同步区域

        type slave;                                  //类型为从区域

        file "slaves/tarena.com.zone";              //区域文件存储位置

        masters { 192.168.4.5; };                   //指定主DNS的IP地址

};

3)重新加载named服务

[root@svr5 ~]# service named restart  

停止 named:.                                              [确定]

启动 named:                                               [确定]

确认区域配置文件已经自动下载,即同步成功:

[root@pc205 ~]# ls /var/named/slaves/

tarena.com.zone


步骤三:客户机查询测试

1)向主DNS查询域名tts7.tarena.com,反馈结果应为118.45.29.31

[root@pc205 ~]# nslookup  tts7.tarena.com  192.168.4.5

Server:        192.168.4.5

Address:    192.168.4.5#53

Name:   tts7.tarena.com

Address:   118.45.29.31

2)向从DNS查询域名tts7.tarena.com,也能获得结果为118.45.29.31

[root@pc205 ~]# nslookup  tts7.tarena.com  192.168.4.205

Server:        192.168.4.205

Address:    192.168.4.205#53

Name:   tts7.tarena.com

Address:   118.45.29.31

3)测试解析记录的同步

在主DNS上修改A记录tts7.tarena.com,将IP地址改为4.4.4.4,同时将序列号+1更新,保存并启用新配置:

[root@svr5 ~]# vim /var/named/tarena.com.zone

$TTL   86400

@   IN   SOA   @    root.tarena.com.  (

    2015052202                                    //修改记录后,此序号应变更

    .. ..

)

.. ..

tts7    IN      A       4.4.4.4                     //修改tts7解析记录

[root@svr5 ~]# service named restart              //重启named服务

停止 named:                                               [确定]

启动 named:                                               [确定]

然后在客户端重复测试第1)和2)步骤,反馈的解析结果都应该是4.4.4.4:

[root@pc205 ~]# nslookup  tts7.tarena.com  192.168.4.5

Server:        192.168.4.5

Address:    192.168.4.5#53

Name:   tts7.tarena.com

Address:  4.4.4.4                              //向主DNS查询的结果

[root@pc205 ~]# nslookup  tts7.tarena.com  192.168.4.205

Server:        192.168.4.205

Address:    192.168.4.205#53

Name:   tts7.tarena.com                         //向从DNS查询的结果