域名系统(英文:Domain Name System,缩写:DNS)是因特网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网。DNS 使用TCPUDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

 

开始时,域名的字符仅限于ASCII字符的一个子集。2008年,ICANN通过一项决议,允许使用其它语言作为互联网顶级域名的字符。使用基于Punycode码的IDNA系统,可以将Unicode字符串映射为有效的DNS字符集。因此,诸如“x.台湾”这样的域名可以在地址栏直接输入,而不需要安装插件。但是,由于英语的广泛使用,使用其他语言字符作为域名会产生多种问题,例如难以输入,难以在国际推广等。

 

BINDBerkeley InternetName Daemon是现今互联网上最常使用的DNS服务器软件,使用BIND作为服务器软件的DNS服务器约占所有DNS服务器的九成。BIND现在由互联网系统协会(Internet Systems Consortium)负责开发与维护。

 

我们实验使用的DNS软件就是BIND

 

实验环境:

CentOS release 6.6(Final)  两台

IP地址:

172.16.31.3      DNS1        DNS服务器端

172.16.31.4      DNS2        测试机

我们要架设一个本地DNS服务器一般需要下面三个软件程序包:

bind-libs.x86_64      #提供库文件

bind-utils.x86_64     #提供工具包

bind.x86_64         #提供主程序包

 

我还没使用安全套件,所以没有使用bind-chroot程序包。

chroot 环境为了系统的安全性考虑,一般来说目前各主要 distributions 都已经自动的将你的 bind 相关程序给他 chroot 了。

 

一.安装bind程序包

使用yum源安装:

[root@dns1 named]# yum install -y bindbind-libs bind-utils

 

检查安装情况:

[root@dns1 named]# rpm -qa bind*
bind-libs-9.8.2-0.30.rc1.el6.x86_64
bind-utils-9.8.2-0.30.rc1.el6.x86_64
bind-9.8.2-0.30.rc1.el6.x86_64

 

二.配置Bind

Bind的配置文件存放在/etc/目录下:

/etc/named.conf                #主配置文件

/etc/named.rfc1912.zones       #正反向区域文件

 

我们首先配置主配置文件:/etc/ named.conf

CentOS6服务管理之DNS-本地DNS服务器的搭建_named.conf

[root@dns1 named]# cat /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     { any; };
       recursion yes;
 
       dnssec-enable no;
       dnssec-validation no;
       dnssec-lookaside no;
 
       /* Path to ISC DLV key */
       /*bindkeys-file "/etc/named.iscdlv.key";
 
       managed-keys-directory "/var/named/dynamic";
       */
};
 
logging {
       channel default_debug {
                file"data/named.run";
                severity dynamic;
       };
};
 
zone "." IN {
       type hint;
       file "named.ca";
};
 
include"/etc/named.rfc1912.zones";
include "/etc/named.root.key";

 

接下来我们修改区域配置文件:/etc/named.rfc1912.zones

区域规划:

         域名:oracle.com

         正向区域:oracle.com

         正向区域文件:oracle.com.zone

         反向区域:31.16.172.in-addr.arpa

编辑/etc/named.rfc1912.zones文件添加如下内容:

zone "oracle.com" IN {
       type master;
       file "oracle.com.zone";
};
 
zone "31.16.172.in-addr.arpa" IN{
       type master;
       file "172.16.31.zone";
};

 

接下来我们将配置区域解析库文件。

 

三.区域解析库文件配置

1.区域解析库文件的简要说明:

常见的正解文件 RR 相关信息
[domain]        IN           [[RR type]                 [RR data]]
主机名.         IN            A                    IPv4 的 IP 地址
主机名.         IN            AAAA                 IPv6 的 IP 地址
区域名.         IN            NS                   管理这个领域名的服务器主机名字.
区域名.         IN            SOA                  管理这个领域名的七个重要参数(如上说明)
区域名.         IN            MX     顺序数字      接收邮件的服务器主机名字
主机别名.       IN            CNAME                实际代表这个主机别名的主机名字.
单位:W=周、D=日、H=小时、M=分钟。
 
$TTL   86400             宏定义全局TTL时间
@      IN     SOA    ns.oracle.com.  root ( # ns.oracle.com. 是DNS服务器的名称
                         0               ; serial (d. adams) 仅作为序列号而已
                        1D               ;refresh          服务器的更新时间
                        15M              ; retry           重新更新时间间隔
                        1W               ; expiry          多久之后宣布失败
                        1H )             ;minimum          相当于缓存记忆时间
@      IN              NS                ns.oracle.com.
@      IN              MX      5         mail.oracle.com.(5为优先级别)
ns     IN              A                 172.16.31.3
www    IN              A                 172.16.31.3
www    IN              A                 172.16.31.3
mail   IN              A                 172.16.31.3


2.配置正向解析库文件:

因为上次配置过本地缓存服务器,所以需要删除一些文件:

[root@dns1 named]# rm 127.0.0.zone
rm: remove regular file `127.0.0.zone'? y
[root@dns1 named]# rm localhost.zone
rm: remove regular file `localhost.zone'? y

 

[root@dns1 named]# vim oracle.com.zone
$TTL 600
$ORIGIN oracle.com.
@      IN      SOA     ns.oracle.com.  root.oracle.com. (
                        2014121001      ;serial
                        1D              ;refresh
                        5M              ;retry
                        1W              ;expiry
                        1H)             ;minimum
@      IN      NS      ns.oracle.com.
       IN      MX  5  mail.oracle.com.
ns     IN      A       172.16.31.3
www    IN      A       172.16.31.3
www    IN      A       172.16.31.4
mail   IN      A       172.16.31.3
pop3   IN      A       172.16.31.3
iamp4  IN      A       172.16.31.3

 

3.配置反向解析库文件:

[root@dns1 named]# vim oracle.com.zone
$TTL 600
$ORIGIN 31.16.172.in-addr.arpa.
@      IN      SOA     ns.oracle.com.  root.oracle.com. (
                        2014121001      ;serial
                        1D              ;refresh
                        5M              ;retry
                        1W              ;expiry
                        1H)             ;minimum
@      IN      NS      ns.oracle.com.
       IN      MX   5 mail.oracle.com.
3      IN      PTR     ns.oracle.com.
3      IN      PTR     www.oracle.com.
4      IN      PTR     www.oracle.com.
3      IN      PTR     mail.oracle.com.
3      IN      PTR     pop3.oracle.com.
3      IN      PTR     iamp4.oracle.com.

 

 

四.更改目录权限及属组

更改文件属组:

[root@dns1 named]# chown :namedoracle.com.zone
[root@dns1 named]# chown :named172.16.31.zone

更改文件权限:

[root@dns1 named]# chmod 640oracle.com.zone
[root@dns1 named]# chmod 640 172.16.31.zone

检查防火墙状态:

[root@dns1 named]# service iptables status
iptables: Firewall is not running.

检查SELinux状态

[root@dns1 named]# getenforce
Disabled

检测区域解析库配置文件语法:

[root@dns1 named]# named-checkzone"oracle.com" oracle.com.zone
zone oracle.com/IN: loaded serial2014121001
OK

 

五.启动服务

[root@dns1 named]# service namedrestart      
Stopping named:                                           [  OK  ]
Starting named:                                           [  OK  ]

 

我们可以在本机加入DNS,或者客户端设置DNS指向DNS服务器。

[root@dns1 named]# cat/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="static"
NM_CONTROLLED="yes"
HWADDR=08:00:27:98:d8:88
ONBOOT="yes"
TYPE="Ethernet"
IPADDR=172.16.31.3
NETMASK=255.255.0.0
GATEWAY=172.16.0.1
DNS=172.16.31.3

 

 

六.测试DNS服务器的域信息是否正常:

dig命令:

测试正向区域解析情况:

[root@dns1 named]# dig -t SOA oracle.com@172.16.31.3
 
; <<>> DiG9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -t SOA oracle.com@172.16.31.3
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY,status: NOERROR, id: 28220
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1,AUTHORITY: 1, ADDITIONAL: 1
 
;; QUESTION SECTION:
;oracle.com.                    IN      SOA
 
;; ANSWER SECTION:
oracle.com.             600     IN     SOA     ns.oracle.com.root.oracle.com. 2014121001 86400 300 604800 3600
 
;; AUTHORITY SECTION:
oracle.com.             600     IN     NS      ns.oracle.com.
 
;; ADDITIONAL SECTION:
ns.oracle.com.          600     IN     A       172.16.31.3
 
;; Query time: 0 msec
;; SERVER: 172.16.31.3#53(172.16.31.3)
;; WHEN: Wed Dec 10 07:31:09 2014
;; MSG SIZE rcvd: 102

 

测试反向区域解析情况:

[root@dns1 named]# dig -x 172.16.31.3@172.16.31.3
 
; <<>> DiG9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -x 172.16.31.3 @172.16.31.3
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY,status: NOERROR, id: 1421
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 5,AUTHORITY: 1, ADDITIONAL: 1
 
;; QUESTION SECTION:
;3.31.16.172.in-addr.arpa.      IN     PTR
 
;; ANSWER SECTION:
3.31.16.172.in-addr.arpa. 600   IN     PTR     mail.oracle.com.
3.31.16.172.in-addr.arpa. 600   IN     PTR     pop3.oracle.com.
3.31.16.172.in-addr.arpa. 600   IN     PTR     iamp4.oracle.com.
3.31.16.172.in-addr.arpa. 600   IN     PTR     ns.oracle.com.
3.31.16.172.in-addr.arpa. 600   IN     PTR     www.oracle.com.
 
;; AUTHORITY SECTION:
31.16.172.in-addr.arpa. 600     IN     NS      ns.oracle.com.
 
;; ADDITIONAL SECTION:
ns.oracle.com.          600     IN     A       172.16.31.3
 
;; Query time: 1 msec
;; SERVER: 172.16.31.3#53(172.16.31.3)
;; WHEN: Wed Dec 10 07:27:01 2014
;; MSG SIZE rcvd: 175

 

host命令:

检测正向解析库;

[root@dns1 named]# host -t A  www.oracle.com  172.16.31.3
Using domain server:
Name: 172.16.31.3
Address: 172.16.31.3#53
Aliases:
 
www.oracle.com has address 172.16.31.4
www.oracle.com has address 172.16.31.3

 

检测反向解析库:

[root@dns1 named]# host -t ptr 172.16.31.3172.16.31.3
Using domain server:
Name: 172.16.31.3
Address: 172.16.31.3#53
Aliases:
 
3.31.16.172.in-addr.arpa domain namepointer pop3.oracle.com.
3.31.16.172.in-addr.arpa domain namepointer iamp4.oracle.com.
3.31.16.172.in-addr.arpa domain namepointer ns.oracle.com.
3.31.16.172.in-addr.arpa domain namepointer www.oracle.com.
3.31.16.172.in-addr.arpa domain namepointer mail.oracle.com.

 

其实还有个nslookup命令测试。偷懒就不介绍了,下次再说!

 

至此,本地DNS服务器搭建完毕,正反向解析正常,接下来会在本地DNS服务器的基础上搭建主从DNS服务器。