DNS是域名系统(Domain Name System)的缩写,是因特网的一项核心服务,它能够提供域名与IP地址之间对应关系的转换服务。这样我们就可以更方便地去访问互联网了,不用去记住那一串IP数字。本文档主要是说明如何把一台Centos主机配置成一个DNS服务器,以便能提供域名解析服务。

一. DNS服务器端配置

操作系统:Centos 6.5
IP地址:172.20.2.104
测试域名:zc.com
作用:主要提供解析zc.com域名的服务

1. 安装DNS服务器软件(安装bind)

(1)先运行命令rpm -qa | grep bind 检查DNS服务器软件的安装情况

  [root@zc ~]# rpm -qa | grep bind

(2)运行命令yum install –y bind bind-chroot 安装bind 程序

(3)此时再运行命令rpm –qa | grep bind 检查DNS服务器软件的安装情况

[root@zc ~]# rpm -qa | grep bind

也可以运行命令rpm -qai bind | grep "Install Date"查看软件包安装日期

2. 修改/etc/named.conf配置文件(有两处需要修改)

listen-on port 53 { any; };  //开启监听端口53,接受任意IP的连接
allow-query     { localhost; }; //允许任意IP查询

3. 修改/etc/named.rfc1912.zones文件,添加zc.com的正向和反向区域

//zc.com的正向区域
zone "zc.com" IN {
        type master;
        file "zc.com.zone";
        allow-update { none; };
};
//zc.com的反向区域
zone "2.20.172.in-addr.arpa" IN {
    type master;
    file "172.20.2.arpa";
    allow-update {none;};
};

4. 创建正向和反向区域资源文件

在配置named.conf时,指明的资源文件目录是/var/named,故先进入该目录
配置解析数据信息,我们可以直接复制正向解析模板文件:“/var/named/named.localhost”,填写信息后即可直接使用。
(1)cd /var/named切换工作目录到bind(named)数据目: 
(2)查看区域数据文件的权限:

[root@zc named]# ls -al named.localhost
-rw-r-----. 1 root named 152 6月  21 2007 named.localhost

(3)执行cp命令时加入-a,,代表连通复制原来文件的属性、所有者、组等信息:

cp -a named.localhost zc.com.zone

(4)编辑zc.com.zone域名的区域数据文件:

修改后的配置如下:

[root@zc named]# cat  zc.com.zone
$TTL 1D //生存时间为1天
@       IN SOA   zc.com.  rname.invalid. (
                                        0       ; serial //更新序列号
                                        1D      ; refresh //更新时间
                                        1H      ; retry //重试时间
                                        1W      ; expire //失效时间
                                        3H )    ; minimum //无效解析结论的缓存时间
     NS  @
     A   127.0.0.1
    AAAA    ::1
      IN MX 10   mail.zc.com
mail   IN A       172.20.2.100
www  IN A       172.20.2.150
bbs   IN A       172.20.2.200//留意zc.com后面的那个不起眼的点(.)
[root@zc named]# cat  172.20.2.arpa
 
$TTL 1D
@       IN SOA   zc.com.  rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
     NS  @
    AAAA    ::1100 PTR mail.zc.com.150 PTR www.zc.com.200 PTR bbs.zc.com.
//留意zc.com后面的那个不起眼的点(.)

5. 启动named服务

[root@zc ~]# service named start

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

启动 named:[确定]

至此,DNS服务器端的配置已完成,下面我们稍微配置一下客户端测试我们的DNS服务器是否正常。

二. DNS客户端配置

操作系统:windows和Linux(172.20.2.50)都可以,
IP地址:能够ping 通DNS服务器的IP(172.20.2.104)都可以
作用:测试DNS服务器是否正常

1. 安装bind-utils包,以便能使用nslookup、dig和host工具

yum install bind-utils

2. 修改DNS配置使用我们的DNS服务器

[root@mail ~]# cat  /etc/resolv.conf

nameserver 172.20.2.104

resolv.conf文件中可能会有多个nameserver,必须把我们的DNS服务器放在所有nameserver的最前面,这样当需要解析域名时,第一个使用的就是我们配置的DNS服务器,其他的都是候选项。
如果是windosw客户端,需要在本地连接属性里面修改DNS为172.20.2.104

3. 正向解析测试,使用nslookup命令

如果服务器本身可以解析,其他客户端无法解析,需要关闭DNS服务器的防火墙

[root@zc ~]# service iptables stop

iptables:将链设置为政策 ACCEPT:filter [确定]

iptables:清除防火墙规则:[确定]

iptables:正在卸载模块:[确定]

(1)Linux系统客户端172.20.2.50

[root@mail ~]# nslookup
> mail.zc.comServer:         172.20.2.104Address:        172.20.2.104#53
Name:   mail.zc.comAddress: 172.20.2.100
> www.zc.comServer:         172.20.2.104Address:        172.20.2.104#53
Name:   www.zc.comAddress: 172.20.2.150
> bbs.zc.comServer:         172.20.2.104Address:        172.20.2.104#53
Name:   bbs.zc.comAddress: 172.20.2.200
>

(2)Windows客户端172.20.2.101

C:\Users\Administrator>nslookup

默认服务器:  UnKnownAddress:  172.20.2.104

> mail.zc.com

服务器:  UnKnownAddress:  172.20.2.104

名称:    mail.zc.comAddress:  172.20.2.100

> www.zc.com

服务器:  UnKnownAddress:  172.20.2.104

名称:    www.zc.comAddress:  172.20.2.150

> bbs.zc.com

服务器:  UnKnownAddress:  172.20.2.104

名称:    bbs.zc.comAddress:  172.20.2.200

从结果可以看到,我们配置的三个域名都能成功解析,并且DNS服务器就是我们配置的那个服务器。

4. 反向解析,使用nslookup命令

(1)Linux系统172.20.2.50

[root@mail ~]# nslookup
> 172.20.2.100Server:         172.20.2.104Address:        172.20.2.104#53
100.15.1.10.in-addr.arpa        name = mail.zc.com.
> 172.20.2.150Server:         172.20.2.104Address:        172.20.2.104#53
150.15.1.10.in-addr.arpa        name = www.zc.com.
> 172.20.2.200Server:         172.20.2.104Address:        172.20.2.104#53
200.15.1.10.in-addr.arpa        name = bbs.zc.com.
>

(2) windows系统172.20.2.101

C:\Users\Administrator>nslookup

默认服务器:  UnKnownAddress:  172.20.2.104

> 172.20.2.100

服务器:  UnKnownAddress:  172.20.2.104

名称:    mail.zc.comAddress:  172.20.2.100

> 172.20.2.150

服务器:  UnKnownAddress:  172.20.2.104

名称:    www.zc.comAddress:  172.20.2.150

> 172.20.2.200

服务器:  UnKnownAddress:  172.20.2.104

名称:    bbs.zc.comAddress:  172.20.2.200

从结果来看,可以正确解析我们的IP地址,并且DNS服务器就是我们配置的那个服务器。

5. 查看zc.com这个域名是哪个DNS服务器管理的,使用dig命令

root@mail ~]# dig -t ns zc.com

6. 使用dig命令进行正向解析

(1) dig mail.zc.com
[root@mail ~]# dig mail.zc.com
(2)dig www.zc.com
[root@mail ~]# dig www.zc.com
(3)dig bbs.zc.com
[root@mail ~]# dig bbs.zc.com