-->正向解析与反向解析:

1)正向解析:

正向解析是指域名到IP地址的解析过程。

2)反向解析:

反向解析是从IP地址到域名的解析过程;反向解析的作用为服务器的身份验证。

 

 

-->主从DNS服务器:

主DNS服务器(Master DNS): 数据库更新由管理员手动完成;

辅助DNS服务器 (SlaveDNS):数据库更新从主服务器或其他辅助DNS服务器那里完成;

 

-->DNS 子域:

DNS服务器不仅可以为属于本域的客户端用户提供解析服务,也可以授权给某个域,让其也可以提供相应的DNS解析服务,称为子域授权.

 

-->DNS 子域委派:

具体的作用是为了方便管理 提高DNS的解析性能,实现通信负载平衡.

 

-->DNS 转发器的作用:

根服务只有13个,如果DNS的查询全部都发送到根服务器效率比较低下,启动DNS转发器后,DNS进行查询的时候,如果遇到本机不能解析的查询,就向DNS转发器请求查询,DNS转发器指定的地址一般都是比较大的DNS服务器,通常接受大量的DNS查询操作,比如电信的核心DNS.

 

-->资源记录:

某些资源记录不仅包括DNS域中服务器的信息,还可以用于定义域,即指定每台服务器授权了哪些域,这些资源记录就是SOA和NS资源记录。

1)SOA资源记录: 每个区在区的开始处都包含了一个起始授权记录(Start of Authority Record),简称SOA记录。SOA定义了域的全局参数,进行整个域的管理设置。一个区域文件只允许存在唯一的SOA记录。

2)NS资源记录: 名称服务器(NS)资源记录表示该区的授权服务器,它们表示SOA资源记录中指定的该区的主和辅助服务器,也表示了任何授权区的服务器。每个区在区根处至少包含一个NS记录。

3)A资源记录: 地址(A)资源记录把FQDN映射到IP地址,因而解析器能查询FQDN对应的IP地址。

4)PTR资源记录: 相对于A资源记录,指针(PTR)记录把IP地址映射到FQDN。

5)CNAME资源记录: 规范名字(CNAME)资源记录创建特定FQDN的别名。用户可以使用CNAME记录来隐藏用户网络的实现细节,使连接的客户机无法知道。

6)MX资源记录: 邮件交换(MX)资源记录为DNS域名指定邮件交换服务器。邮件交换服务器是为DNS域名处理或转发邮件的主机。处理邮件指把邮件投递到目的地或转交另一不同类型的邮件传送者。转发邮件指把邮件发送到最终目的服务器,用简单邮件传输协议SMTP把邮件发送给离最终目的地最近的邮件交换服务器,或使邮件经过一定时间的排队。

 

-->DNS查询:分为递归查询和迭代查询两种.

(1) 递归查询: 即客户端向本地DNS服务器请求查询域名,本地DNS服务器收到查询任务后如自身无法回答则向其他服务器查询,直到查到结果后返回结果给客户端。期间DNS服务器可能要查询很多其他DNS服务器。 (2)迭代查询:即客户端向本地服务器请求查询域名,本地DNS服务器无法回答,则给客户端返回另一个能查询域名的服务器地址,客户端再向另一服务器查询,期间可能客户端需查询多个DNS服务器,最终查到结果。

 

 


需求介绍:

一、DNS的常用命令

二、如何使用 yum安装 并配置使用?

1.手动添加配置文件;

2.利用原有的配置文件文件进行修改;

3.以及反向解析的实现;

 

三、如何实现 BIND主从复制?

1.配置正向主从服务的实现;

2.配置反向主从服务的实现;

3.区域传送的安全控制;

四、如何实现 子域授权、请求转发及ACL?

五、如何在 编译环境安装bind ,配置并使用?

 

 


一、DNS的常用命令:

1.测试解析命令.

1). dig命令:

 

# dig [-t type] [-x addr] [name] [@server]

+[no]trace-->(跟踪解析过程)

+[no]recurse-->(是否使用递归的方式)

+[no]tcp -->(是否使用tcp查询,而不使用udp)

+[no]question-->(是否隐藏问题)

+[no]answer-->(是否隐藏答案)

+[no]authority-->(是否隐藏权威段)

+[no]additional-->(是否隐藏附加段)

2). host命令:

# host [-t type] {name} [server]

例子:

[root@localhost ~]# host -t MX xiaoma.com
   xiaoma.com mail is handled by 10 mail.xiaoma.com.
   [root@localhost ~]#

 

3). nslookup命令(交互式的命令):

nslookup>

server DNS_SERVER_IP

set q=TYPE

{name}

例子:

[root@localhost ~]# nslookup
    > set q=A
    > www.xiaoma.com
    Server:172.16.17.202
    Address:172.16.17.202#53
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
    Name:www.xiaoma.com
    Address: 172.16.17.203
    >

 

2.启动/重加载命令:

1).启动命令:

# named -u named

# servcice named start(这个可能会依赖rndc.key的)

2).重载命令:

# service named reload

# killall -1 named

# killall named(关闭)

3.测试语法错误:

# service named configtest

# named-checkconf

# named-checkzone "xiaoma.com" /var/named/xiaoma.com.zone

 


二、bind的基本使用:

 

1、正向解析配置:

第一种:手动创建配置文件及区域文件:

 

 

前提:

挂载光盘:
[root@xiaoma ~]# mkdir /media/cdrom
[root@xiaoma ~]# mount /dev/cdrom /media/cdrom/
mount: block device /dev/sr0 iswrite-protected, mounting read-only
配置本地yum源:
[root@xiaoma ~]# cd /etc/yum.repos.d/
[root@xiaoma yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
[root@xiaoma yum.repos.d]# vim media.repo
[media]
name=media
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0

 

1).将准备好的bind包安装:

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

2).注意: 这里没有使用源配置文件,而是手动写配置文件:

[root@localhost etc]# mv /tmp/named.conf /etc/named.conf.origin

3).新建编辑配置文件/etc/named.conf:

 

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS

 

4).配置区域文件(这里是系统自带的哦):

⑴编辑/var/named/named.loopback文件(如果是新建的文件要修改其相关属性):

 

[root@localhost ~]# vim /var/named/named.loopback
$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
        AAAA    ::1
        PTR     localhost.

⑵编辑/var/named/named.localhost文件(如果是新建的文件要修改其相关属性):

[root@localhost ~]# vim /var/named/named.localhost
$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
        AAAA    ::1

⑶编辑/var/named/xiaoma.com.zone文件(手动创建):

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_02

 

5).修改named.conf属性:

 

 

[root@localhost named]# chown root:named /var/named/xiaoma.com.zone
[root@localhost named]# chmod 640 /var/named/xiaoma.com.zone
[root@localhost etc]# chown root:named /etc/named.conf
[root@localhost etc]# chmod --reference=/etc/named.conf.origin /etc/named.conf(1)-->注意:这个(1)和(2)是一样的.
[root@localhost etc]# chmod 640 /etc/named.conf(2)

6).启动测试语法/手动测试语法的使用:

第一:启动时测试:
[root@localhost etc]# service named configtest
zone localhost/IN: loaded serial 0
zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
第二:手动测试:
[root@localhost etc]# named-checkconf
[root@localhost etc]#
区域文件是系统自带的,我这里就没有必要检查语法了吆.
root@localhost named]# named-checkzone "xiaoma.com" /var/named/xiaoma.com.zone
zone xiaoma.com/IN: loaded serial 2014031301
OK
[root@localhost named]#

7).启动named服务:

 

 

[root@localhost etc]# service named start-->启动时需要产生随机数.
Generating /etc/rndc.key:
[root@localhost etc]# --> 如果这里启动不了就使用下面的这个命令:以root的身份启动,启动后以named用户执行.
[root@localhost etc]# named -u named

 

 

8).使用dig命令测试(这里介绍了下面绝不会介绍):

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_03

 

 

2.正向解析配置:

第二种:直接修改配置文件及区域文件:

 

前提:

 

挂载光盘:
[root@xiaoma ~]# mkdir /media/cdrom
[root@xiaoma ~]# mount /dev/cdrom /media/cdrom/
mount: block device /dev/sr0 iswrite-protected, mounting read-only
配置本地yum源:
[root@xiaoma ~]# cd /etc/yum.repos.d/
[root@xiaoma yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
[root@xiaoma yum.repos.d]# vim media.repo
[media]
name=media
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0

1).将准备好的bind包安装:

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

2).修改配置文件:named.conf:

注意:
这里只是把注释的内容贴出来了:
//      listen-on port 53 { 127.0.0.1; };
//      listen-on-v6 port 53 { ::1; };
//      allow-query     { localhost; };
//      dnssec-enable yes;
//      dnssec-validation yes;
//      dnssec-lookaside auto;
//      bindkeys-file "/etc/named.iscdlv.key";
//      managed-keys-directory "/var/named/dynamic";
//include "/etc/named.root.key";

3).修改区域文件/etc/named.rfc1912.zones:

在文章尾部添加:
[root@localhost named]# vim /etc/named.rfc1912.zones
zone "xiaoma.com" {
        type master;
        file "xiaoma.com.zone";
};

4).修改其属性:

[root@localhost named]# chmod 640 /var/named/xiaoma.com.zone
[root@localhost named]# chown root:named /var/named/xiaoma.com.zone
[root@localhost named]# named-checkconf
[root@localhost named]# named-checkzone "xiaoma.com" /var/named/xiaoma.com.zone

5).启动服务/重新加载服务:

[root@localhost named]# named -u named
[root@localhost named]# service named reload
[root@localhost named]# killall -1 named

6).测试解析:

[root@localhost ~]# dig -t MX xiaoma.com
[root@localhost ~]# dig -t CNAME pop.xiaoma.com
[root@localhost ~]# dig -t MX xiaoma.com
[root@localhost ~]# dig -t CNAME pop.xiaoma.com
[root@localhost ~]# dig -t CNAME ftp.xiaoma.com
[root@localhost ~]# dig -t A www.xiaoma.com
[root@localhost ~]# dig -t NS xiaoma.com
[root@localhost ~]# dig -t NS xiaoma.com @172.16.17.202
[root@localhost ~]# dig -t A mail.xiaoma.com

--->我们以它来测试查询 mail 的 A 记录:

 

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_04

上下图片对比:

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_05

 

6).使用 +trace 跟踪解析过程(要连上网络的吆):

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_06

 

 

接上面的环境基础(2.正向解析配置:):

 

3.配置反向解析:

1).定义区域文件/etc/named.rfc1912.zones:

[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "17.16.172.in-addr.arpa"{
        type master;
        file "172.16.17.zone";
};

2).创建区域文件172.16.17.zone:

复制文件保持属组及权限:
[root@localhost named]# cp -p xiaoma.com.zone 172.16.17.zone

3).编辑区域文件172.16.17.zone:

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_07

4).启动测试语法/重新加载:

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_08

 

5).测试解析:

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_09

 

接上,其它解析:

[root@localhost named]# dig -x 172.16.17.204
[root@localhost named]# dig -x 172.16.17.203

6).host命令测试解析:

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_10

 

 

 


接上 2 和 3 的配置的基础之上:

 

三、区域传送的 主从复制:

 

 

注意:

这里的主机名字我改了,为了方便认出 主和从 的;

主DNS服务器: host1

从DNS服务器: host2

----不在同一网段也可以同步----

 

前提:

 

挂载光盘:
[root@host2 ~]# mkdir /media/cdrom
[root@host2 ~]# mount /dev/cdrom /media/cdrom/
mount: block device /dev/sr0 iswrite-protected, mounting read-only
配置本地yum源:
[root@host2 ~]# cd /etc/yum.repos.d/
[root@host2 yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
[root@host2 yum.repos.d]# vim media1.repo
[media1]
name=media1
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0

-->将准备好的bind包安装:

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

 

 

1.配置正向主从服务的实现:

 

 

1).主服务器配置 /var/named/xiaoma.com.zone:

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_11

 

2).主服务器配置 重新加载区域文件:

[root@host1 ~]# service named reload
Reloading named:                                          [  OK  ]

3).测试主从服务器是否能通信:

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_12

2).从服务器配置 /etc/named.conf:

注意:
这里只是把注释的内容贴出来了:
//      listen-on port 53 { 127.0.0.1; };
//      listen-on-v6 port 53 { ::1; };
//      allow-query     { localhost; };
//      dnssec-enable yes;
//      dnssec-validation yes;
//      dnssec-lookaside auto;
//      bindkeys-file "/etc/named.iscdlv.key";
//      managed-keys-directory "/var/named/dynamic";
//include "/etc/named.root.key";

3).从服务器配置 vim /etc/named.rfc1912.zones:

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_13

 

4).从服务器配置 启动并查看端口53是否启动:

[root@host2 ~]# named -u named
[root@host2 ~]# ss tunl

5).从服务器配置查看/var/named/slaves/xiaoma.com.zone是否以同步:

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_14

 

6).从服务器配置 测试解析:

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_15

 

7).主服务器配置 重新加载并修改序列号:

I.添加一条记录并修改序列号:

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_16

 

II.重新加载:

[root@host1 ~]# service named reload
Reloading named:                                          [  OK  ]

8).查看日志:

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_17

 

9).从服务器 查看是否同步:

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_18

 

10).其它解析:

[root@host2 ~]# dig -t NS xiaoma.com @172.16.17.100
[root@host2 ~]# dig -t MX xiaoma.com @172.16.17.100
[root@host2 ~]# dig -t CNAME pop.xiaoma.com @172.16.17.100
[root@host2 ~]# dig -t CNAME ftp.xiaoma.com @172.16.17.100

 

 

 

接上(1.配置正向主从服务的实现)

 

2.配置反向主从服务的实现:

 

1).从服务器配置 vim /etc/named.rfc1912.zones :

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_19

 

2).从服务器 测试语法并重新加载:

[root@host2 ~]# named-checkconf
[root@host2 ~]# service named reload
Reloading named:                                           [  OK  ]

3).从服务器 查看日志:

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_20

 

4).从服务器 查看同步文件:

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_21

 

5).将主服务器的记录添加至反向记录:

我们在主服务器(/var/named/172.16.17.zone)里面加一条NS记录,告诉主服务器有一个从服务器.(ns2、img以及从服务器的记录).

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_22

 

6).启动服务并重新加载:

wKioL1Mho5mxmjRxAAIfFBAZ喎CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_24QTnhNMzU3LmpwZw==" src="http://www.it165.net/uploadfile/files/2014/0314/2014031415054190.jpg" title="15.png" />

 

7).主服务器 查看日志:

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_25

 

8).从服务器 查看同步:

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_26

 

 

接上面(2.配置反向主从服务的实现)

 

3.区域传送的安全控制:

注意:我们都知道默认在未设置安全控制的情况下,DNS服务器的区域传送是传送所有服务器的,那么我们应该如何防范别人同步你的服务器的数据呢?

 

1).主服务器配置 vim /etc/named.rfc1912.zones :

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_27

 

2).主服务器配置 测试语法/重加载:

[root@host1 ~]# named-checkconf
[root@host1 ~]# service named reload
Reloading named:                                           [  OK  ]
[root@host1 ~]#

3).主服务器 测试区域传送:

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_28

 

4).从服务器 测试区域传送:

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_29

 

6).定从服务器的安全控制 vim /etc/named.rfc1912.zones:

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_30

 

7).从服务器 测试语法/重加载

[root@host2 ~]# named-checkconf
[root@host2 ~]# service named reload
Reloading named:

8).从服务器 测试:

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_31

 

 

 


接上面的环境配置.

 

四、如何实现 子域授权、请求转发及ACL?

 

1.远程管理BIND的工具:

简单介绍:

rndc: Remote Name Domain Controller

rndc: 密钥

rndc: 持有一半密钥,保存于rndc的配置文件中;

BIND:持有一半密钥,保存于主配置文件中;

常用选项:

reload : 重读

reload zone : 重加区域文件

 

reconfig: 重读配置文件并加载新增的区域;

 

querylog: 关闭或开启查询日志;

 

flush: 清空服务器的缓存;

flushname name: 清空指定名称相关的缓存;

 

trace: 打开debug,debug有级别的概念,每执行一次提升一次级别;

trace LEVEL: 指定deb②ug的级别;

 

如果rndc无法正常工作,可尝试使用rndc-confgen 生成/etc/rndc.conf配置文件,并将配置文件中的后半部分复制到BIND的主配置文件中并按指示启用即可.

如: # rndc-confgen -r /dev/urandom > /etc/rndc.conf

# service named reload

 

1).首先主服务器上生成rndc的密钥:

I.生成密钥:

[root@host1 ~]# rndc-confgen -r /dev/urandom > /etc/rndc.conf

II.密钥介绍:

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_32

 

2).在主服务器 将/etc/rndc.conf属于BIND的复制到/etc/named.conf

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_33

3).在主服务器上 查看状态:

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_34

4).再主服务器上查看端口:

[root@host1 ~]# ss -tunl

5).从服务器上升成密钥:

与主服务器的步骤一样:1)-2)-3)-4)-5) 这里就不贴图了哈.

6). 例子:

①第一次开启,执行第二次关闭:rndc querylog

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_35

接上:

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_36

②停止rndc:

[root@host2 ~]# rndc stop
[root@host2 ~]# ps aux | grep named
root     26370  1.0  0.1 103252   828 pts/0    S+   20:45   0:00 grep named
[root@host2 ~]# named -u named

③trace的使用:

[root@host2 ~]# rndc trace
[root@host2 ~]# rndc trace  执行三次
[root@host2 ~]# rndc trace
[root@host2 ~]# rndc status
version: 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6
CPUs found: 2
worker threads: 2
number of zones: 21
debug level: 3  符合上面的三次.
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running
[root@host2 ~]# rndc trace 0  (指定级别)
[root@host2 ~]# rndc status
version: 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6
CPUs found: 2
worker threads: 2
number of zones: 21
debug level: 0  0级别
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running
[root@host2 ~]#

 

 

 

2.BIND子域授权的实现(主要将正向的,反向的很麻烦):

 

子域名和委派的区别?

子域文件在父域文件中

委派有独立的区域文件

 

未完待续...

 

 


五、编译安装bind及应用:

 

>>>编译安装named(bind-9.9.5):

前提:配置好开发环境,安装包组(yum安装).

挂载光盘:
[root@xiaoma ~]# mkdir /media/cdrom
[root@xiaoma ~]# mount /dev/cdrom /media/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only
配置本地yum源:
[root@xiaoma ~]# cd /etc/yum.repos.d/
[root@xiaoma yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
[root@xiaoma yum.repos.d]# vim media.repo
[media]
name=media
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0
安装开发包组:
[root@xiaoma ~]# yum grouplist | grep Development
   Desktop Platform Development
   Development tools
   Server Platform Development
[root@xiaoma ~]# yum -y groupinstall "Server Platform Development" "Desktop Platform Development" "Development tools"

1、下载源代码,编译安装:

1).将准备好的源码包解压并编译安装:

[root@xiaoma tmp]# tar xf bind-9.9.5.tar.gz
[root@xiaoma tmp]# cd bind-9.9.5
[root@xiaoma bind-9.9.5]# ./configure --prefix=/usr/local/bind9 --sysconfdir=/etc/named/ --enable-threads --enable-epoll --disable-chroot
root@xiaoma bind-9.9.5]# make
root@xiaoma bind-9.9.5]# make install

2.创建主配置文件/etc/named/named.conf:

CentOS 6.5下配置DNS and BIND的所有实现详解_linux DNS_37

 

3.创建区域数据文件:

① 创建/var/named/named.ca :

[root@xiaoma ~]# mkdir /var/named
[root@xiaoma ~]# cd /var/named/
[root@xiaoma named]# dig -t NS . @172.16.0.1 > named.ca

② 创建/var/named/named.loopback :

[root@xiaoma named]# vim named.loopback
$TTL 86400
@       IN      SOA     localhost.      admin.localhost. (
                        2014031101
                        2H
                        10M
                        7D
                        1D )
                IN      NS      localhost.
1               IN      PTR     localhost.

③ 创建/var/named/named.localhost :

[root@xiaoma named]# vim named.localhost
$TTL 86400
@       IN      SOA     localhost.      admin.localhost. (
                        2014031101
                        2H
                        10M
                        7D
                        1D )
                IN      NS      localhost.
localhost.      IN      A       127.0.0.1

④然后创建/var/named/xiaoma.com.zone文件:

[root@xiaoma named]# vim /var/named/xiaoma.com.zone
$TTL 86400
@       IN      SOA     dns.xiaoma.com.      dnsadmin.xiaoma.com. (
2014031101
2H
10M
3D
1D)
IN      NS      dns
IN      MX 10mail
dns             IN      A       172.16.17.202
mail            IN      A       172.16.17.202
www             IN      A       172.16.17.1

 

4.创建系统用户,且测试启动:

① 创建用户:

[root@xiaoma ~]# groupadd -g 53 -r named
[root@xiaoma ~]# useradd -g named -r named
[root@xiaoma ~]# id named
uid=496(named) gid=53(named) groups=53(named)
[root@xiaoma ~]# ls /home/

② 赋予相应属性:

[root@xiaoma named]# chmod 640 /etc/named/named.conf /var/named/*
[root@xiaoma named]# chown root:named /etc/named/* /var/named/*

③ 设置PATH变量:

[root@xiaoma named]# echo 'export PATH=/usr/local/bind9/bin:/usr/local/bind9/sbin:$PATH' > /etc/profile.d/named.sh
[root@xiaoma named]# cat /etc/profile.d/named.sh
[root@xiaoma named]# source /etc/profile.d/named.sh

④ 检查语法:

 

[root@xiaoma ~]# named-checkconf
[root@xiaoma ~]# named-checkzone "0.0.127.in-addr.arpa" /var/named/named.loopback
zone 0.0.127.in-addr.arpa/IN: loaded serial 2014031101
OK
[root@xiaoma ~]# named-checkzone "localhost" /var/named/named.localhost
zone localhost/IN: loaded serial 2014031101
OK
[root@xiaoma named]# named-checkzone "xiaoma.com" xiaoma.com.zone
zone xiaoma.com/IN: loaded serial 2014031101
OK
[root@xiaoma ~]# killall -1 named

⑤ 测试启动并查看端口:

[root@xiaoma named]# named -u named
[root@xiaoma named]# ss -tunl

⑥测试解析A记录:

[root@localhost named]# dig -t A www.xiaoma.com @172.16.17.202
; <<>> DiG 9.9.5 <<>> -t A www.xiaoma.com @172.16.17.202
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49273
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.xiaoma.com.            IN  A
;; ANSWER SECTION:
www.xiaoma.com.     86400   IN  A   172.16.17.1
;; AUTHORITY SECTION:
xiaoma.com.     86400   IN  NS  dns.xiaoma.com.
;; ADDITIONAL SECTION:
dns.xiaoma.com.     86400   IN  A   172.16.17.202
;; Query time: 0 msec
;; SERVER: 172.16.17.202#53(172.16.17.202)
;; WHEN: Fri Mar 07 01:37:43 CST 2014
;; MSG SIZE  rcvd: 93
[root@localhost named]#

 

5.提供服务脚本,并赋予权限:

1).脚本:

[root@xiaoma ~]# vim /etc/rc.d/init.d/named
#!/bin/bash
#
# description: named daemon
# chkconfig: - 25 80
#
pidFile=/usr/local/bind9/var/run/named.pid
lockFile=/var/lock/subsys/named
confFile=/etc/named/named.conf
[ -r /etc/rc.d/init.d/functions ] && . /etc/rc.d/init.d/functions
start() {
        if [ -e $lockFile ]; then
                echo "named is already running..."
                exit 0
        fi
                echo -n "Starting named:"
                daemon --pidfile "$pidFile" /usr/local/bind9/sbin/named -u named -c "$confFile"
                RETVAL=$?
                echo
        if [ $RETVAL -eq 0 ]; then
                touch $lockFile
                return $RETVAL
        else
                rm -f $lockFile $pidFile
                return 1
        fi
}
stop() {
        if [ ! -e $lockFile ]; then
                echo "named is stopped."
                #       exit 0
                fi
                echo -n "Stopping named:"
                killproc named
                RETVAL=$?
                echo
        if [ $RETVAL -eq 0 ];then
                rm -f $lockFile $pidFile
                        return 0
        else
                echo "Cannot stop named."
                failure
                return 1
                fi
}
restart() {
        stop
        sleep 2
        start
}
reload() {
        echo -n "Reloading named: "
        killproc named -HUP
        #killall -HUP named
        RETVAL=$?
        echo
        return $RETVAL
}
status() {
        if pidof named &> /dev/null; then
                echo -n "named is running..."
                success
                echo
        else
                echo -n "named is stopped..."
                success
                echo
        fi
}
usage() {
        echo "Usage: named {start|stop|restart|status|reload}"
}
case $1 in
start)
        start ;;
stop)
        stop ;;
restart)
        restart ;;
status)
        status ;;
reload)
        reload ;;
        *)
        usage
        exit 4
        ;;
        esac

2).赋予相应属性:

[root@xiaoma ~]# chkconfig --add named
[root@xiaoma ~]# chkconfig --list named
named           0:off   1:off   2:off   3:off   4:off   5:off   6:off
[root@xiaoma ~]# killall named -->关闭named
[root@xiaoma ~]# chmod +x /etc/rc.d/init.d/named
[root@xiaoma ~]# service named start
Starting named:                                            [  OK  ]