/etc/named.conf
options { ?????????????//Option 段全部配置
??listen-on port 53 { 127.0.0.1; };//表示BIND将在53端口监听,若需要对所有IP进行监听,则修改为// listen-on port 53 { any; };
directory ??????"/var/named";//工作目录。
dump-file ??????"/var/named/data/cache_dump.db";//缓存转储位置,需要配合rndc命令。
statistics-file "/var/named/data/named_stats.txt";//记录统计信息的文件,需要配合rndc命令。
?emstatistics-file "/var/named/data/named_mem_stats.txt";//记录内存使用的统计信息。
allow-query ????{ localhost; };//允许查询的主机,默认只允许本机查询若需要允许所有客户机查询,则修改为// allow-query { any; };
recursion yes;//允许递归查询。
notify?yes;//区域数据文件更新发送通知。
querylog ?yes //启用日志
forwarders? ???{ 192.168.1.1; };?// 如果域名服务器无法解析时,将请求交由168.95.1.1; 192.168.1.1来解析
?allow-transfer { none; };?//指定允许接受区域传送请求的主机,比如辅dns的ip是192.168.1.2,那么可以这样定义{ 192.168.1.2; },要不然主辅dns不能同步,当然,{}里的也可以用下面提到的acl。dnssec-enable yes;?//是否支持DNSSEC开关,默认为yes。
dnssec-validation yes;?// ?是否进行DNSSEC确认开关,默认为no。
dnssec-lookaside auto;// 当设置dnssec-lookaside,它为验证器提供另外一个能在网络区域的顶层验证DNSKEY的方法。
bindkeys-file "/etc/named.iscdlv.key";??//该文件中保存了ISC DNSSEC的后备验证密钥,该文件用来代替DS集。
};
logging {//Loging段
channel default_debug {
file "data/named.run";//记录了一些named的信息,如监听/解析记录等。它的位置在/var/named /var/named/data下。
severity dynamic;??//输出日志级别
};
};
zone "." IN {
type hint;//type只有3种参数:hint/master/slave.只有"."对应的type为hint,其它zone的类型只能为master或slave,即DNS主机和DNS从机。
file "named.ca";//指定了root解析文件的位置,解析文件中记录着域名与IP的对应关系。它的位置在/var/named /var/named/data下。
};
include "/etc/named.rfc1912.zones";//解析文件列表的位置
include "/etc/named.root.key"; //根区域的key文件,与事务签名相关。
// 这里定义一个acl列表
acl "acl1" {
? ?? ???192.168.139.0/200; 192.168.1.0/200?
};
view localhost_resolver {?//定义一个视图
? ?? ???match-clients? ?? ?{ any; };?//查询者的源地址,any表示localhost_resolver视图对任何主机开放,如果写成{ acl1; },那么就只有acl1表里的ip可以递归查询了
? ?? ???match-destinations { any; };?//查询者的目标地址,这里也可以写成{ localhost; acl1; }}
在默认情况下,BIND把日志消息写到/var/log/messages文件中,而这些日志消息是非常少的,主要就是启动,关闭的日志记录和一些严重错误的消息,所以要详细记录服务器的运行状况,需要自己配置服务器的日志行为。也就是要在配置文件named.conf中使用logging语句来定制自己所需要的日志记录,logging语句的语法为:
logging {
?????????channel ; {
?????????????????file ;;
?????????????????syslog ;;
?????????????????null;
?????????????????stderr;
?????????????????severity ;;
?????????????????print-time ;;
?????????????????print-severity ;;
?????????????????print-category ;;
????????};
????????category ; { ;; ... };
};
在日志中主要有两个概念:通道(channel)和类别(category)。通道指定了应该向哪里发送日志数据:是发送给syslog,还是写在一个文件里,或是发送给named的标准错误输出。类别则规定了哪些数据需要记录。
启用DNS日志:
日志通道输出级别:
critical
error
warning
notice
info
debug [ level ]
dynamic
category日志源:
default: 默认分类,没有分类的日志都使用这个分类的配置.
general: 没有分类的日志都记录在此分类中.
database: 服务器内部使用存储zone和缓存数据.
security: 允许/拒绝的请求.
config: 配置文件分析和处理.
resolver: DNS解析,被dns缓存服务器进行递归查询.
xfer-in: 接收区域传输.
xfer-out: 发送区域传输.
notify: NOTIFY协议.
client: 客户端请求进程.
unmatched: 未匹配的查询.
network: 网络操作.
update: 动态更新.
update-security: 允许/拒绝更新请求.
queries: 客户端队列日志.
dispatch: 数据包传送日志.
dnssec: DNSSEC和TSIG协议处理.
lame-servers: 远端的配置错误的服务器发送的请求.
delegation-only: NXDOMAIN的结果将被强制定义到delegation-only区域.
需要注意的是,一个日志类别产生的多个不同类别的信息可以发往不同的位置,但每一个位置只能保存来自于一个category的信息(一个category可以被定向到多个channel,但一个channel只能属于一个category)。
举例:
在/var/log/下新建一个文件夹bind用于记录查询日志。
(1)一个FQDN可对应同多个IP;(负载均衡)?
(2)多个FQDN可对应一个IP:(一台主机有多个名称,且可以用CNAME定义)。
(3)使用相关命令(named-checkconf、named-checkzone)测试配置文件及区域文件是否存在语法错误。
(4)确保主配置文件和各区域解析库文件的权限为640,属主为root,属组为named;
?vim /etc/named.conf
同样可以自定义文件zone文件位置,自定义区域文件路径需要修改相应文件权限。
chgrp??named ?/etc/named.rfc1912.zones
zone "ZONE_NAME" IN {
type {master|slave|hint|forward};
file "ZONE_NAME.zone";
};
“ZONE_NAME.zone”文件默认路径在"/var/named",工作目录。为了后期维护方便可以自定义解析库文件路径,同样需要修改文件权限。
chgrp??-R??named??test/
$ORIGIN test1.com.???//宏定义
@ IN SOA ns1.?test1.com. test.test1.org (
2015042201
1H
5M
7D
1D )
IN ?NS ??ns1
IN ?MX 10 mx1
ns1 IN ?A 192.168.100.11
mx1 IN ?A 192.168.100.13
webapp??IN??A 192.168.100.100
主配置文件语法检查:
named-checkconf
解析库文件语法检查:
named-checkzone "?ZONE_NAME"?/var/named/test1.com.zone
?rndc reload?或者
systemctl reload named
正向解析与反向解析各自采用不同的解析库,一台DNS服务器可以只有正向解析库或只有反向解析库,也可以同时提供正向/反向解析。
反向区域的区域名称格式:
地址反写.in-addr.arpa
例如:假设网络地址为172.16.100.1 那么规则命名为100.16.172.in-addr.arpa
这里我本地的内网IP为192.168.1.0, 所以则写成1.168.192.in-addr.arpa
zone "?ReverseIP.in-addr.arpa " IN {
type {master|slave|forward};
file "网络地址.zone"
};
?
?