一、BIND服务器简介
Bind(Berkeley Internet Name Domain Service),它是一款实现DNS服务器的开放源码软件,够提供双向解析,转发,子域授权,view等功能,是世界上使用最为广泛的DNS服务器软件,目前Internet上半数以上的DNS服务器有都是用Bind来架设的。
二、BIND基本安装与配置
1、Bind安装(最基本的bind:主程序、bind-libs:库文件、bind-utils:客户端工具三个组件)
#yum install bind
2、Bind主要文件
主配置文件:/etc/named.conf
rndc配置文件:/etc/rndc.conf,remote name domain controller,默认与bind安装在同一主机,且只能通过127.0.0.1来连接named进程;提供辅助性的管理功能,端口:953/tcp
数据目录:/var/named/,/var/named/*.zone(区域解析库文件,其中的配置仅为当前区域有效)
2.1、配置文件named.conf简要注解
named.conf文件主要分两部分:全局配置和zone配置。
options { listen-on port 53 { 127.0.0.1; }; #指定named监听的端口和IP。 listen-on-v6 port 53 { ::1; }; #IPV6监听设定。 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; }; #允许查询本DNS的客户端地址或列表 recursion yes; #是否允许去迭代查询。 dnssec-enable yes; #支持验证DNS数据由效性的系统(注:建议测试时关闭dnssec) dnssec-validation yes; # 是否进行DNSSEC确认开关 /* 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 { #根区域的Zone段,里面记录了世界互联网上的根域名服务器地址,在使用时需要更新 type hint; #由于根服务器是权威的,根域也不是本DNS服务器自己主管的,所以类型用Hint file "named.ca"; #指定了根区域文件 }; include "/etc/named.rfc1912.zones"; #定义正反解区域相关 include "/etc/named.root.key"; #实现事物签名的秘钥文件
注:区域文件格式:
zone "ZONE_NAME" IN {
type {hint|master|slave|forward};
file "ZONE_FILE";
};
<从服务器>
zone "ZONE_NAME" IN {
type slave; #指定类型为从服务器;
file "slaves/ZONE_FILE"; #由于从服务器会从主服务器直接同步解析库,所以无需设置,但是还是要将同步文件指向存放到指定目录下。
};
<转发>
zone "ZONE_NAME" IN {
type forward; #指定类型为转发。
forward {only|first}; #指定转发的方式,only表示将指定范围内的所有查询都转发,first只转发一次,无回应则自己完成查询。
forwarders { "acl" }; #指定转发的范围。
};
<view> #DNS view:能够智能地自动判断访问者的IP地址,然后根据不同的访问者把域名分别解析成不同的IP地址,从而让不同的IP指向在不不同网络上的主机,例如使网通用户会访问到
网通服务器,电信用户会访问到电信服务器。
view [NAME] { #如果在服务器上设定了view,则所有的区域设定都要包含在view中。
match clients { "acl"; }; #指定view所负责的范围。
zone "name" {};
... 包含的区域。
};
2.2、named.rfc1912.zones区域文件简要注解
// named.rfc1912.zones: zone "localhost.localdomain" IN { type master; file "named.localhost"; allow-update { none; }; }; zone "localhost" IN { #定义本本地的区域 type master; #类型属于master、属于自己的 file "named.localhost"; #指定的文件 allow-update { none; }; #不允许任何人传送的 }; zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN { type master; file "named.loopback"; allow-update { none; }; }; zone "1.0.0.127.in-addr.arpa" IN { #定义反向解析的 type master; #类型属于master、属于自己的 file "named.loopback"; #指定的文件 allow-update { none; }; #不允许任何人传送的 }; zone "0.in-addr.arpa" IN { type master; file "named.empty"; allow-update { none; }; };
三、实战Bind配置正反向解析、主从、VIEW
平台:centos 6.7
Bind版本:9.8
本地测试域名:daisy.com
服务器:node1:192.168.2.5(主DNS);node2:192.168.2.6(从DNS);测试机器:192.168.2.9
3.1、实战DNS正向解析
1)、编辑配置named.conf
options { listen-on port 53 { any; }; #允许 directory "/var/named"; zone文件存放目录。 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; 允许DNS服务器在不知道查询主机的情况下,去像其他服务器做迭代查询得到结果。 dnssec-enable no; 关闭安全审查机制。 dnssec-validation no; dnssec-lookaside no; /* Path to ISC DLV key */ // bindkeys-file "/etc/named.iscdlv.key"; 使用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";
2)、编辑named.rfc1912.zones添加域daisy.com区域管理
// named.rfc1912.zones: zone "localhost.localdomain" IN { type master; file "named.localhost"; allow-update { none; }; }; zone "localhost" IN { #定义本本地的区域 type master; #类型属于master、属于自己的 file "named.localhost"; #指定的文件 allow-update { none; }; #不允许任何人传送的 }; zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN { type master; file "named.loopback"; allow-update { none; }; }; zone "1.0.0.127.in-addr.arpa" IN { #定义反向解析的 type master; #类型属于master、属于自己的 file "named.loopback"; #指定的文件 allow-update { none; }; #不允许任何人传送的 }; zone "0.in-addr.arpa" IN { type master; file "named.empty"; allow-update { none; }; };
########以下新增daisy.com区域################
zone "daisy.com" IN {
type master; #类型为主服务器
file "daisy.com.zone"; #指定资源解析库存放位置,这个路径是相对;named.conf中定义的directory的,即实际位置为/var/named/daisy.com.zone
};
3)、添加资源记录,创建文件/var/named/daisy.com.zone,并修改过权限和属主属组
==以下对资源记录简介,详解见“DNS服务基础(一)”篇章
#*********************************************************************
#** $TTL 43200; #这里可以定义全局变量,如果没有定义TTL则继承这里的43200单位秒
#** #第一条记录必须为SOA记录
#** daisy.com. #区域名称,可以写成@直接引用当前区域名称
#** 86400 #TTL,可不定义,会直接继承全局的
#** IN #Internet,固定格式
#** SOA #记录类型
#** ns.daisy.com. #主服务器的FQDN
#** admin.daisy.com #管理员邮箱,因为@有特殊意义用点代替
#********************************************************************
$TTL 43200 @ 86400 IN SOA ns.daisy.com. admin.daisy.com. ( 201608270001 #serial number序列号 1h # refresh time 主辅之间刷新时间 5m # retry time 拉取信息不成功的重试时间 7d #expire time 过期时间,过期后辅服务器也将放弃解析 1d ) # 否定答案的TTL @ #引用当前域名,可省略 IN NS ns.daisy.com. IN MX 10 mail1.daisy.com. IN MX 20 mail2 #相当于mail2.daisy.com. ns IN A 192.168.2.5 www IN A 192.168.2.6 webmail IN CNAME mail2 mail1.daisy.com. IN A 192.168.2.6 mail2.daisy.com. IN A 192.168.2.6
==修改一下权限和属主属组:
# chown root:named /var/named/daisy.com.zone
# chmod 640 /var/named/daisy.com.zone
4)、检查主配置文件和区域数据文件有没有语法错误
# named-checkconf #这个是检查主配置文件语法的
# named-checkzone "daisy.com" /var/named/daisy.com.zone #这个是检查区域数据文件语法的、指定区域和指定文件
zone daisy.com/IN: loaded serial 4039774385
OK
# service named configtest #即检查区域、又检查主配置文件的
# service named start|restart|stop #启动服务
[[email protected] named]# dig -t NS daisy.com @192.168.2.5 #检查解析 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> -t NS daisy.com @192.168.2.5 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15587 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 #标志aa(authority answer)权威答案 ;; QUESTION SECTION: ;daisy.com.INNS ;; ANSWER SECTION: daisy.com.43200INNSns.daisy.com. ;; ADDITIONAL SECTION: ns.daisy.com.43200INA192.168.2.5 ;; Query time: 24 msec ;; SERVER: 192.168.2.5#53(192.168.2.5) ;; WHEN: Sat Aug 27 16:35:27 2016 ;; MSG SIZE rcvd: 60
3.2、实战DNS反向解析
1)、编辑named.rfc1912.zones添加域2.168.192.in-addr.arpa区域管理
zone "2.168.192.in-addr.arpa" IN {
type master;
file "192.168.2.zone";
};
2)、添加资源记录,创建文件/var/named/192.168.2.zone,并修改过权限和属主属组
注意:上面的正向解析A记录,反向解析要有相应的的PTR记录
$TTL 43200 @ 86400 IN SOA ns.daisy.com. admin.daisy.com. ( 201608270001 1h 5m 7d 1d ) IN NS ns.daisy.com. # NS记录是必须的 IN MX 10 mail1.daisy.com. IN MX 20 mail2.daisy.com. 5 IN PTR ns.daisy.com. 6 IN PTR www.daisy.com. 6 IN PTR mail1.daisy.com. 6 IN PTR mail2.daisy.com.
注意:正向cname不用反向解析
==修改一下权限和属主属组:
# chown root:named /var/named/192.168.2.zone
# chmod 640 /var/named/192.168.2.zone
3)、改一下NDS服务器的指向192.168.2.5、域名和查询都指向daisy.com、编辑/etc/resolv.conf,重启服务named。
domain daisy.com
search daisy.com
nameserver 192.168.2.5
# named-checkzone "2.168.192.in-addr.arpa" 192.168.2.zone #检查zone区域
zone 2.168.192.in-addr.arpa/IN: loaded serial 1
OK
#service named restart
[[email protected] named]# dig -x 192.168.2.5 @192.168.2.5 #检查解析 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> -x 192.168.2.5 @192.168.2.5 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43842 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 1 ;; QUESTION SECTION: ;5.2.168.192.in-addr.arpa.INPTR ;; ANSWER SECTION: 5.2.168.192.in-addr.arpa. 86400 INPTRns.daisy.com. ;; AUTHORITY SECTION: 2.168.192.in-addr.arpa.86400INNSns.daisy.com. ;; ADDITIONAL SECTION: ns.daisy.com.86400INA192.168.2.5 ;; Query time: 1 msec ;; SERVER: 192.168.2.5#53(192.168.2.5) ;; WHEN: Sat May 14 13:26:12 2016 ;; MSG SIZE rcvd: 125
3.3、实战DNS主从服务器
这里假定node2主机(192.168.2.6)DNS从服务器
1)、node1节点主DNS服务器,/var/named/daisy.com.zone正向解析zone添加多一条备用NS、A资源记录如下:
$TTL 43200 @ 86400 IN SOA ns.daisy.com. admin.daisy.com. ( 201608270001 1h 5m 7d 1d ) @ IN NS ns.daisy.com. IN NS ns1.daisy.com. #新添加NS记录 IN MX 10 mail1.daisy.com. IN MX 20 mail2 ns IN A 192.168.2.5 ns1 IN A 192.168.2.6 #新增A记录 www IN A 192.168.2.6 webmail IN CNAME mail2 mail1.daisy.com. IN A 192.168.2.6 mail2.daisy.com. IN A 192.168.2.6
注:node1节点主DNS服务器,/var/named/192.168.2.zone反向解析zone添加多一条备用NS、PTR资源记录如下:
$TTL 43200 @ 86400 IN SOA ns.daisy.com. admin.daisy.com. ( 201608270001 1h 5m 7d 1d ) IN NS ns.daisy.com. IN NS ns1.daisy.com. #新增NS记录 IN MX 10 mail1.daisy.com. IN MX 20 mail2.daisy.com. 5 IN PTR ns.daisy.com. 6 IN PTR ns1.daisy.com. #新增PTR记录 6 IN PTR www.daisy.com. 6 IN PTR mail1.daisy.com. 6 IN PTR mail2.daisy.com.
2)、node2服务器安装Bind、修改/etc/named.conf配置(同node1操作),编辑/etc/named.rfc1912.zones解析库新增如下:
zone "daisy.com" IN {
type slave; #slave 配置为从服务器
masters { 192.168.2.5; }; #需要同步主dns服务器IP
file "slaves/daisy.com.zone"; #默认保存在/var/named/salves文件中
};
#service named start #启动服务
注:这里只配置正向从DNS服务器
3)、检查同步
[[email protected] named]# rndc reload #同步载入
server reload successful
[[email protected] named]# cd slaves/
[[email protected] slaves]# cat daisy.com.zone #查看/var/named/salves/daisy.com.zone文件,是否正常同步了daisy.com.zone正向解析库
$ORIGIN . $TTL 43200 @ 86400 IN SOA ns.daisy.com. admin.daisy.com. ( 201608270001 1h 5m 7d 1d ) @ IN NS ns.daisy.com. IN NS ns1.daisy.com. IN MX 10 mail1.daisy.com. IN MX 20 mail2 ns IN A 192.168.2.5 ns1 IN A 192.168.2.6 www IN A 192.168.2.6 webmail IN CNAME mail2 mail1.daisy.com. IN A 192.168.2.6 mail2.daisy.com. IN A 192.168.2.6
测试主DNS修改增加记录,是否及时同步到从DNS服务器
注意:序列必须增加1
==node1增加1条A记录,并且使用rndc reload(同步载入) 如下:
$TTL 43200 @ 86400 IN SOA ns.daisy.com. admin.daisy.com. ( 201608270002 #修改序列号 1h 5m 7d 1d ) @ IN NS ns.daisy.com. IN NS ns1.daisy.com. IN MX 10 mail1.daisy.com. IN MX 20 mail2 ns IN A 192.168.2.5 ns1 IN A 192.168.2.6 www IN A 192.168.2.6 webmail IN CNAME mail2 mail1.daisy.com. IN A 192.168.2.6 mail2.daisy.com. IN A 192.168.2.6 * IN A 192.168.2.5 #新增A记录泛解析
==再次查看/var/named/salves/daisy.com.zone文件,是否正常同步新增记录
$ORIGIN . $TTL 43200 @ 86400 IN SOA ns.daisy.com. admin.daisy.com. ( 201608270002 1h 5m 7d 1d ) @ IN NS ns.daisy.com. IN NS ns1.daisy.com. * IN A 192.168.2.5 #新同步的A记录 IN MX 10 mail1.daisy.com. IN MX 20 mail2 ns IN A 192.168.2.5 ns1 IN A 192.168.2.6 www IN A 192.168.2.6 webmail IN CNAME mail2 mail1.daisy.com. IN A 192.168.2.6 mail2.daisy.com. IN A 192.168.2.6
注:反向解析从DNS服务器,类似正向解析从DNS服务这里不再做演示。