Bind安装配置及应用

Bind安装配置及应用

BIND:Berkeley Internet Name Domain ,ISC.org

?
?

DNS服务的实现:

?
?

监听端口:53/UDP , 53/TCP

?
?

程序包:bind

服务器程序:named

客户端工具程序:dig,host ,nslookup

[[email protected] ~]# yum repolist

Loaded plugins: fastestmirror, refresh-packagekit, security

Loading mirror speeds from cached hostfile

repo id repo name status

base CentOS 4,184

epel CentOS 6.6 EPEL 12,922

repolist: 17,106

?
?

# yum list bind*

Loaded plugins: fastestmirror, refresh-packagekit, security

Loading mirror speeds from cached hostfile

base | 3.2 kB 00:00

epel | 3.0 kB 00:00

Installed Packages

bind-libs.x86_64 32:9.8.2-0.30.rc1.el6 @anaconda-CentOS-201410241409.x86_64/6.6

共享库

bind-utils.x86_64 32:9.8.2-0.30.rc1.el6 @anaconda-CentOS-201410241409.x86_64/6.6

工具包

Available Packages

bind.x86_64 32:9.8.2-0.30.rc1.el6 base

服务器端程序

bind-chroot.x86_64 32:9.8.2-0.30.rc1.el6 base

加强安全性工具

把/var/named/chroot/当根目录使用,限定在这个区域内运行

bind-dyndb-ldap.x86_64 2.3-5.el6 base

bind-libs.i686 32:9.8.2-0.30.rc1.el6 base

?
?

# yum info bind

# yum info bind-chroot

# yum install -y bind

# rpm -qc bind

?
?

BIND:

设置dns? /etc/resolv.conf

?
?

服务脚本:/etc/rc.d/init.d/named [start|stop|restart] //启动|关闭|重启 named 服务

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

/etc/named.rfc1912.zones

区域解析库文件:/var/name/zone_name.zone

RFC:request file comment

在DNS安装,配置,应用过程中,遇到错误,我们通常要从以下几个配置文件里慢慢来排查错误

第一步:首先要查看named服务是否开启!!!!!!!!!!!!!!!!!!服务脚本:/etc/rc.d/init.d/named [start|stop|restart] /*启动|关闭|重启 named 服务*/

或是 service named [start|stop|restart]

第二步:查看主配置文件,看看自己的设置:

vim /etc/named.conf

vim /etc/named.rfc1912.zones //(设定主,从区域解析库文件设置)

检查配置文件语法(排查小技巧)

#named-checkconf

?
?

#named-checkconf /etc/named.rfc1912.zones

?
?

第三步:区域解析库文件的设置:

vim /var/name/zone_name.zone

第四步:如果有错误,就需要查看 /var/log/messages

?
?

?
?

/etc/named

/etc/named.conf

/etc/named.iscdlv.key

/etc/named.rfc1912.zones

/etc/named.root.key

/etc/portreserve/named

/etc/rc.d/init.d/named

/etc/rndc.conf

/etc/rndc.key

/etc/sysconfig/named named脚本配置文件

?
?

# service named start //开启named 服务

[[email protected] ~]# ss -tunlp |grep 53

udp UNCONN 0 0 127.0.0.1:53 *:* users:(("named",3180,512))

udp UNCONN 0 0 *:53419 *:* users:(("rpc.statd",1307,7))

udp UNCONN 0 0 ::1:53 :::* users:(("named",3180,513))

tcp LISTEN 0 3 ::1:53 :::* users:(("named",3180,21))

tcp LISTEN 0 3 127.0.0.1:53 *:* users:(("named",3180,20))

tcp LISTEN 0 128 ::1:953 :::* users:(("named",3180,23))

tcp LISTEN 0 128 127.0.0.1:953 *:* users:(("named",3180,22))

?
?

启动了没啥一样

全球13个根存放位置

# rpm -qc bind

/var/named/named.ca

?
?

现在ping本地主机:

# ping localhost

PING localhost (127.0.0.1) 56(84) bytes of data.

64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.023 ms

?
?

# cat /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

172.16.0.1 server.magelinux.com server

?
?

DNS解析告诉主机解析结果是127.0.0.1

区域解析库文件:

/var/named/named.localhost

/var/named/named.loopback

?
?

缓存DNS服务器:

1.根服务器:named.ca

2.localhost <----> 127.0.0.1

区域解析库文件:

/var/named/named.localhost

/var/named/named.loopback

?
?

#cat /etc/named.conf

//全局配置段:定义named进程的工作特性

options {

//监听端口 地址

//listen-on port 53 { 127.0.0.1; };

listen-on port 53 { 172.16.31.2; };

//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 { localhost; };

//是否递归

recursion yes;

//是关于DNS安全的,尽量设置为no或者注释

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;

};

};

?
?

#定义本DNS服务器负责解析的区域;zone可以有多个

zone "." IN {

type hint;

file "named.ca";

};

?
?

将文件装载进本文件

include "/etc/named.rfc1912.zones";

include "/etc/named.root.key";

?
?

检查主配置文件语法

#named-checkconf

?
?

重启named服务:

# service named restart

?
?

如果不更改配置

在客户端去dig一下:

没有成功

# dig -t A localhost @172.16.31.2

?
?

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -t A localhost @172.16.31.2

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 21604

;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; WARNING: recursion requested but not available

?
?

;; QUESTION SECTION:

;localhost. IN A

?
?

;; Query time: 1 msec

;; SERVER: 172.16.31.2#53(172.16.31.2)

;; WHEN: Tue Dec 9 07:43:13 2014

;; MSG SIZE rcvd: 27

解析成功:

# dig -t A localhost @172.16.31.2

?
?

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -t A localhost @172.16.31.2

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37731

;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

#aa 权威应答

;; QUESTION SECTION:

;localhost. IN A

?
?

;; ANSWER SECTION:

localhost. 86400 IN A 127.0.0.1

#应答段

;; AUTHORITY SECTION:

localhost. 86400 IN NS localhost.

#附加段
如:dig -t MX google.com @172.16.0.1

;; ADDITIONAL SECTION:

localhost. 86400 IN AAAA ::1

?
?

;; Query time: 1 msec

;; SERVER: 172.16.31.2#53(172.16.31.2)

;; WHEN: Tue Dec 9 07:47:33 2014

;; MSG SIZE rcvd: 85

?
?

?
?

配置DNS服务器成为某区域的主服务器:

1.在主配置文件中定义zone

zone "zone_name" IN {

type master;

file "/path/to/zone_file.zone";

}

?
?

zone_name:

正向区域:google.com

反向区域:逆向网络地址,in-addr.arpa

检查配置文件:

#named-checkconf /etc/named.rfc1912.zones // (主,从区域配置文件)

# ls /etc/named.rfc1912.zones

/etc/named.rfc1912.zones

?
?

例如:

zone "google" IN {

type master;

file "google.com.zone";

}

?
?

2.定义zone用到的区域数据库文件

包含资源记录,也可以包含宏定义

$TTL

$ORIGIN

?
?

# pwd

/var/named

#vim google.com.zone

$TTL 600

$ORGIN google.com.

@ IN SOA ns1.google.com. nsadmin.google.com. (

2014120901 // //区域数据文件有版本号(序列号):serival


1H


??


//刷新时间(检查周期):refresh


?


5M


??


//重试时间(重试周期):retry


3D


??


//重试时间 < 刷新时间


3H)


??


//过期时间(失效时长):expire

??

IN NS ns1

IN MX 10 mail1

ns1 IN A 172.16.31.2

mail1 IN A 172.16.31.2

www IN A 172.16.31.2

pop3 IN A 172.16.31.2

iamp4 IN A 172.16.31.2

?
?

设置文件权限

#chmod 640 google.com.zone

设置文件所属用户组

#chown :named google.com.zone /* 只许named 用户组可以查看 */

?
?

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

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

?
?

重新载入服务:

#service named reload

?
?

测试服务状态:

#dig -t SOA google.com @172.16.31.2

#dig -t MX google.com @172.16.31.2

?
?

?
?

?
?

客户端测试工具:dig,host,nslookup

?
?

dig命令:

用法:dig -t type -name @SERVER [queryoptions]

[-t type] 资源类型

[queryoptions]

+[no]tcp

+[no]trace 跟踪整个名称解析迭代过程

#dig -t A www.baidu.com @172.16.0.1 +trace

+[no]recurse 以递归方式查询与否

#dig -t A www.google.com @172.16.0.1 +recurse

[-x IP] 将ip解析成主机名

#dig -x 172.16.31.2 @172.16.31.2

?
?

?
?

host命令:

用法:host [-t type] name [SERVER]

#host -t A www.google.com 172.16.31.2

#host –t MX google.com 172.16.31.2

?
?

nslookup命令:

用法:nslookup [options] [name | - ] [server]

#nslookup

>server 172.16.32.2 查询时使用的服务器

>set q=a 设定查询类型(大小写a都可以)

>www.google.com 指定要查询的名字

>set q=MX

>mail1.google.com

?
?

?
?

3.反向区域名称有特定后缀:.in-addr.arpa.; //反向解析的固定格式

4.反向区域的区域解析库文件包含SOA,NS及PTR记录,不包含MX,A记录

?
?

构建反向区域:

#vi /etc/named.rfc1912.zones

zone "31.16.172.in-addr.arpa" IN {

type master;

file "172.16.31.zone";

};

?
?

[[email protected] named]# cat 172.16.31.zone

$TTL 600

$ORIGIN 31.16.172.in-addr.arpa.

@ IN SOA ns1.google.com. nsadmin.google.com. (

2014120901

1H

5H

3D

3H) /*

SOA:

name: 区域名称

[ ttl ] :否定应答的TTL值

value:(有两部分)

主DNS服务器的FQDN,也可以当前区域的名称;

当前区域的管理员邮箱;

@用于表示当前区域的名字,所有邮箱地址不能出现@符号;

*/

?
?

?
?

?
?

IN NS ns1.google.com.

2 IN PTR ns1.google.com.

2 IN PTR mail1.google.com.

2 IN PTR pop3.google.com.

2 IN PTR www.google.com.

2 IN PTR iamp4.google.com.

? /* 上面的 2 表示主机号 */

# chmod 640 172.16.31.zone

?
?

# chown :named 172.16.31.zone

?
?

# service named reload

?
?

# dig -t axfr 31.16.172.in-addr.arpa @172.16.31.2 // 拓展axfr

?
?

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -t axfr 31.16.172.in-addr.arpa @172.16.31.2

;; global options: +cmd

31.16.172.in-addr.arpa. 600 IN SOA ns1.google.com. nsadmin.google.com. 2014120901 3600 18000 259200 10800

31.16.172.in-addr.arpa. 600 IN NS ns1.google.com.

2.31.16.172.in-addr.arpa. 600 IN PTR ns1.google.com.

2.31.16.172.in-addr.arpa. 600 IN PTR mail1.google.com.

2.31.16.172.in-addr.arpa. 600 IN PTR pop3.google.com.

2.31.16.172.in-addr.arpa. 600 IN PTR www.google.com.

2.31.16.172.in-addr.arpa. 600 IN PTR iamp4.google.com.

31.16.172.in-addr.arpa. 600 IN SOA ns1.google.com. nsadmin.google.com. 2014120901 3600 18000 259200 10800

;; Query time: 2 msec

;; SERVER: 172.16.31.2#53(172.16.31.2)

;; WHEN: Tue Dec 9 09:20:08 2014

;; XFR size: 8 records (messages 1, bytes 241)

?
?

[[email protected] ~]# host -t ptr 172.16.31.2 172.16.31.2

Using domain server:

Name: 172.16.31.2

Address: 172.16.31.2#53

Aliases:

?
?

2.31.16.172.in-addr.arpa domain name pointer www.google.com.

2.31.16.172.in-addr.arpa domain name pointer iamp4.google.com.

2.31.16.172.in-addr.arpa domain name pointer ns1.google.com.

2.31.16.172.in-addr.arpa domain name pointer mail1.google.com.

2.31.16.172.in-addr.arpa domain name pointer pop3.google.com.

[[email protected] ~]# nslookup

> server 172.16.31.2

Default server: 172.16.31.2

Address: 172.16.31.2#53

> set q=ptr

> 172.16.31.2

Server: 172.16.31.2

Address: 172.16.31.2#53

?
?

2.31.16.172.in-addr.arpa name = iamp4.google.com.

2.31.16.172.in-addr.arpa name = ns1.google.com.

2.31.16.172.in-addr.arpa name = mail1.google.com.

2.31.16.172.in-addr.arpa name = pop3.google.com.

2.31.16.172.in-addr.arpa name = www.google.com.

?
?

?
?

?
?

?
?

构建从服务器:

主服务器:

# vim google.com.zone

$TTL 600

$ORIGIN google.com.

@ IN SOA ns1.google.com. nsadmin.google.com. (

2014120902

1H

5H

3D

3H)

IN NS ns1

IN NS ns2

IN MX 10 mail1

ns1 IN A 172.16.31.2

ns2 IN A 172.16.31.3

mail1 IN A
172.16.31.2

www IN A 172.16.31.2

pop3 IN A 172.16.31.2

iamp4 IN A 172.16.31.2

或者(iamp4 IN CNAME pop3)

从服务器配置:
首先切换到另一台主机上,再远程复制172.16.31.2主机上的文件。

[[email protected] ~]# scp [email protected]:/etc/named.conf
/etc/named.conf

[email protected]‘s password:

named.conf 100% 1051 1.0KB/s 00:00

[[email protected] ~]# cat /etc/named.conf

//

// named.conf

//

// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS

// server as a caching only nameserver (as a localhost DNS resolver only).

//

// See /usr/share/doc/bind*/sample/ for example named configuration files.

//

?
?

options {

//listen-on port 53 { 127.0.0.1; };

//listen-on port 53 { 172.16.31.2; };

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 { localhost; };

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";

?
?

[[email protected] named]# service named reload

Reloading named: [ OK ]

?
?

[[email protected] named]# ss -tunl |grep :53

udp UNCONN 0 0 172.16.31.3:53 *:*

udp UNCONN 0 0 127.0.0.1:53 *:*

udp UNCONN 0 0 ::1:53 :::*

tcp LISTEN 0 3 172.16.31.3:53 *:*

tcp LISTEN 0 3 127.0.0.1:53 *:*

tcp LISTEN 0 3 ::1:53 :::*

?
?

[[email protected] named]# vim /etc/named.rfc1912.zones

zone "google.com" IN {

type slave;

file "slaves/google.com.zone";

masters { 172.16.31.2; };

};

由于从服务器上/var/named/目录的权限是属主root属组named,且属组named没有写权限;如果给这个目录写权限就会造成系统的不安全;所以软件定义了目录下有个slaves文件,来保存从主服务器接收的配置文件

?
?

检查语法:

[[email protected] named]# named-checkconf

?
?

重新载入服务:

# service named reload

?
?

[[email protected] named]# tail /var/log/messages

Dec 9 09:31:05 CA named[3688]: using default UDP/IPv4 port range: [1024, 65535]

Dec 9 09:31:05 CA named[3688]: using default UDP/IPv6 port range: [1024, 65535]

Dec 9 09:31:05 CA named[3688]: sizing zone task pool based on 7 zones

Dec 9 09:31:05 CA named[3688]: Warning: ‘empty-zones-enable/disable-empty-zone‘ not set: disabling RFC 1918 empty zones

Dec 9 09:31:05 CA named[3688]: reloading configuration succeeded

Dec 9 09:31:05 CA named[3688]: reloading zones succeeded

Dec 9 09:31:05 CA named[3688]: zone google.com/IN: Transfer started.

Dec 9 09:31:05 CA named[3688]: transfer of ‘google.com/IN‘ from 172.16.31.2#53: connected using 172.16.31.3#38254

Dec 9 09:31:05 CA named[3688]: zone google.com/IN: transferred serial 2014120901

Dec 9 09:31:05 CA named[3688]: transfer of ‘google.com/IN‘ from 172.16.31.2#53: Transfer completed: 1 messages, 9 records, 243 bytes, 0.001 secs (243000 bytes/sec)

?
?

这里只存在ns1没有ns2;因为主服务器配置文件没有reload

[[email protected] named]# ll slaves/google.com.zone

-rw-r--r-- 1 named named 428 Dec 9 09:31 slaves/google.com.zone

[[email protected] named]# cat slaves/google.com.zone

$ORIGIN .

$TTL 600 ; 10 minutes

google.com IN SOA ns1.google.com. nsadmin.google.com. (

2014120901 ; serial

3600 ; refresh (1 hour)

18000 ; retry (5 hours)

259200 ; expire (3 days)

10800 ; minimum (3 hours)

)

NS ns1.google.com.

MX 10 mail1.google.com.

$ORIGIN google.com.

iamp4 A 172.16.31.2

mail1 A 172.16.31.2

ns1 A 172.16.31.2

pop3 A 172.16.31.2

www A 172.16.31.2

?
?

我们的主服务器配置更改后没有重新载入,我们在主服务器上reload一下:

[[email protected] named]# service named reload

Reloading named: [ OK ]

[[email protected] named]# tail /var/log/messages

Dec 9 09:32:36 stu1 named[3336]: received control channel command ‘reload‘

Dec 9 09:32:36 stu1 named[3336]: loading configuration from ‘/etc/named.conf‘

Dec 9 09:32:36 stu1 named[3336]: using default UDP/IPv4 port range: [1024, 65535]

Dec 9 09:32:36 stu1 named[3336]: using default UDP/IPv6 port range: [1024, 65535]

Dec 9 09:32:36 stu1 named[3336]: sizing zone task pool based on 8 zones

Dec 9 09:32:36 stu1 named[3336]: Warning: ‘empty-zones-enable/disable-empty-zone‘ not set: disabling RFC 1918 empty zones

Dec 9 09:32:36 stu1 named[3336]: reloading configuration succeeded

Dec 9 09:32:36 stu1 named[3336]: reloading zones succeeded

Dec 9 09:32:36 stu1 named[3336]: zone google.com/IN: loaded serial 2014120902

Dec 9 09:32:36 stu1 named[3336]: zone google.com/IN: sending notifies (serial 2014120902)

?
?

上面的实验是更改过的,更新状况不清楚,我修改了一些再次载入,下面的是增量更新正常表现:

[[email protected] named]# tail /var/log/messages

Dec 9 20:39:41 stu1 named[3336]: Warning: ‘empty-zones-enable/disable-empty-zone‘ not set: disabling RFC 1918 empty zones

Dec 9 20:39:41 stu1 named[3336]: reloading configuration succeeded

Dec 9 20:39:41 stu1 named[3336]: reloading zones succeeded

Dec 9 20:39:41 stu1 named[3336]: zone 31.16.172.in-addr.arpa/IN: loaded serial 2014120903

Dec 9 20:39:41 stu1 named[3336]: dns_master_load: google.com.zone:18: imap4.google.com: CNAME and other data

Dec 9 20:39:41 stu1 named[3336]: zone google.com/IN: loading from master file google.com.zone failed: CNAME and other data

Dec 9 20:39:41 stu1 named[3336]: zone google.com/IN: not loaded due to errors.

Dec 9 20:39:41 stu1 named[3336]: zone 31.16.172.in-addr.arpa/IN: sending notifies (serial 2014120903)

Dec 9 20:39:41 stu1 named[3336]: client 172.16.31.3#37586: transfer of ‘31.16.172.in-addr.arpa/IN‘: AXFR-style IXFR started

Dec 9 20:39:41 stu1 named[3336]: client 172.16.31.3#37586: transfer of ‘31.16.172.in-addr.arpa/IN‘: AXFR-style IXFR ended

?
?

?
?

然后再在从服务器上查看,同步成功了:

[[email protected] named]# cat slaves/google.com.zone

$ORIGIN .

$TTL 600 ; 10 minutes

google.com IN SOA ns1.google.com. nsadmin.google.com. (

2014120902 ; serial

3600 ; refresh (1 hour)

18000 ; retry (5 hours)

259200 ; expire (3 days)

10800 ; minimum (3 hours)

)

NS ns1.google.com.

NS ns2.google.com.

MX 10 mail1.google.com.

$ORIGIN google.com.

iamp4 A 172.16.31.2

mail1 A 172.16.31.2

ns1 A 172.16.31.2

ns2 A 172.16.31.3

pop3 A 172.16.31.2

www A 172.16.31.2

?
?

我们在windows机器上实现解析:

?
?

?
?

rndc:Remote Name Domain Controller

基于套接字与named服务通信,控制named服务完成特定操作

?
?

控制named服务的密钥:

[[email protected] named]# cat /etc/rndc.key

key "rndc-key" {

algorithm hmac-md5;

secret "X203BQ+6bQVPKfBLHXpiDw==";

};

?
?

#rndc-confgen #rndc配置文件生成器

会卡住

会去/dev/random和/dev/urandom读取随机数生成密钥

#/dev/random:从熵池中取随机数,如果熵池中的随机数被用尽,则阻塞相关进程

#/dev/urandom:从熵池中取随机数,如果熵池中的随机数被用尽,则用软件生成伪随机数

?
?

#rndc-confgen -r /dev/urandom

生成随机数密钥,密钥是一致的

# rndc-confgen -r /dev/urandom

# Start of rndc.conf

key "rndc-key" {

algorithm hmac-md5;

secret "YvgyyouB/CHTCUokRe4gbw==";

};

?
?

options {

default-key "rndc-key";

default-server 127.0.0.1;

default-port 953;

};

# End of rndc.conf

?
?

# Use with the following in named.conf, adjusting the allow list as needed:

# key "rndc-key" {

# algorithm hmac-md5;

# secret "YvgyyouB/CHTCUokRe4gbw==";

# };

#

# controls {

# inet 127.0.0.1 port 953

# allow { 127.0.0.1; } keys { "rndc-key"; };

# };

# End of named.conf

?
?

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

#vim /etc/rndc.conf

将文件中的内容复制进named.conf中启用来管理远程管理DNS

# Use with the following in named.conf, adjusting the allow list as needed:

key "rndc-key" {

algorithm hmac-md5;

secret "YvgyyouB/CHTCUokRe4gbw==";

};

?

controls {

inet 127.0.0.1 port 953 #这里是只允许本机控制管理DNS

allow { 127.0.0.1; } keys { "rndc-key"; };

};

# End of named.conf

?
?

?
?

然后我们

[[email protected] named]# service named restart

Stopping named: [ OK ]

Starting named: [ OK ]

[[email protected] named]# rndc stats

[[email protected] named]# rndc status #显示当前状态

version: 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6

CPUs found: 1

worker threads: 1

number of zones: 21

debug level: 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

?
?

?
?

?
?

?
?

本机主DNS服务器可以使用rndc管理命令,但是rndc客户端从DNS服务器还没配置,我们来配置一下:

主DNS服务器配置

controls {

inet 0.0.0.0 port 953

allow { 127.0.0.1; 172.16.31.3; 172.16.31.4; } keys { "rndc-key"; };

};

在allow字段里面加入从服务器的IP地址,并且将允许管理的网络设置成0.0.0.0

?
?

从DNS服务器配置:

将主DNS服务器的/etc/rndc.conf文件的如下段复制到从服务器中的/etc/rndc.conf中:

key "rndc-key" {

algorithm hmac-md5;

secret "5xhClxlukK5HSJxmZ4ZV8w==";

};

?
?

options {

default-key "rndc-key";

default-server 127.0.0.1;

default-port 953;

};

将从服务器中的options字段改成下面的配置:

key "rndc-key" {

algorithm hmac-md5;

secret "5xhClxlukK5HSJxmZ4ZV8w==";

};

?
?

options {

default-key "rndc-key";

default-server 172.16.31.3;

default-port 953;

};

?
?

重启named服务:

[[email protected] named]# service named restart

Stopping named: [ OK ]

Starting named: [ OK ]

查看链接状态:

[[email protected] named]# ss -tunl |grep 53

udp UNCONN 0 0 172.16.31.3:53 *:*

udp UNCONN 0 0 127.0.0.1:53 *:*

tcp LISTEN 0 3 172.16.31.3:53 *:*

tcp LISTEN 0 3 127.0.0.1:53 *:*

tcp LISTEN 0 128 *:953 *:*

?
?

可以看出953端口开放了。

[[email protected] named]# rndc status

version: 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6

CPUs found: 1

worker threads: 1

number of zones: 21

debug level: 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

?
?

在从DNS服务器上重启:

[[email protected] named]# service named restart

Stopping named: [ OK ]

Starting named: [ OK ]

?
?

测试从DNS服务器可以管理主DNS服务器:

[[email protected] named]# rndc -s 172.16.31.3 status

version: 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6

CPUs found: 1

worker threads: 1

number of zones: 21

debug level: 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

?
?

?
?

?
?

?
?

rndc用法与命令:

#man rndc 查找帮助文件

语法:rndc [-b source-address] [-c config-file] [-k key-file] [-s server]

[-p port] {command}

?
?

#rndc -h 获取帮助

reload :重新装载配置文件及区域解析库文件

reload zone:只装载指定区域解析库文件

refresh zone :维护

retransfer zone:在不检查序列号的情况下直接传送一个区域数据文件

notify zone :重新通知区域数据文件

reconfig :只重新装载配置文件及新增的区域

querylog:启用或关闭查询日志,默认关闭

#rndc querylog

#rndc status

#

#tail /var/log/messages

?
?

stop:将更新信息发送给服务器,然后关闭DNS服务器

trace level:指明调试级别,不跟数字逐级增加,可以明确指定(如trace 3)

notrace :关闭调试

flush:清除服务器缓存

?
?

注意:

1.在任何具有从服务器的区域的区域解析库文件中,必须为每个DNS服务器定义一个NS记录。

2.数据同步时,服务器之间的时间必须一致

#crontab -e

*/3 * * * * /usr/sbin/ntpdate 172.16.0.1 &> /dev/null

[[email protected] named]# ntpdate 172.16.0.1

9 Dec 18:14:26 ntpdate[3844]: step time server 172.16.0.1 offset 28998.955058 sec

[[email protected] named]# date

Tue Dec 9 18:14:28 CST 2014

?
?

[[email protected] named]# ntpdate 172.16.0.1

9 Dec 18:14:04 ntpdate[3868]: step time server 172.16.0.1 offset 28999.587173 sec

[[email protected] named]# date

Tue Dec 9 18:14:09 CST 2014

?
?

3.bind程序版本差异:尽可能保持版本相同;不得已时,主低从高是可以的。

?
?

4.尽量の开放给从服务器,不用就关闭,但是从服务器需要同步,我们就需要配置限制

通过同步数据可以查看网络拓扑,不安全哦!

[[email protected] named]# dig -t axfr google.com @172.16.31.2

?
?

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -t axfr google.com @172.16.31.2

;; global options: +cmd

google.com. 600 IN SOA ns1.google.com. nsadmin.google.com. 2014120902 3600 18000 259200 10800

google.com. 600 IN NS ns1.google.com.

google.com. 600 IN NS ns2.google.com.

google.com. 600 IN MX 10 mail1.google.com.

iamp4.google.com. 600 IN A 172.16.31.2

mail1.google.com. 600 IN A 172.16.31.2

ns1.google.com. 600 IN A 172.16.31.2

ns2.google.com. 600 IN A 172.16.31.3

pop3.google.com. 600 IN A 172.16.31.2

www.google.com. 600 IN A 172.16.31.2

google.com. 600 IN SOA ns1.google.com. nsadmin.google.com. 2014120902 3600 18000 259200 10800

;; Query time: 1 msec

;; SERVER: 172.16.31.2#53(172.16.31.2)

;; WHEN: Tue Dec 9 18:18:56 2014

;; XFR size: 11 records (messages 1, bytes 277)

?
?

?
?

bind的安全配置:

?
?

1.acl控制列表:

#vi /etc/named.conf

acl acl_name {

IP;

NETWORK/PRILEN;

};

?
?

BIND内置的acl:

none:表示没有任意主机

any:表示任意主机

local:表示本机

localnet:表示本地网络

?
?

实例:

1.编辑named.conf文件,添加acl控制语句

acl mynet {

172.16.31.0/24;

127.0.0.0;

};

?
?

acl slaveservers {

172.16.31.3;

127.0.0.1;

};

?
?

2.在/etc/named.rfc1912.zone中调用:

zone "google.com" IN {

type master;

file "google.com.zone";

allow-query { any; };

allow-transfer { slaveservers; };

};

?
?

zone "31.16.172.in-addr.arpa" IN {

type master;

file "172.16.31.zone";

allow-query { any; };

allow-transfer { slaveservers; };

};

?
?

[[email protected] named]# rndc reload

server reload successful

[[email protected] named]# tail /var/log/messages

Dec 9 21:40:14 stu1 named[4735]: received control channel command ‘stats‘

Dec 9 21:40:14 stu1 named[4735]: dumpstats complete

Dec 9 22:01:09 stu1 named[4735]: received control channel command ‘reload‘

Dec 9 22:01:09 stu1 named[4735]: loading configuration from ‘/etc/named.conf‘

Dec 9 22:01:09 stu1 named[4735]: using default UDP/IPv4 port range: [1024, 65535]

Dec 9 22:01:09 stu1 named[4735]: using default UDP/IPv6 port range: [1024, 65535]

Dec 9 22:01:09 stu1 named[4735]: sizing zone task pool based on 8 zones

Dec 9 22:01:09 stu1 named[4735]: Warning: ‘empty-zones-enable/disable-empty-zone‘ not set: disabling RFC 1918 empty zones

Dec 9 22:01:09 stu1 named[4735]: reloading configuration succeeded

Dec 9 22:01:09 stu1 named[4735]: reloading zones succeeded

?
?

在从服务器上测试是否能够同步数据:

[[email protected] named]# dig -t axfr google.com @172.16.31.2

?
?

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -t axfr google.com @172.16.31.2

;; global options: +cmd

google.com. 600 IN SOA ns1.google.com. nsadmin.google.com. 2014120903 3600 18000 259200 10800

google.com. 600 IN NS ns1.google.com.

google.com. 600 IN NS ns2.google.com.

google.com. 600 IN MX 10 mail1.google.com.

ftp.google.com. 600 IN A 172.16.31.2

imap4.google.com. 600 IN A 172.16.31.2

mail1.google.com. 600 IN A 172.16.31.2

ns1.google.com. 600 IN A 172.16.31.2

ns2.google.com. 600 IN A 172.16.31.3

pop3.google.com. 600 IN A 172.16.31.2

www.google.com. 600 IN A 172.16.31.2

google.com. 600 IN SOA ns1.google.com. nsadmin.google.com. 2014120903 3600 18000 259200 10800

;; Query time: 1 msec

;; SERVER: 172.16.31.2#53(172.16.31.2)

;; WHEN: Tue Dec 9 22:05:56 2014

;; XFR size: 12 records (messages 1, bytes 297)

?
?

?
?

?
?

配置文件中设置允许也可以:

#vi /etc/named.conf

allow-query {};

allow-transfer {};

allow-recuersion {};

?
?

?
?

默认情况下服务器是允许递归查询的,

但是某个区域我们需要关闭递归查询,只对本地网络来递归:

#vi /etc/named.conf

//recursion yes;

allow-recursion {mynet; };

?
?

时间: 2024-10-11 01:16:03

Bind安装配置及应用的相关文章

Bind安装配置

DNS服务是互联网中的基础性服务,在Linux系统中提供DNS服务的软件是Bind,能够使用Bind配置DNS服务,是运维工程师必备的技能,Bind的安装配置过程如下: 测试过程中使用的主机: DNS服务器,IP:192.168.1.132 MAIL服务器 IP:192.168.1.135 WWW服务器  IP:192.168.1.128 首先安装Bind,# yum install -y bind 修改配置文件: 在options中listen on port默认监听的是本机的127.0.0.

centos7 dns(bind)安装配置

yum install -y bind bind-chroot bind-utils chroot是通过相关文件封装在一个伪根目录内,已达到安全防护的目的,一旦程序被攻破,将只能访问伪根目录内的内容,而不是真实的根目录BIND安装好之后不会有预制的配置文件,但是在BIND的文档文件夹内(/usr/share/doc/bind-9.9.4),BIND为我们提供了配置文件模板,我们可以直接拷贝过来: cp -r /usr/share/doc/bind-9.9.4/sample/etc/* /var/

DNS入门介绍之三BIND安装配置全过程

一.下载BIND 本次实验下载的版本是:BIND 9.11.0-P2 二.安装BIND 1.进入压缩包的目录,进行解压缩,进入bind目录. [[email protected] opt]# tar zxvf bind-9.11.0-P2.tar.gz [[email protected] opt]# cd bind-9.11.0-P 2.编译配置 [[email protected] bind-9.11.0-P2]# ./configure --prefix=/data/sdns/named

DNS服务之bind安装配置与应用

BIND是实现DNS服务的一套软件(官方站点:isc.org),其包含了服务器端程序named(由bind程序包提供,监听套接字:53/tcp.53/udp),和客户端工具host.nslookup.dig(由bind-utils程序包提供).为保证服务器的安全性,bind还提供了一种"沙箱机制",bind-chroot是将原文件系统的根"/"替换成"/var/named/chroot"来使用. 目前主流的bind程序依旧是9.x系列.使用yum

Centos 5.2安装配置DNS服务器

BIND安装配置(主从)我的系统环境:centos 5.2 作者:哈密瓜 主:我采用的是yum安装[[email protected] src]#yum -y install bind* 生成rndc控制命令的key文件[[email protected] usr]# sbin/rndc-confgen > /etc/rndc.conf 从rndc.conf文件中提取named.conf用的key [[email protected] usr]# cd /etc[[email protected

DNS2之bind安装、主从配置同步、子域创建、view配置

主DNS配置从服务器: 我们知道,DNS服务器在网络服务中可能出现故障当机等状况,会导致DNS服务瘫痪,显然在实际的网络应用中我们不希望出现这种状况,所有我们就要配置从服务器来在主DNS服务器出现故障时代替他来工作,然而作为价格昂贵的服务器本身你又不希望出现这种极大的浪费,所有从服务器在实际工作中是和主服务器共同分担DNS解析任务的,这样既解决了服务器故障导致的问题,还可以缓解DNS服务器的压力. 那么要配置一个从服务器我们又该怎么做呢? 前提:我们要为本地配置一个从服务器aolens2.从服务

BIND服务企业实例安装配置

BIND服务企业实例安装配置 防伪码:思而不学则罔,学而不思则殆. 前言:BIND是一款开放源码的DNS服务器软件,Bind由美国加州大学Berkeley分校开发和维护的,全名为Berkeley  Internet  Name Domain 它是目前世界上使用最为广泛的DNS. 理论知识: DNS的分类: 主DNS服务器:就是一台存储着原始资料的DNS服务器. 从DNS服务器:使用自动更新方式从主DNS同步数据的DNS服务器.也称为辅助DNS服务器. 缓存服务器:不负责本地解析,采用递归方式转发

BIND的安装配置

BIND的安装配置: dns服务,程序包名bind,程序名named 程序包:            bind            bind-libs            bind-utils bind-chroot: /var/named/chroot/ bind:            服务脚本:/etc/rc.d/init.d/named            主配置文件:/etc/named.conf, /etc/named.rfc1912.zones, /etc/rndc.key 

CentOS7.4下DNS服务器软件BIND安装及相关的配置(一)

(一)DNS简介:DNS,全称Domain Name System,即域名解析系统.域名是通过DNS来实现的,每个域名代表一个IP,DNS就是用来在ip地址与域名之间进行转换的服务.DNS帮助用户在互联网上寻找路径.在互联网上的每一个计算机都拥有一个唯一的地址,称作"IP地址"(即互联网协议地址)由于IP地址难以记忆,一般用域名来进行管理(ip地址偏重底层,而DNS则偏重于应用层) 1,DNS功能每个IP地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开.有了