内网DNS搭建-bind9

基础环境

操作系统:ubuntu 22.04

安装bind9

sudo apt update
sudo apt install bind9 bind9utils bind9-doc -y


配置文件详解

🧩 主配置片段(在 /etc/bind/ 下)

这些文件通过 include 语句被主配置文件 named.conf 引用,共同构成完整的 BIND 配置。

文件名 作用
named.conf BIND 的主配置文件。它本身通常只包含几个 include 行,用于引入其他配置文件片段。你可以把它看作是配置的入口。
named.conf.options 全局选项配置文件。这里设置 BIND 的全局行为,例如监听哪些 IP 地址和端口(listen-on)、允许哪些客户端查询(allow-query)、是否开启递归(recursion)、指定转发器(forwarders)、DNSSEC 设置等。修改选项时主要编辑此文件。
named.conf.local 本地区域配置文件。用于定义你自己添加的 DNS 区域(zone)。例如,当你需要为你的域名 example.com 添加权威解析时,就会在这个文件中添加相应的 zone 语句。
named.conf.default-zones 默认区域配置文件。由 Debian/Ubuntu 的 BIND 软件包提供,它定义了系统正常运行所需的基本区域,如 localhost、127.in-addr.arpa 等。通常不需要也不应该修改此文件。
bind.keys DNSSEC 信任锚文件。包含用于验证 DNSKEY 记录的初始信任锚(trust anchors)。它由软件包维护,一般情况下无需手动修改,但如果你需要自定义 DNSSEC 信任链,可以在此调整(不推荐)。

📁 区域数据文件(也在 /etc/bind/ 下)

这些文件是 DNS 区域的实际数据文件,存储了具体的域名和 IP 地址映射记录。

文件名 作用
db.local 本地主机正向解析区域文件。定义了 localhost. 这个域名对应的 IPv4 地址(127.0.0.1)和 IPv6 地址(::1)。
db.127 本地回环反向解析区域文件。为 127.0.0.0/8 网络提供反向解析(PTR 记录),通常只包含一条记录将 1.0.0.127.in-addr.arpa 指向 localhost.。
db.0 0.0.0.0/8 网络的反向解析区域文件。此网络通常用于特殊用途(如“本网络”),该文件中一般只有一条记录,将 0.0.0.0 的反向指向 localhost. 或留空。
db.255 255.0.0.0/8 网络的反向解析区域文件。用于广播地址的反向查询,通常也只有一个指向 localhost. 的 PTR 记录,或者为空白。
db.empty 空的区域文件。它是一个占位文件,在默认配置中用于某些不需要解析数据的区域。内容通常只有 SOA 和 NS 记录,没有任何实际的主机记录。
zones.rfc1918 私有地址反向区域声明文件。该文件包含了 RFC 1918 定义的私有 IPv4 地址段(如 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)的反向解析区域定义(zone 语句)。它被 named.conf.default-zones 引用,使 BIND 能够为这些私有地址提供反向查询(但实际数据通常为空)。

配置修改

named.conf.options

options {
	directory "/var/cache/bind";
	allow-query { 10.0.0.0/8; };				# 允许访问的ip地址
	recursion yes;								# 是否允许递归查询,如果要解析外网地址此项必须为yes
	// If there is a firewall between you and nameservers you want
	// to talk to, you may need to fix the firewall to allow multiple
	// ports to talk.  See http://www.kb.cert.org/vuls/id/800113

	// If your ISP provided one or more IP addresses for stable 
	// nameservers, you probably want to use them as forwarders.  
	// Uncomment the following block, and insert the addresses replacing 
	// the all-0's placeholder.

	forwarders {								# 上游服务器的地址,可以设置多个
	 	223.5.5.5;
	};

	//========================================================================
	// If BIND logs error messages about the root key being expired,
	// you will need to update your keys.  See https://www.isc.org/bind-keys
	//========================================================================
	dnssec-validation auto;

	listen-on-v6 { any; };
};

named.conf.local

zone "tqsys.cn" {
    type master;		# 主dns
    file "/etc/bind/db.tqsys.cn";		# 定义dns解析文件存放地址
};



db.tqsys.cn

;
; BIND data file for tqsys.cn
;
$TTL    604800																	# time to live,默认生存时间 7天
@       IN      SOA     ns1.tqsys.cn. admin.tqsys.cn. (							# 主域名服务器,及管理员邮箱  @代表当前域名及tqsys.cn
                     2024031601         ; Serial (格式:YYYYMMDDNN)			  # 序列号。用于辅助 DNS 服务器判断区域数据是否更新。通常采用 YYYYMMDDNN 格式(年-月-日-修改次数),每次修改区域文件后必须增大该数字,否则从服务器不会同步。
                        604800         ; Refresh								# 刷新间隔,从服务器每隔这个时间(秒)向主服务器查询区域是否有更新
                         86400         ; Retry									# 重试间隔。如果从服务器在刷新时联系不上主服务器,它会每隔这个时间(秒)重试一次
                       2419200         ; Expire									# 过期时间。如果从服务器连续 Expire 秒(此处 28 天)无法联系主服务器,它将丢弃该区域数据,不再提供权威应答,因为数据可能已过时。
                        604800 )       ; Negative Cache TTL						# 否定缓存 TTL。其他 DNS 服务器对于该域中不存在的记录(NXDOMAIN 或 NODATA)的否定应答缓存时间。这里也是 7 天。
;
@       IN      NS      ns1.tqsys.cn.											# 指定该域名的权威域名服务器,这里声明ns1.tqsys.cn是tqsys.cn的权威域名
@       IN      A       10.2.8.20												# 将tqsys.cn本身解析到10.2.8.20					ns1     IN      A       10.2.8.20												# 将ns1.tqsys.cn解析到10.2.8.20
www     IN      A       10.2.8.20												# 将www.tqsys.cn解析到10.2.8.20
aa	IN      A       10.7.8.99													# 将aa.tqsys.cn解析到10.7.8.99



检查配置并启动服务

sudo named-checkconf   # 检查主配置语法
sudo named-checkzone tqsys.cn /etc/bind/db.tqsys.cn # 检查区域文件
sudo systemctl start named
sudo systemctl enable named # 设置开机自启


sudo systemctl reload named			# 重新加载配置
sudo systemctl restart named		# 重启named


测试验证域名解析是否生效

# 使用dig命令(Linux)
dig @10.2.8.20 www.tqsys.cn

# 或使用nslookup命令(Windows/Linux)
nslookup www.example.com 10.2.8.20

posted @ 2026-03-17 09:17  李成敏  阅读(82)  评论(0)    收藏  举报