OpenVPN客户端可访问服务器端LAN但未配置路由器静态路由的原理咨询
别急,这个情况其实是OpenVPN服务器默认帮你做了不少“隐形工作”,我给你拆解几个核心原因,你就彻底懂了:
OpenVPN自动开启了Windows的NAT与IP转发:当你在Windows 10上部署OpenVPN服务器时,安装程序或初始化脚本大概率已经帮你开启了系统的IP转发功能,同时配置了NAT(网络地址转换)规则。简单来说,VPN客户端发往LAN机器的数据包,会先传到OpenVPN服务器,服务器会把数据包的源地址替换成自己在LAN内的IP,再转发给目标LAN机器;而LAN机器的回包,因为目标是服务器的LAN IP,直接通过同一局域网的ARP协议就能找到服务器,根本不需要经过路由器。这时候LAN机器完全不知道VPN客户端的存在,只以为是服务器在和自己通信,自然不需要路由器的静态路由。
OpenVPN服务器自带路由规则处理:OpenVPN服务器本身就处于你的LAN网段内,它的本地路由表已经默认包含了访问当前LAN网段的规则。同时,服务器默认会把LAN网段的路由推送给VPN客户端,让客户端知道“访问这个LAN段的流量要发往OpenVPN服务器”。而服务器自身会负责在VPN虚拟接口和LAN物理接口之间转发数据包,这个过程不需要路由器介入。
LAN内通信无需经过路由器:你要知道,同一局域网内的设备通信,是通过二层的MAC地址(ARP协议)直接交互的,只有当目标设备不在当前网段时,才会把数据包发给默认网关(也就是路由器)。你的VPN服务器和LAN机器在同一网段,所以LAN机器回包直接发给服务器就行,路由器根本没机会参与这部分流量的转发,自然不需要给路由器加静态路由。
总结一下:只有当你需要让LAN机器主动发起对VPN客户端的访问,或者OpenVPN服务器不在LAN网段内时,才需要在路由器上配置静态路由,告诉路由器“VPN客户端的网段流量要转发到OpenVPN服务器”。目前的场景下,OpenVPN服务器已经包办了所有转发和地址转换的工作,路由器完全没掺和,所以你不用配置静态路由也能正常通信。
备注:内容来源于stack exchange,提问作者Ábel Lénárd




