在局域网无公网环境下,可用BIND9自建corp等自定义顶级域实现内网权威解析,无需注册或上级授权;需配置zone为master类型、禁用递归与区域传输,并确保SOA和NS记录一致,客户端直连该DNS服务器即可。
在局域网无公网环境下,用 BIND9 实现企业内部自定义顶级域(如 corp、lan 或 internal)的解析,核心是绕开公共 DNS 层级体系,完全自主控制区域权威解析。这不需要注册、不依赖根服务器或 .com/.cn 等上级授权,只需让内网客户端信任你部署的 BIND9 服务器作为该顶级域的唯一权威源。
自定义顶级域(如 corp)本质是一个“根下直连域”,BIND 将其视为普通正向主区域,但需注意:
• 不要使用已存在的公共 TLD(如 .dev、.local 已被 IANA 预留或浏览器特殊处理),推荐用 .corp、.lan、.intra 或企业缩写如 .tencent;
• 所有子域名(如 web.corp、db.corp、printer.lan)均由你配置的 zone 文件统一管理;
• 客户端必须将 DNS 查询直接发往你的 BIND9 服务器(即设为首选 DNS),不能经由递归服务器中转(否则会因无上游而失败)。
在 /etc/bind/named.conf.local 中添加如下内容(以 corp 为例):
zone "corp" {
type master;
file "/etc/bind/zones/db.corp";
allow-transfer { none; }; # 内网单主场景,禁用区域传输更安全
};
关键点:
• zone 名写成 "corp"(不带尾点),表示这是一个顶级域;
• type master 表明这是该域的权威主服务器;
• allow-transfer 设为 { none; } 可省略从服务器同步逻辑,简化部署;
• 若后续扩展高可用,再配辅助服务器并开放 transfer 权限。
创建 /etc/bind/zones/db.corp,内容示例:
$TTL 3600
@ IN SOA ns1.corp. admin.corp. (
2026072101 ; serial
3600 ; refresh
600 ; retry
86400 ; expire
3600 ; minimum
)
IN NS ns1.corp.
ns1 IN A 192.168.10.5
web IN A 192.168.10.10
db IN A 192.168.10.11
mail IN A 192.168.10.12
* IN A 192.168.10.100 ; 泛解析(可选)
说明:
• SOA 中的 MNAME(ns1.corp.)必须是该域内一个真实可解析的 NS 主机名;
• 必须有一条 NS 记录 指向该 MNAME,且对应 A 记录存在(即 ns1.corp. → 192.168.10.5);
• 所有主机名(web、db 等)默认属于 corp 域,无需写全限定名(FQDN),BIND 自动补后缀;
• 泛解析 * IN A 可让未显式定义的子域名也返回指定 IP,适合测试或统一网关场景。
编辑 /etc/bind/named.conf.options,关键配置:
options {
directory "/var/cache/bind";
listen-on { 192.168.10.5; }; # 仅监听内网 IP,不监听 0.0.0.0
listen-on-v6 { none; };
recursion no; # 权威服务器必须禁用递归
allow-query { 192.168.10.0/24; }; # 仅允许内网段查询
dnssec-validation auto;
};
重启服务并验证:
• sudo systemctl restart bind9
• dig @192.168.10.5 web.corp A +short 应返回 192.168.10.10
• dig @192.168.10.5 ns1.corp A +short 应返回 192.168.10.5
• dig @192.168.10.5 corp NS +short 应返回 ns1.corp.