该文档围绕BIND 9的配置与区域文件展开,介绍了BIND 9配置文件及区域文件的相关知识,以及权威名称服务器、解析器的相关内容,还阐述了负载均衡和区域文件的详细知识,具体如下:
- 基础配置文件:
named.conf
:BIND 9使用named.conf
作为主要配置文件,通常位于/etc/namedb
或/usr/local/etc/namedb
。若使用rndc
,本地使用时rndc.conf
文件可选,远程使用时必须存在。- 示例文件格式:以
example.com
为例展示配置文件和区域文件标准格式。named.conf
基础文件含options
块(设置服务器全局属性如工作目录、版本)和logging
块(配置日志记录);example.com
基础区域文件是正向映射文件,含多种资源记录(RR),如SOA
(定义区域关键特征)、NS
(指定域名服务器)、MX
(定义邮件服务器及优先级)、A
(映射域名到IPv4地址)、CNAME
(设置别名)等。
localhost
相关区域文件:localhost
区域文件:hosts
文件常将localhost
映射到环回地址,虽正向映射区域文件localhost-forward.db
非必需,但出于安全(hosts
文件可能受攻击)、系统查找顺序(nsswitch.conf
控制)和避免影响DNS性能(减少localhost
不必要查询)等原因,BIND 9配置示例常使用它,该文件提供IPv4和IPv6的localhost
解析。localhost
反向映射区域文件:localhost.rev
文件防止对环回IP(127.0.0.1)的不必要查询到达公共DNS层次结构。
- 权威名称服务器:
- 类型及数据获取方式:分为主权威和辅助权威名称服务器,主权威从文件系统读取区域数据,辅助权威通过区域传输(
AXFR
完全传输或IXFR
增量传输,需双方支持)从主区域获取数据。 - 区域传输过程:辅助服务器定期读取主服务器
SOA
记录,比较序列号,若主服务器序列号更新则发起区域传输;主服务器加载或重新加载区域时可发NOTIFY
消息(默认自动配置)通知辅助服务器,辅助服务器收到后立即读取SOA
记录,有变化时能快速更新。 - 配置示例:主权威
named.conf
文件设置allow-query
(允许查询的IP)、allow-query-cache
(禁止查询缓存内容)、recursion
(不提供递归服务)等,定义各区域(localhost
、0.0.127.in-addr.arpa
、example.com
)的类型、文件路径、通知及传输设置;辅助权威named.conf
文件类似设置,example.com
区域设置为type secondary
,指定保存传输数据的文件和主服务器IP。
- 类型及数据获取方式:分为主权威和辅助权威名称服务器,主权威从文件系统读取区域数据,辅助权威通过区域传输(
- 解析器(缓存名称服务器):
- 功能原理:处理递归用户查询,向DNS层次结构发迭代查询获取答案并缓存,缓存到期后重新查询。
- 转发解析器优点:减少流量(降低成本、提高性能)、便于网络维护(集中管理远程名称服务器更改)、筛选流量(如区分内外网流量)、用于隐蔽或分割网络。
- 额外区域文件:
- 根服务器(提示)区域文件:解析器需
named.root
文件(可从IANA网站获取)了解根服务器地址以访问DNS层次结构,虽BIND 9可在文件异常时工作,但示例包含它以提示功能。 - 私有IP反向映射区域文件:网络常用私有IP,应用反向映射查询时,若无对应反向映射区域文件,解析器会向DNS层次结构发无用查询。可通过标准反向映射技术或
empty-zones-enable
语句(默认开启,返回NXDOMAIN
错误响应)处理,部分应用(如邮件系统)需真实答案则需反向映射区域文件。
- 根服务器(提示)区域文件:解析器需
- 配置示例:
- 解析器:通过
acl
定义允许查询的IP范围,options
设置recursion
开启递归、allow-query
限制查询IP、empty-zones-enable
防止私有IP反向映射查询发往公共网络,配置各区域(根服务器、localhost
正向、环回地址反向、私有IP反向)文件。 - 转发解析器:除特定区域和已缓存答案的查询外,将递归查询转发到指定全功能解析器并缓存响应,通过
forwarders
指定转发目标,forward only
表示仅转发未定义区域查询。 - 选择性转发解析器:仅将
example.com
区域递归查询转发到指定解析器,其他查询本地处理,example.com
区域设置type forward
,forwarders
指定目标和forward only
选项。
- 解析器:通过
- 负载均衡:在区域文件中用多个资源记录(如多个A记录)实现简单负载均衡,解析器查询时BIND随机排序返回记录,客户端多使用第一个记录。
- 区域文件:
- 资源记录组成:由所有者名称、RR类型、TTL、类和RDATA组成。当前有效类有
IN
(常用)、CH
(用于BIND内置服务器信息区域)、HS
(曾用于共享系统数据库信息)。 - 文本表达:RR在DNS协议包中为二进制,存储时高度编码,示例采用类似主文件格式展示,每行开头为所有者名称(空则同前一RR),接着是TTL、类型、类(
IN
类和TTL常省略)和RDATA。 - MX记录:控制邮件传递,数据含优先级和域名,优先级决定传递顺序,域名需有相关地址记录(A或AAAA),不能是CNAME,同时存在CNAME和MX记录时,MX记录被忽略。
- 设置TTL:
SOA
最小TTL控制其他服务器缓存NXDOMAIN
响应时间(最大3小时);$TTL
指令在区域文件顶部设默认TTL;每个RR可单独设TTL控制缓存时间,单位默认秒,可显式指定。 - IPv4中的反向映射:通过
in-addr.arpa
域和PTR记录实现反向名称解析,IP地址转换为in-addr.arpa
名称时顺序相反。 - 其他区域文件指令:
@
符号:在标签字段代表当前原点,区域文件开头是<zone_name>
后跟点。$ORIGIN
指令:设置附加到未限定记录的域名,区域读取时有隐式$ORIGIN <zone_name>.
,当前$ORIGIN
会附加到非绝对域名上。$INCLUDE
指令:读取并处理指定文件,文件名可为绝对或相对路径,指定origin
时以其设置$ORIGIN
处理文件,处理后恢复$INCLUDE
前的origin
和当前域名值。$TTL
指令:设置后续未定义TTL记录的默认生存时间,范围0-2147483647秒。
$GENERATE
指令:BIND扩展指令,用于创建仅迭代器不同的资源记录,可指定范围、所有者名称(含$
符号可被迭代器值替换)、TTL、类、类型和RDATA(含$
符号可被替换,有空格时需引号,处理时去除)。- 其他文件格式:BIND 9还支持
raw
格式(区域数据二进制表示,类似区域传输格式,加载快),主服务器raw
格式区域文件需由named-compilezone
命令从文本区域文件生成,辅助服务器或动态区域在区域传输或应用更新后由named
自动生成,手动修改raw
格式文件需先转文本格式,编辑后再转回。
- 资源记录组成:由所有者名称、RR类型、TTL、类和RDATA组成。当前有效类有