CentOS 从零搭建 BIND DNS 服务器指南
一 环境准备与安装
yum install -y bind bind-utilsyum install -y bind bind-chroot bind-utilssystemctl start named && systemctl enable namedsystemctl start named-chroot && systemctl enable named-chrootfirewall-cmd --add-service=dns --permanent && firewall-cmd --reloadfirewall-cmd --add-port=53/udp --permanent && firewall-cmd --add-port=53/tcp --permanent && firewall-cmd --reload二 主配置文件与区域声明
listen-on port 53 { any; };(监听所有 IPv4)listen-on-v6 port 53 { ::1; };(按需开启 IPv6)directory "/var/named";(区域文件目录)allow-query { any; };(允许查询来源,生产环境请改为内网网段)recursion yes;(作为缓存/转发器时开启;纯权威可关闭)zone "example.com" IN {
type master;
file "example.com.zone";
allow-update { none; };
};
zone "180.168.192.in-addr.arpa" IN {
type master;
file "example.com.arpa";
allow-update { none; };
};
named-checkconf /etc/named.conf,无输出即正常。三 区域文件与常见记录
cd /var/namedcp -p named.empty example.com.zonecp -p named.empty example.com.arpa$TTL 86400
@ IN SOA ns.example.com. admin.example.com. (
2024100801 ; Serial(每次修改递增)
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ; Negative Cache TTL
)
IN NS ns.example.com.
IN MX 10 mail.example.com.
ns IN A 192.168.180.188
www IN A 192.168.180.189
mail IN A 192.168.180.190
ftp IN CNAME www.example.com.
$TTL 86400
@ IN SOA ns.example.com. admin.example.com. (
2024100801
3600
1800
604800
86400
)
IN NS ns.example.com.
188 IN PTR ns.example.com.
189 IN PTR www.example.com.
190 IN PTR mail.example.com.
cd 到对应目录再改):
chown root:named example.com.zone example.com.arpachmod 644 example.com.zone example.com.arpanamed-checkzone example.com /var/named/example.com.zonenamed-checkzone 180.168.192.in-addr.arpa /var/named/example.com.arpans.example.com.),否则会被自动补全当前域导致错误。四 本机与客户端测试
echo "nameserver 127.0.0.1" > /etc/resolv.confecho -e "[main]\ndns=none" >> /etc/NetworkManager/NetworkManager.conf && systemctl restart NetworkManagerecho "DNS1=192.168.180.188" >> /etc/sysconfig/network-scripts/ifcfg-ens33 && systemctl restart NetworkManagersystemctl restart namedsystemctl restart named-chrootdig @localhost www.example.com +short(应返回 192.168.180.189)dig @localhost -x 192.168.180.188 +short(应返回 ns.example.com.)nslookup www.example.com、nslookup 192.168.180.188nameserver 指向 192.168.180.188 后执行上述 dig/nslookup。五 进阶与安全建议
named.rfc1912.zones 为主域添加 allow-transfer { <从服务器IP>; };type slave; file "slaves/example.com.zone"; masters { <主服务器IP>; };,启动后自动从主同步。options 中配置 forwarders { 223.5.5.5; 8.8.8.8; }; recursion yes; 并关闭或限制 allow-query 为内网。allow-query { 192.168.180.0/24; };allow-transfer { <从IP>; };dnssec-enable yes; dnssec-validation yes;(按需)。bind-chroot 时,主配置与区域文件位于 /var/named/chroot/,注意 named-checkconf/named-checkzone 与 chown/chmod 的路径一致性。systemctl status named -l、journalctl -xe 查看详细错误。named-checkconf、named-checkzone。root:named 且权限 644。setsebool -P named_write_master_zones on(视环境而定)。