飞鸟vpn
飞鸟vpn Logo
一文详解OpenVPN路由推送的配置前提与前置要求
远程办公

一文详解OpenVPN路由推送的配置前提与前置要求

很多用户在部署OpenVPN实现远程内网接入时,经常遇到路由推送配置完成后,客户端依然无法访问指定内网网段的问题,多数故障根源都不是配置行语法错误,而是没有满足OpenVPN路由推送的基础前置要求。本文将从系统底层、网络连通、权限校验等多个实际场景出发,逐一拆解OpenVPN路由推送的配置前提,帮你避开新手常见的配置陷阱。

操作系统层面的IP转发开关前提

OpenVPN服务端不管是部署在Linux的Ubuntu、CentOS发行版,还是Windows Server系统上,首先必须开启内核级别的IP转发功能,这是所有路由推送生效的最基础前提。很多用户习惯在树莓派、家用小服务器上搭建OpenVPN做家庭远程接入服务,装完OpenVPN主程序之后直接在配置文件里写push路由规则,结果客户端连接成功之后完全访问不了家里的NAS、监控等内网设备,排查半天问题根源就是IP转发开关没有打开。

Linux环境下你可以通过sysctl net.ipv4.ip_forward命令直接检查参数状态,只有返回值为1的时候才符合配置前提,飞鸟vpn如果返回值为0,就算临时修改参数重启系统后也会失效,需要编辑/etc/sysctl.conf文件把对应参数行的注释符去掉,再执行sysctl -p永久生效。如果是Windows系统的OpenVPN服务端,需要在网络适配器的共享设置里开启允许其他网络用户通过此计算机的网络连接转发数据包,或者修改注册表开启IP路由功能,否则服务端收到VPN客户端发往内网的数据包后会直接丢弃,根本不会往物理内网网卡转发。

网络设备:OpenVPN路由推送:配置前

OpenVPN服务端部署时需优先开启内核级IP转发开关,是路由推送生效的核心基础前提

服务端网卡与网段路由的前置校验

OpenVPN的路由推送本质是向客户端下发规则,告知客户端访问指定目标网段的下一跳是OpenVPN服务端的虚拟隧道地址,这一机制成立的核心前提是OpenVPN服务端本身已经可以正常访问你要推送的目标内网网段。如果你要推送公司的研发内网192.168.5.0/24网段,首先要在OpenVPN服务端本地ping该网段内的任意一台正常在线的内网服务器,确认连通性,同时确认服务端物理内网网卡的IP地址和目标网段属于同路由可达的网络结构。

网段不重叠也是非常容易被忽略的配置前提,你要推送给客户端的内网网段,既不能和OpenVPN服务端给客户端分配的虚拟隧道网段重叠,也不能和客户端本地的现有局域网网段重叠。很多新手部署OpenVPN时图省事,把虚拟隧道子网也设置成常用的192.168.1.0/24,刚好部分用户家里的家用路由器默认网段也是同一段,这时候客户端收到推送路由后,系统会优先选择本地直连路由,数据包根本不会走VPN隧道,推送的路由规则完全失效。

防火墙规则的放行前置要求

多数路由推送后数据包不通的问题,都和服务端的防火墙拦截规则有关。Linux环境下使用iptables或者firewalld作为默认防火墙时,除了要放行OpenVPN的UDP或者TCP监听端口之外,还需要配置对应的源地址伪装NAT规则,把VPN客户端发往内网网段的虚拟地址转换成服务端内网物理网卡的真实地址,否则内网服务器收到VPN客户端的数据包后,回包时找不到通往VPN虚拟网段的路由,会直接丢弃返回数据包。

如果你的OpenVPN服务端部署在云服务商的云服务器上,还要额外检查云平台后台的安全组规则,VPN不要只放通OpenVPN的服务监听端口,需要允许服务端内网网卡和虚拟隧道网卡之间的互访流量,否则跨网卡转发的数据包会被云平台的底层安全组拦截,就算本地防火墙全部放行,路由推送之后客户端也收不到内网设备的返回包。

客户端侧的权限与路由接收前提

OpenVPN客户端要成功把服务端推送的路由写入系统路由表,必须拿到操作系统的最高管理员权限。Windows平台下不能直接双击启动OpenVPN客户端,需要右键点击客户端图标选择以管理员身份运行,macOS和Linux平台下需要加sudo指令启动客户端,否则客户端没有修改系统路由表的权限,就算服务端配置的推送规则完全正确,客户端也会直接忽略这条路由推送指令,不会在系统路由表中生成对应条目。

还要提前检查客户端本地的路由条目优先级,Windows系统会根据路由的度量值选择转发路径,如果客户端之前手动添加过和推送目标网段完全相同的静态路由,且这条旧路由的度量值比OpenVPN推送的路由更低,系统会优先选择本地旧路由转发数据包,根本不会走VPN隧道,飞鸟vpn这时候就算路由推送成功也不会得到预期的转发效果,需要先手动删除本地的冲突静态路由。

所有配置前提都校验完成后,你可以在客户端连接OpenVPN成功后,执行route print(Windows系统)或者ip route show(Linux、macOS系统)查看系统路由表,确认推送的目标网段对应的下一跳指向OpenVPN分配的虚拟网关地址,此时再访问目标内网设备就可以正常连通。如果依然出现连通性问题,顺着前面的前提逐一排查即可,绝大多数路由推送故障都不是配置语法错误,VPN而是前置条件没有满足。

手机连接编辑组(VPN)
手机连接编辑组
内容编辑

整理 Android 与 iOS 的连接权限、后台运行和网络切换注意事项。

查看更多文章
连接指南

从一个连接问题开始

遇到浏览器扩展造成的请求差异相关问题,可从“在可控条件下逐个排除相关扩展影响”开始阅读。无关扩展不应因一次网络故障全部永久卸载,需要结合具体环境判断。