服务器本地DNS配置分两层:客户端解析配置(如修改/etc/resolv.conf指定nameserver)决定本机查询目标;本地DNS服务配置(如Bind9或dnsmasq)使本机对外提供解析服务,需分别配置监听、权限、区域及记录,并通过nslookup、dig等工具验证生效。
服务器本地 DNS 配置主要分两层:**客户端解析配置**(让本机知道去哪查域名)和**本地 DNS 服务配置**(让本机自己提供 DNS 服务)。两者目的不同,不能混用。下面按实际用途拆解:编辑 /etc/resolv.conf,写入 nameserver 行:
还可加控制参数:
⚠️ 注意:某些系统(如 systemd-resolved 或 NetworkManager)会自动覆盖该文件。若需固定配置,建议用 chattr +i /etc/resolv.conf 锁定,或改用其对应管理方式(如 resolvectl)。
核心配置文件是 /etc/bind/named.conf.options:
{ 192.168.1.0/24; };)再在 /etc/bind/named.conf.local 中定义区域:
zone "example.com" { type master; file "/etc/bind/zones/db.example.com"; };
zone "1.168.192.in-addr.arpa" { type master; file "/etc/bind/zones/db.192.168.1"; };
区域文件(如 db.example.com)里要包含 SOA、NS、A、CNAME 等记录,且每条记录末尾带 . 表示绝对域名。
安装后编辑 /etc/dnsmasq.conf:
启用并启动:sudo systemctl enable --now dnsmasq,然后把本机 /etc/resolv.conf 的 nameserver 改为 127.0.0.1 即可享受本地缓存。
别只看配置文件,动手验证:
nslookup example.com 或 dig example.com —— 查是否返回正确 IPsystemd-resolve --status(若用 systemd-resolved)—— 查当前 DNS 设置来源ss -tuln | grep :53 —— 查 53 端口是否监听成功journalctl -u dnsmasq -f 或 journalctl -u named -f —— 实时看服务日志