OpenVPN 路由除选择本地子网之外的所有流量

jef*_*150 7 windows openvpn

看到几个问题试图解决这个问题,但没有一个是很有帮助的。我想要一些明确的东西来帮助其他人解决这个问题,因为它经常出现,而且似乎很少能得到有效的回应。

redirect-gateway一般来说,对我来说效果很好,但它的一个问题是它包含本地 IP 范围。我知道 OpenVPN 需要这样做,因为它需要覆盖自己的私有 IP 空间,这可以是用户任意分配的任何内容。

但是,如果可以轻松获得与redirect-gateway负一或两个范围相同的效果(适用于他们所在的本地网络),以便他们仍然可以访问本地 LAN 资源(在物理 LAN 上,而不是在OpenVPN“局域网”)。例如,我想从工作中的隧道中排除 10.0.0.0,但所有其他 IP 范围仍将通过隧道发送。

最简单的方法应该是离开重定向网关,然后添加一个本地路由,指示 10.0.0.0 通过本地接口和网关,但 Windows 似乎不尊重指标设置,即使关闭和手动自动指标调整指标,以便 OpenVPN 始终高于本地路由。所有流量继续通过 VPN 隧道路由。

替代方案似乎是完整的本地路由引导或教 OpenVPN 服务器端列出诸如 0.0.0.0-9.0.0.0、11.0.0.0-128.0.0.0、128.0.0.0-172.17.16.0(我的 OpenVPN 子网是 172.17. 17.x)、172.17.18.0-254.0.0.0。这似乎是一种巨大的痛苦,尤其是考虑到必须尝试正确获取相应的子网掩码。

任何关于配置实际工作的 OpenVPN 的简单、一致的方法的建议(Windows 路由指标不起作用),最好是在客户端,以从隧道中排除一些可能位于连接客户端本地的特殊子网,将不胜感激.

目前,我已经退回到 SSH 提供的 SOCKS 代理,以便我可以继续访问网络本地资源,但我更喜欢 VPN 的舒适性,它可以路由除少数特别提到的地址范围之外的所有地址范围。

Lud*_*uty 6

正如@dotvotdot 的评论中所述,您的计算机所在的 LAN 不会通过 VPN 隧道进行路由。这是正常行为。如果您想访问“本地子网”,即我猜不是您的 LAN 且无法通过隧道本身访问的网络,您可能需要使用net_gateway代表您的本地网关的关键字。这样,路由将由您的本地路由器而不是 VPN 服务器进行。

请参阅下面的示例,其中10.59.0.0/16网络流量不应通过 VPN 隧道。

push "redirect-gateway def1 bypass-dhcp"
push "route 10.59.0.0 255.255.0.0 net_gateway"
Run Code Online (Sandbox Code Playgroud)