连接排障

详解OpenVPNDNS推送配置的必备前提与前置准备要点

很多用户部署OpenVPN服务后都会遇到一类典型故障:明明已经在服务端配置文件里写入了DNS推送规则,客户端连接后却依然优先使用本地运营商的DNS地址,甚至出现解析泄漏、内网域名无法访问的问题。这类故障绝大多数都不是推送指令的语法写错了,而是没有满足OpenVPN DNS推送的配置前提,前置准备环节存在遗漏,导致推送报文要么根本传不到客户端,要么客户端收到后也无法正常生效。本文就从故障现象出发,逐项拆解所有必须完成的前置检查要点,帮你避开无效配置的坑。

现象判定:确认你遇到的是DNS推送生效异常问题

排查的第一步要先排除非相关干扰项,先断开OpenVPN连接,在本地设备上用nslookup或者dig工具查询任意公网域名,记录当前返回结果对应的DNS服务器地址,绿茶之后重新连接OpenVPN服务,再次执行相同的解析查询。如果返回的DNS服务器地址依然是之前记录的本地地址,而非你计划推送的目标DNS地址,才能判定是DNS推送的配置前提没有满足,而非域名本身解析异常。

网络设备:OpenVPN DNS推送:配

运维人员正在逐项检查OpenVPN DNS推送配置的前置条件,排查解析异常故障

不要上来就反复修改服务端的推送配置行,先确认客户端没有手动强制锁定虚拟网卡的DNS参数,很多用户之前为了调试其他网络问题,手动给OpenVPN生成的虚拟网卡设置了固定DNS,这类手动配置的优先级远高于服务端推送的规则,自然会覆盖推送的内容。

服务端侧的基础网络权限前提

OpenVPN服务端进程必须具备足够的系统权限才能生成合法的DHCP类推送报文,Linux环境下如果用普通用户身份启动openvpn守护进程,没有调用内核tun/tap设备配置接口的权限,就算配置文件里完整写入了推送指令,内核也会直接丢弃对应的推送响应,客户端根本收不到携带DNS地址的报文。

还要确认服务端使用的TUN/TAP设备模式和DNS推送规则的适配性,如果采用桥接的TAP模式,你计划推送的DNS地址必须和桥接绑定的物理局域网网段在同一可路由范围内,不然客户端就算收到了DNS地址,绿茶VPN也没有对应的路由条目能连通这个DNS服务,系统会自动 fallback 到本地原有DNS完成解析。

很多管理员容易忽略防火墙规则的适配前提,绿茶VPN服务端的iptables或者firewalld不能拦截tun接口内部的DHCP配置类报文,不少运维人员为了安全设置了默认拒绝的防火墙策略,却没有给tun接口放通内部配置交互的权限,导致封装了DNS推送信息的报文在服务端本地就被拦截,根本没法封装到VPN隧道里传给客户端。

配置语法层面的隐含适配前提

OpenVPN不同大版本的DNS推送语法存在差异,绿茶VPN2.4之前的旧版本不支持直接推送多组DNS搜索域的组合规则,如果拿旧版本的服务端去运行适配2.5及以上版本的配置行,相关指令会被服务端静默忽略,不会生成对应的推送报文,也不会在日志里抛出明确的报错提示。

只单独写入DNS推送的dhcp-option配置行是不够的,还要配套对应的路由规则配置,如果你计划让客户端用推送的DNS解析所有域名,要么配置redirect-gateway相关规则让全流量走VPN隧道,要么单独给推送的DNS地址配置指向VPN网关的路由条目,不然客户端拿到DNS地址之后,访问这个DNS的请求会走本地物理网卡发出,自然无法得到正确的响应。

客户端侧的接收适配前提

Windows平台的OpenVPN客户端必须用管理员权限启动,不然系统底层的全局DNS表修改权限是被操作系统锁住的,OpenVPN客户端就算完整收到了合法的DNS推送报文,也没有权限把配置写入虚拟网卡的DNS参数里,这类权限限制是系统级的,不会在客户端日志里抛出明确的权限不足报错。

macOS、移动端等其他平台的系统本身有专属的DNS优先级机制,比如macOS的网络偏好设置里如果手动指定了全局DNS服务器,这个手动配置的优先级是高于所有VPN服务推送的DNS规则的,必须先把本地的手动DNS配置改回自动获取状态,才能让OpenVPN的推送规则正常覆盖生效。

常见的前置准备误区排查

很多用户误以为只要配置文件里写了推送指令就一定能生效,实际上如果VPN分配给客户端的虚拟网段和本地局域网的现有网段出现冲突,客户端路由表会出现条目冲突,推送的DNS地址会被系统判定为不可达地址,直接被操作系统从可用DNS列表里剔除,不会被用来做域名解析。

还要排查终端上的第三方安全类软件的拦截行为,部分杀毒软件、网络防护工具自带DNS锁定功能,会强制把系统全局DNS修改为安全软件指定的地址,这类防护规则的优先级远高于VPN服务的配置权限,不管OpenVPN推送什么内容都无法修改系统DNS,这类场景下所有服务端配置都符合要求也没法得到预期结果。

完成所有上述前置项的检查修正之后,再依次重启OpenVPN服务端和客户端连接,用解析工具确认当前生效的DNS服务器地址,就能验证DNS推送规则是否正常工作,跳过这些前提环节直接反复修改配置行,只会浪费大量排查时间,还容易出现意料之外的DNS泄漏问题。

隐私与安全编辑组
隐私与安全编辑组
内容编辑

介绍浏览器隐私、账号保护与数据传输,区分工具能力和使用边界。

查看更多文章
连接指南

从一个连接问题开始

遇到macOS网络位置切换相关问题,可从“记录当前设置,再按实际连接环境确认有效配置”开始阅读。复制另一网络的设置前要核对地址与权限,需要结合具体环境判断。