内网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

浙公网安备 33010602011771号