服务器角色决定dns配置方式:本地缓存推荐dnsmasq,内网权威解析用bind9或coredns,公网递归需严格限源、启用rrl与dnssec;须同步调整客户端resolv.conf、防火墙策略,并保障时间同步、日志与健康检查。
服务器角色决定dns服务的配置方式——是做本地缓存、内网权威解析,还是对外提供递归服务,每种角色对应不同的软件选型、端口策略和安全边界。
明确服务器角色再选型
不同角色对稳定性、性能和功能要求差异很大:
- 本地缓存/转发器(推荐多数场景):如 dnsmasq 或 systemd-resolved(轻量、低开销),适合终端设备或小型内网。作用是加速解析、支持 hosts 映射、自定义域名重定向(如 dev.local → 192.168.1.100)。
-
内网权威服务器:如 BIND9 或 CoreDNS,用于管理企业内部域名(如 hr.internal、git.ops)。需配置 zone 文件、SOA 记录、允许特定 IP 查询(
allow-query { 192.168.0.0/16; };),不开放递归查询。 - 公网递归解析器(慎用):面向互联网用户提供 DNS 查询服务。需严格限制查询来源(避免开放递归被滥用为放大攻击源),启用响应速率限制(RRL)、DNSSEC 验证,并绑定公网 IP 和 53 端口(UDP/TCP)。
按角色配置关键参数
以常见组合为例:
免费 DNS 与邮件安全分析(IntoDNS.ai):包括 DNSSEC、SPF、DKIM、DMARC、MTA-STS、BIMI、SMTP STARTTLS、FCrDNS、黑名单、发件人要求及报告。
-
dnsmasq(缓存+内网泛解析):
listen-address=127.0.0.1,192.168.5.1—— 只监听本地和内网地址address=/myapp.internal/192.168.5.20—— 泛域名映射server=223.5.5.5—— 指定上游 DNS(阿里 DNS)cache-size=1500—— 提升重复查询效率 -
BIND9(内网权威主服务器):
recursion no;—— 关闭递归,仅响应已授权区域请求allow-transfer { none; };—— 禁止区域传输(防数据泄露)zone "dev.company"块中指定file "/etc/bind/db.dev.company";,并在该文件中写入 A、CNAME 等记录
必须同步调整客户端与网络策略
服务配好只是第一步,客户端才能真正用上:
- 修改
/etc/resolv.conf,把nameserver指向本机或内网 DNS 服务器 IP(如nameserver 192.168.5.1);建议用chattr +i /etc/resolv.conf锁定,防止 NetworkManager 覆盖。 - 防火墙放行 UDP/TCP 53 端口(仅限可信网段):
sudo ufw allow from 192.168.5.0/24 to any port 53 proto udp - 验证是否生效:
dig @192.168.5.1 myapp.internal(直连测试)nslookup test.dev.company(系统级解析测试)
安全与可观测性不能省
无论哪种角色,以下三点直接影响可用性:
- 时间同步:DNSSEC 验证依赖准确时间,务必运行
systemd-timesyncd或chrony并校准。 - 日志分级:dnsmasq 开启
log-queries,BIND9 配置logging子句,记录查询来源、响应码、耗时。 - 健康检查:用
systemctl is-active dnsmasq或rndc status(BIND9)加入监控脚本,异常时告警。










