Bind(Berkeley Internet Name Domain)是一款开源的DNS服务器软件,由美国加州大学Berkeley分校开发,目前由Internet Systems Consortium组织来维护。它是目前世界上使用最为广泛的DNS服务器软件,支持各种类Unix平台和Windows平台。
搭建环境:CentOS 7、Bind-9.9.4
1、安装Bind软件包及其依赖
# yum install bind bind-libs bind-utils
2、Bind配置文件详解
// named.conf
options {
listen-on port 53 { 127.0.0.1; 192.168.1.108; }; //定义DNS监听在哪个IP的特定端口上
listen-on-v6 port 53 { ::1; }; //针对IPv6的DNS监听定义格式
directory "/var/named"; //指定DNS区域文件存放目录
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; 192.168.1.100; }; //定义允许哪些主机可以查询本地的DNS服务
recursion yes; //定义是否允许DNS服务器做递归查询
notify yes; //DNS服务器采用主从模式时,定义是否当主服务器区域文件发生改变,通知从服务器更新
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN { //根域的区域文件属性配置
type hint; //定义此区域文件的类型[master|slave|hint|forward]
file "named.ca"; //相对directory "/var/named/"目录的文件,为根域的区域文件
};
include "/etc/named.rfc1912.zones"; //为保持主配置文件简洁,将部分配置信息存放于别处,在主配置文件中调用
include "/etc/named.root.key";
include "/etc/named/luochuanhai.cn"; //此为博主私有域的配置文件
3、Bind区域文件详解
以下是luochuanhai.cn域正向解析的区域文件。
$TTL 1D ;被缓存的肯定回答的存活时间
@ IN SOA @ admin.luochuanhai.cn. ( 6 ;此区域文件的版本号,用于主从同步
1D ;DNS从服务器区域文件记录刷新时间
1H ;若DNS从服务器更新失败,下次尝试时间
1W ;若DNS从服务器更新失败,原有数据的过期时间
3H ) ;被缓存的否定回答的存活时间
@ IN NS ns1 ;标识区域的DNS服务器及其授权子域
@ IN NS ns2
ns1 IN A 192.168.1.108 ;主机名及其对应的IP地址
ns2 IN A 192.168.1.100
www IN A 192.168.1.163
ftp IN A 192.168.1.163
www1 CNAME www ;用于标识www1.luochuanhai.cn是www.luochuanhai.cn主机的别名
4、域正向解析测试
# service named start
# dig -t A www.luochuanhai.cn @127.0.0.1 //正向解析私有域地址

# dig -t A www.sohu.com @127.0.0.1 //正向解析外网地址

如果想让别的主机使用本地的DNS服务,请务必让本地DNS服务器监听在能和其它主机联通的IP上。其它主机使用dig命令时,用@指向本地提供DNS服务的主机IP地址。如果存在连接超时或者找不到DNS服务器,那可能是DNS服务器所在主机防火墙过滤了请求。在提供DNS服务的主机上键入以下命令便可解决问题。
# iptalbes -I INPUT 1 -s 远程主机IP -d 本地主机IP -p tcp --dport 53 -j ACCEPT
# iptalbes -I INPUT 1 -s 远程主机IP -d 本地主机IP -p udp --dport 53 -j ACCEPT
# iptalbes -I OUTPUT 1 -s 本地主机IP -d 远程主机IP -p tcp --dport 53 -j ACCEPT
# iptalbes -I OUTPUT 1 -s 本地主机IP -d 远程主机IP -p udp --dport 53 -j ACCEPT
5、DNS主从复制及区域传送
以下是博主在主服务器上定义的私有域luochuanhai.cn配置文件。
zone "luochuanhai.cn" IN { //luochuanhai.cn域的区域文件属性配置
type master; //指定本机为DNS主从结构中的主服务器
file "luochuanhai.cn.zone";
allow-update {none; };
allow-transfer { 192.168.1.100; }; //指定允许区域传送的从服务器IP地址
};
以下是博主在从服务器上定义的私有域luochuanhai.cn配置文件(记得要被include到主配置文件)。
zone "luochuanhai.cn" IN {
type slave; //指定本机为DNS主从结构中的从服务器
file "slaves/luochuanhai.cn.zone"; //指定从主服务器同步来的区域文件的存放位置
masters { 192.168.1.108; }; //指定主服务器的IP地址
allow-transfer { none; }; //指定禁止区域传送
};
此后在主从服务器都启用named服务,即可进行主从完全区域传送。
但是,博主在实做过程中遇到了一个问题,从服务器无法进行增量区域传送。在主服务器上修改luochuanhai.cn.zone区域文件,并将版本号加1,再让主服务器重新加载配置文件。主服务器确实有通知从服务器区域文件更新,但是从服务器仍无法自动更新。
从服务器中,保留初始启动服务时同步过来的区域文件。重启从服务器的named服务,无法同步。
从服务器中,删除初始启动服务时同步过来的区域文件。重启从服务器的named服务,便可同步更新。
经博主仔细分析后,发现是自己忘记让从服务器监听在主服务器可以联通的IP上。以至于,尽管主服务器发送更新通知,从服务器无法自主完成增量区域传送( ▼-▼ )。
6、DNS服务器管理工具rndc
To be continued.
7、DNS子域授权
在父域luochuanhai.cn的DNS服务器区域文件中追加以下两行更新,以授权子域life.luochuanhai.cn。
life IN NS ns1.life
ns1.life IN A 192.168.1.118
以下是子域life.luochuanhai.cn的DNS服务器上定义的配置文件(记得要被include到主配置文件。且让子域DNS服务器监听在父域DNS服务器能够与之联通的IP地址上,且允许父域DNS服务器访问子域的DNS服务)。
zone "life.luochuanhai.cn" IN {
type master;
file "life.luochuanhai.cn.zone";
};
以下是子域life.luochuanhai.cn的正向解析区域文件。
$TTL 1D
@ IN SOA @ admin.life.luochuanhai.cn. ( 18
2H
1H
1W
3H )
@ IN NS ns1
ns1 IN A 192.168.1.118
www IN A 192.168.1.119
ftp IN A 192.168.1.119
测试子域life.luochuanhai.cn的正向解析。
# dig -t A www.life.luochuanhai.cn @192.168.1.117 //通过父域DNS服务器解析子域地址

# dig -t A www.life.luochuanhai.cn @192.168.1.118 //通过子域DNS服务器解析子域地址

如果想让子域DNS服务器不通过根域来解析父域的主机地址,则可在子域DNS服务器中启用转发功能。在子域配置文件中加入以下配置:
zone "luochuanhai.cn" IN {
type forward; //指定此域为转发类型
forward first; //如果父域不代为解析转发的查询,则自行通过根域解析查询[first|only]
forwarders { 192.168.1.117; }; //指定接收转发请求的DNS服务器IP地址
};
8、DNS视图
To be continued.
9、DNS日志系统
To be continued.
如果想深入了解Bind配置,可以参考以下文档:
网友评论