#022 · 2025-03-10✓ PASS
DNS 域名解析
在 RHEL 上搭建 BIND DNS 服务器,涵盖正向/反向解析、主从复制、子域委派及安全加固。
DNS(Domain Name System)是互联网的核心基础设施,负责域名到 IP 地址的映射。BIND 是 Linux 上最广泛使用的 DNS 服务器软件。
一、安装与基础配置
# 安装 BIND
dnf install -y bind bind-utils
# 启动服务
systemctl enable --now named
# 防火墙放行 DNS
firewall-cmd --add-service=dns --permanent
firewall-cmd --reload
主配置文件
# /etc/named.conf
options {
listen-on port 53 { any; }; # 监听所有接口
listen-on-v6 port 53 { any; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
allow-query { any; }; # 允许所有来源查询
allow-transfer { 192.168.1.20; }; # 仅允许从服务器传输
recursion yes; # 启用递归查询
dnssec-validation yes; # DNSSEC 验证
};
区域配置
# /etc/named.rfc1912.zones
zone "example.com" IN {
type master;
file "forward.example.com";
allow-update { none; };
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "reverse.example.com";
allow-update { none; };
};
二、正向解析配置
# /var/named/forward.example.com
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2024031501 ; 序列号(YYYYMMDDNN)
3600 ; 刷新间隔
1800 ; 重试间隔
604800 ; 过期时间
86400 ; 最小 TTL
)
; 名称服务器
@ IN NS ns1.example.com.
; A 记录
ns1 IN A 192.168.1.10
www IN A 192.168.1.100
mail IN A 192.168.1.101
; CNAME 别名
ftp IN CNAME www.example.com.
; MX 邮件交换
@ IN MX 10 mail.example.com.
# 设置权限
chown named:named /var/named/forward.example.com
chmod 640 /var/named/forward.example.com
# 检查配置
named-checkconf
named-checkzone example.com /var/named/forward.example.com
# 重载
systemctl reload named
三、反向解析配置
# /var/named/reverse.example.com
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2024031501
3600
1800
604800
86400
)
@ IN NS ns1.example.com.
10 IN PTR ns1.example.com.
100 IN PTR www.example.com.
101 IN PTR mail.example.com.
四、主从复制
主服务器
# /etc/named.conf 添加
allow-transfer { 192.168.1.20; };
notify yes;
also-notify { 192.168.1.20; };
从服务器
# /etc/named.conf
zone "example.com" IN {
type slave;
masters { 192.168.1.10; };
file "slaves/forward.example.com";
};
五、测试验证
# 使用 dig 测试
dig @localhost www.example.com
# 反向查询
dig -x 192.168.1.100
# 查询 MX 记录
dig MX example.com
# 查询 NS 记录
dig NS example.com
# 区域传输测试
dig AXFR example.com @ns1.example.com
# 使用 nslookup
nslookup www.example.com 127.0.0.1
六、DNS 客户端配置
# /etc/resolv.conf
search example.com
nameserver 192.168.1.10
# 或使用 nmcli(持久化)
nmcli con mod eth0 ipv4.dns "192.168.1.10"
nmcli con up eth0
七、安全加固
# 限制递归查询
options {
allow-recursion { 192.168.0.0/16; 127.0.0.1; };
recursion yes;
};
# 隐藏版本号
options {
version "Not Available";
};
# DNSSEC 验证
options {
dnssec-validation yes;
};
# 限制查询速率
options {
rate-limit {
responses-per-second 10;
};
};