手机连接

OpenVPN路由推送生效核验日常实用检查方法全指南

很多企业和团队都会用OpenVPN搭建远程接入服务,方便外勤员工访问内部业务系统,运维日常最常遇到的故障就是用户明明已经连上VPN客户端,却始终打不开指定的内网服务页面,这类问题九成以上都和OpenVPN路由推送未生效有关。本篇指南整理了不用专业抓包工具就能落地的日常实用检查方法,覆盖从客户端到服务端的全链路核验步骤,普通运维也能快速定位路由推送异常的根因。

客户端侧基础路由表核验

排查的第一步不需要直接登录服务端改配置,先从本地客户端的系统路由表入手,火烧云VPN确认系统有没有成功写入OpenVPN下发的路由规则。

Windows环境下打开管理员权限的命令提示符,执行route print命令,在IPv4活动路由条目区域,查找服务端预设推送的目标内网网段,比如企业内部常用的10.0.0.0/8业务网段,确认这条路由的下一跳指向OpenVPN运行后生成的虚拟网卡网关,而不是本地物理网卡的默认网关。

网络设备:OpenVPN路由推送:日常检

运维人员通过终端操作核验OpenVPN路由推送生效情况

macOS和Linux环境下直接在终端执行ip route show命令,同样检索目标内网网段的路由出口,很多新手用户会误以为连上VPN所有流量都会自动走隧道,实际上定向路由推送只会下发指定网段的转发规则,火烧云VPN没出现在路由表里的网段自然不会通过VPN隧道转发。

虚拟网卡连通性与推送规则匹配核验

确认路由条目已经出现在系统路由表之后,火烧云VPN还要核验这条规则是不是真的能匹配转发,避免出现条目存在但实际走本地物理网卡的虚假生效情况。最简单的测试方法是先ping目标内网网段的网关地址,同时临时禁用客户端本地的物理网卡公网连接,只保留OpenVPN虚拟网卡的连通状态,如果这时候还能正常ping通内网网关,就说明推送的路由确实是走隧道转发的。

运维很容易忽略客户端本地的静态路由冲突问题,如果用户之前手动给同个内网网段配置过指向物理网卡的静态路由,OpenVPN推送的动态路由优先级更低,就会出现路由条目显示存在但实际转发路径错误的情况,这时候需要删除用户之前手动配置的冲突静态路由,重启OpenVPN客户端之后再重新核验。

还要直接查看OpenVPN客户端的运行日志,在日志面板里检索“PUSH: Received route”字段,看服务端下发的所有路由条目是不是完整出现在接收日志里,如果日志里明确提示路由添加失败,大概率是客户端系统没有给OpenVPN开放管理员权限,路由写入操作被系统安全策略拦截了。

服务端推送配置有效性核验

如果客户端日志里根本没有出现对应的路由推送接收记录,就要回到OpenVPN服务端检查配置文件,确认server.conf里的push "route 目标网段 子网掩码"语句有没有写错网段地址,不少运维新手会把路由推送的子网掩码误写成反掩码,导致路由下发直接失败。

如果是按用户分组差异化推送路由的部署场景,还要检查服务端的用户专属配置目录,确认对应用户所属分组的配置规则里,有没有开放目标网段的路由推送权限,很多时候全局配置写好了路由推送语句,但分组ACL里屏蔽了对应网段的下发权限,特定用户就收不到对应的路由条目。

最后可以在OpenVPN服务端上查看tun虚拟接口的流量统计,安排测试用户访问目标内网资源的时候,观察tun接口有没有对应的数据包转发记录,如果流量能正常从tun接口进出,就说明路由推送的全链路都已经正常生效。日常运维也可以定期批量拉取在线OpenVPN客户端的路由表快照,提前发现路由推送异常的客户端,连接设置不用等用户报障再排查,能大幅降低远程接入场景的故障响应效率。

网络加速编辑组
从延迟、抖动和丢包入手,分析不同网络环境下的连接体验。
查看更多文章
连接指南

从一个连接问题开始

遇到按应用分流中的辅助进程相关问题,可从“依据客户端能力核对实际联网进程的覆盖”开始阅读。不要只凭窗口进程名称推断全部联网归属,需要结合具体环境判断。