本教程介绍如何在 OpenWrt 路由器上配置 dnsmasq,实现内网域名直接解析到本地 IP,避免内网访问时流量绕道公网。
适用场景
- 你有一个域名(如
emby.example.com),外网通过 FRP 等内网穿透工具访问 - 内网访问同一域名时,希望直接走局域网,不绕公网
- 不想在每台设备上单独修改 hosts 文件
第一步:进入 DNS 设置页面
登录 OpenWrt 管理后台,进入:
网络 → DHCP/DNS → 常规设置
第二步:配置本地 DNS 重写
在地址栏中,按照以下语法添加域名重写规则:
/你的域名/内网IP
语法说明:
| 部分 | 含义 |
|---|---|
第一个 / 前的内容 | 要匹配的域名(支持子域名通配) |
两个 / 之间的内容 | 要返回的 IP 地址 |
示例:
/example.com/192.168.1.100
表示所有 example.com 及其子域名(如 app.example.com、fn.emby.example.com)在内网查询时,都会返回 192.168.1.100。
可添加多条规则,每行一条。
第三步:配置上游 DNS 服务器
切换到转发标签页,添加公共 DNS 服务器:
| 推荐 DNS | 说明 |
|---|---|
223.5.5.5 | 阿里 DNS(国内推荐) |
114.114.114.114 | 114 DNS(国内备用) |
8.8.8.8 | Google DNS(海外推荐) |
1.1.1.1 | Cloudflare DNS(海外备用) |
未匹配本地重写规则的域名会转发到这些上游服务器解析。
第四步:配置 Resolv 和 Hosts 文件
切换到Resolv 和 Hosts 文件标签页:
| 配置项 | 建议 | 说明 |
|---|---|---|
| 忽略解析文件 | ✅ 勾选 | 不使用系统自动生成的上游 DNS |
| 忽略 /etc/hosts | 按需 | 勾选后不再读取系统 hosts 文件 |
| 额外的 HOSTS 文件 | /etc/dnsmasq.hosts | 可在此文件中添加更多域名映射 |
第五步:保存并应用
点击保存并应用,dnsmasq 会自动重载配置。
验证配置
在局域网内任意设备上打开终端,执行:
# 清除 DNS 缓存(Windows)
ipconfig /flushdns
# 查询域名解析结果
nslookup 你的域名
# 或(Linux/Mac)
dig 你的域名
预期结果: 返回的 IP 地址为你在第二步中配置的内网 IP。
工作原理
内网设备查询域名
│
├─ 匹配重写规则 → 直接返回内网 IP(局域网直连)
│
└─ 未匹配 → 转发给上游 DNS(正常走公网解析)
注意事项
- 确保内网设备的 DNS 服务器指向路由器地址(通常 DHCP 会自动下发)
- 如果内网设备手动设置了 DNS(如
8.8.8.8),会绕过路由器,重写规则不生效 - 外网设备不受此规则影响,仍正常解析到公网 IP

Comments | NOTHING