dnsmasq搭建内网DNS服务核心三步:安装、配置(含no-resolv、server、listen-address、address等关键项)、启动;专为小网络设计,支持本地域名自动解析和缓存加速。

直接用 dnsmasq 搭 DNS 服务,核心就三步:装好、配对、跑起来。它不追求企业级功能,专为小网络、开发环境、树莓派或 OpenWrt 这类资源有限的场景设计,20 行内配置就能让局域网设备快速解析域名,还能顺手把本地开发域名(比如 api.dev 或 *.test)指向本机。
安装与基础准备
先确保系统没其他服务占着 53 端口——特别是 systemd-resolved,默认监听 127.0.0.53:53,会跟 dnsmasq 冲突。
- 停用并屏蔽它:sudo systemctl disable --now systemd-resolved
- 清理并锁定 resolv.conf:sudo rm -f /etc/resolv.conf && echo "nameserver 127.0.0.1" | sudo tee /etc/resolv.conf && sudo chattr +i /etc/resolv.conf
- 安装 dnsmasq:sudo apt install dnsmasq -y(Ubuntu/Debian)或 sudo yum install dnsmasq -y(RHEL/CentOS)
最小可用 DNS 配置
编辑主配置文件:sudo nano /etc/dnsmasq.conf,保留关键几行即可:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- no-resolv:不读取 /etc/resolv.conf,避免干扰
- server=8.8.8.8 或 server=1.1.1.1:指定上游 DNS,可写多行
- cache-size=1000:缓存 1000 条记录,提升重复查询速度
- listen-address=127.0.0.1,192.168.1.100:绑定本机回环 + 局域网 IP(如你的网关地址)
- bind-interfaces:确保只监听明确指定的地址,不泛听
让本地域名自动解析(不用改每台机器的 hosts)
这是 dnsmasq 最实用的功能之一。在配置文件末尾加一行就行:
- 精确匹配单个域名:address=/myapp.local/127.0.0.1
- 通配匹配整个后缀:address=/.test/127.0.0.1 → 所有 *.test 域名都指向本机
注意:客户端必须把 DNS 设置成你这台 dnsmasq 的 IP(比如 192.168.1.100),否则这些规则不生效。
启动并验证是否工作
保存配置后重启服务:
- sudo systemctl restart dnsmasq
- 检查状态:sudo systemctl status dnsmasq(应显示 active (running))
- 查缓存效果:dig @127.0.0.1 google.com | grep "Query time",连查两次,第二次时间明显变短说明缓存起效
- 测本地域名:nslookup myapp.local 127.0.0.1,返回 127.0.0.1 就成功了

















