DNS(Domain Name System)把域名解析成 IP,是上网的”电话簿”。linux 常用 BIND(Berkeley Internet Name Domain)实现。

DNS 知识点与自建服务:排查链路、搭建要点与解析异常处理
图片素材来自免费商用图库(pixabay,摄影师 blickpixel),非本站项目实拍。

一、正向与反向

正向:FQDN(完全限定域名,如 www.example.com. 末尾的点是根域)→ IP;反向:IP → FQDN,两者不在同一数据库查询。域名有授权层级:根域 “.” 把 .com 等 TLD 授权给对应机构管理,.com 再把 example 授权给其管理者,根只认直接下级,逐层向下。

二、递归与迭代

根服务器全球 13 台(受 UDP 512 字节限制),负责返回 TLD 的权威地址。客户端查询时:本地无缓存则问本地 DNS,本地 DNS 代表客户端向根→TLD→权威服务器逐级迭代查询(根不替任何人做递归),拿到结果返回客户端并缓存。TTL 决定缓存时长。

三、搭建与排错

BIND 配 zone 文件做正向/反向解析;用 dig 看解析链路与耗时。常见异常:SERVFAIL(权威服务器出错或配置错误)、超时(网络或 DNS 不可达)、NXDOMAIN(域名不存在)。解析慢先查本地缓存与上游 DNS 连通性,再查 zone 配置与 TTL。反向解析多用于邮件防垃圾与日志溯源,按需配置 PTR 记录。

四、DNS 排查与搭建要点

  • 排查 → 先 nslookup/dig 看解析链,再查 53 端口连通、递归/转发配置、缓存与 TTL。
  • 搭建 → 主从同步、区域文件 SOA 与 NS 记录正确、allow-query 收口防开放解析。
  • 解析异常 → 看 SERVFAIL/超时,区分是上游递归问题还是本机配置。

内网 DNS 别开放递归给公网,否则成放大攻击跳板;变更后 flush 缓存再测,避免旧记录干扰判断。