OpenWrt dnsmasq DNS 配置教程

发布于 2026-08-14  42 次阅读


本教程介绍如何在 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.114114 DNS(国内备用)
8.8.8.8Google DNS(海外推荐)
1.1.1.1Cloudflare 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


一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。