很多用户在OpenWrt上完成VPN服务端或者客户端搭建之后,经常遇到明明VPN连接成功,却出现域名解析泄露、部分网站打不开、内网设备无法通过VPN走指定解析的问题,这类故障九成以上都和DNS配置没有适配VPN规则有关。这份完整的检查教程会从配置前提、分步校验到误区排查,覆盖OpenWrt VPN场景下所有DNS相关的核心检查点,帮你避免解析异常带来的连接问题。
配置前的基础前提确认
在启动正式的DNS检查之前,你需要先确认当前OpenWrt系统的VPN运行模式,是你自己搭建的VPN服务端让外部设备接入家里的内网,还是OpenWrt作为VPN客户端把整个局域网的流量走隧道转发,两种场景的DNS配置逻辑完全不同,混同设置很容易出现后续的解析冲突。
同时你要提前关闭OpenWrt系统里默认开启的DNS转发强制绑定功能,不少用户之前为了优化内网解析修改过dnsmasq的监听端口,没有恢复默认设置的话,后续VPN分配的DNS请求会直接被拦截,根本走不到预设的解析规则里。
你还要提前确认当前OpenWrt的防火墙区域已经把VPN接口加入了对应的转发许可组,没有被默认设置为拒绝所有入站出站流量,否则后续所有DNS请求的测试都无法得到正常反馈,很容易误导你排查错误的配置项。
VPN接口级别的DNS绑定检查
首先进入OpenWrt的接口配置页面,找到你创建的对应VPN接口,不管是服务端的tun接口还是客户端的专属VPN接口,都要单独查看接口的高级设置标签页里的DNS服务器配置项,这里不要留空,很多新手默认以为系统会自动同步全局DNS,实际上VPN接口的DNS优先级远高于全局配置。
如果是OpenWrt作为VPN服务端的场景,你需要在VPN的协议配置页面里,找到推送DNS的选项,把你想要给接入VPN的外部设备分配的DNS地址填在这里,而不是只在dnsmasq里设置,否则安卓、iOS这类移动设备接入VPN的时候,会直接忽略dnsmasq的默认解析规则,继续使用本地运营商的DNS。
如果是OpenWrt作为VPN客户端的场景,你还要确认接口配置里的“对端DNS覆盖本地DNS”的选项已经勾选,避免系统保留原有运营商的DNS作为备选,出现部分解析请求绕过VPN通道的情况。
完成界面配置之后,你可以登录OpenWrt的命令行终端,输入对应的接口查看命令,确认VPN接口下已经正确加载了你填写的DNS地址,没有出现配置保存失败、地址被原有规则覆盖的情况。
解析转发规则的有效性校验
接下来你需要做的是连接VPN之后,在接入设备上打开命令行工具,执行域名解析查询命令,查看当前返回结果的DNS服务器地址是不是你预设的VPN对应DNS,而不是设备本身的本地网络DNS,如果出现本地DNS的地址,就说明存在解析泄露。
部分用户会配置分流规则,让部分内网域名走本地DNS解析,外网域名走VPN隧道的DNS解析,这时候你要分别测试两类域名的解析结果,确认分流规则没有把所有DNS请求都导向同一个出口,避免出现内网设备无法通过域名访问内网服务的问题。
如果你开启了OpenWrt的DNS加密或者DNS过滤功能,还要单独检查这类功能的适配规则,确认VPN接口的DNS请求没有被加密规则强制重定向,否则你预设的VPN专属DNS配置会完全失效,所有解析请求都走全局的加密DNS通道。
常见配置误区排查
最常见的误区是很多用户把VPN的DNS和全局内网DNS设置成完全不同的网段,又没有在防火墙里添加对应的转发规则,导致VPN客户端发出的DNS请求根本无法连通指定的DNS服务器,最终出现解析超时的问题。
还有不少用户会同时开启多个不同的VPN客户端连接,多个VPN接口各自推送不同的DNS配置,系统的DNS进程会出现规则冲突,最终随机选择一个DNS服务器响应请求,这种场景下你需要保留当前在用的VPN对应的DNS配置,把其他未启用的VPN接口里的DNS配置清空。
全部检查完成之后,你可以多次切换VPN的连接状态,反复测试解析结果的一致性,确认没有出现VPN断开之后DNS没有自动切回本地、VPN重连之后DNS配置没有同步刷新的异常情况,保证整个网络的解析逻辑符合你的预设需求。


