主题模式
Are you an LLM? You can read better optimized documentation at /asus/dnsmasq-guide.md for this page in Markdown format
华硕路由器配置 dnsmasq 实现局域网自定义域名解析与 DNS 劫持分流教程
在家庭网络中,随着自建服务(如 群晖 NAS 部署本地 AI、Emby 私人影院)越来越多,我们常常需要通过 IP 地址去访问不同的设备。每次都要输入 192.168.50.10:3000 或 192.168.50.15:8096,既繁琐又难记。
如果能直接输入 nas.local 访问群晖,或者输入 emby.com 直接跳转到局域网的电视墙,体验将会大大提升。
华硕原厂固件及梅林固件底层使用了一个极为轻量且强大的 DNS 与 DHCP 管理工具 —— dnsmasq。通过在梅林固件中配置 dnsmasq,我们可以轻松实现局域网自定义域名解析、指定域名 DNS 劫持分流、以及 DNS 缓存加速。
🧭 前置条件
- 路由器必须刷入梅林固件(Asuswrt-Merlin)。
- 必须在路由器 Web 后台开启 JFFS 自定义脚本与配置文件支持(开启方法参考 Merlin 开机脚本 services-start 教程)。
- 通过 SSH 登录到你的路由器后台。
🛠️ 实战一:配置局域网本地自定义域名解析(自定义 Hosts)
这是最常用的功能,相当于为全屋所有连接 Wi-Fi 的设备配置一个统一的 Hosts 解析表。
梅林固件允许我们在 JFFS 分区建立一个 hosts.add 额外配置文件,dnsmasq 在启动时会自动将其合并到路由器的解析记录中。
1. 创建并编辑 hosts.add 文件
在 SSH 终端中输入:
bash
vi /jffs/configs/hosts.add2. 写入你的局域网 IP 与对应域名
例如,你想把局域网内的几台设备绑定自定义本地域名:
text
# 群晖 NAS
192.168.50.10 nas.local
# 个人 PC
192.168.50.100 mypc.local
# Proxmox 虚拟化后台
192.168.50.200 pve.local保存并退出。
🛠️ 实战二:指定特定域名使用特定 DNS 服务器(DNS 劫持分流)
在某些情况下,你可能希望某些特定网站域名强行通过特定的 DNS 服务器去解析。例如:让苹果的更新域名强制走国内 DNS 以防卡顿,或者让特定的域名强行转发给本地科学上网插件的端口。
我们可以通过修改 dnsmasq.conf.add 实现:
1. 创建并编辑 dnsmasq.conf.add
bash
vi /jffs/configs/dnsmasq.conf.add2. 追加自定义 dnsmasq 配置参数
text
# 1. 强行指定特定域名(如 google.com)走谷歌公共 DNS 解析
server=/google.com/8.8.8.8
# 2. 将所有以 .dev 结尾的本地域名,强制泛解析到你本地的 Nginx 服务器 IP
address=/.dev/192.168.50.12
# 3. 优化 DNS 缓存大小,默认缓存是 1500,我们可以改大到 3000 加速二次网页访问
cache-size=3000保存并退出。
🔄 第三步:重新启动 dnsmasq 服务使其生效
在修改完上述任何配置文件后,无需重启路由器,只需在 SSH 中执行以下命令即可热重载 dnsmasq 服务:
bash
service restart_dnsmasq如果看到命令顺利完成,说明服务已经带着你的自定义配置重新运行了。
🔍 第四步:客户端验证解析是否生效
- 在连接了该路由器 Wi-Fi 的电脑(以 Windows 为例)上,打开命令行(cmd)。
- 输入 nslookup 诊断域名:cmd
nslookup nas.local - 如果输出的 Address 确实为你设置的
192.168.50.10,说明全屋自定义本地域名解析已经完美生效!
💬 总结
通过 dnsmasq 配合 JFFS 配置文件,我们无需搭建复杂的内网 DNS 服务器(如 AdGuard Home 或 Bind9),仅用几行简单的文本配置便能完美掌控内网 DNS 路由。
- 原理解析:dnsmasq 在路由器底层是如何与科学上网插件协同工作的?阅读 什么是 dnsmasq 科普篇。
- 出海配置:配置 Merlin 插件分流?阅读 Merlin Clash 订阅与分流进阶。
