![如何防止 OpenVPN 破坏本地路由?](https://linux22.com/image/541317/%E5%A6%82%E4%BD%95%E9%98%B2%E6%AD%A2%20OpenVPN%20%E7%A0%B4%E5%9D%8F%E6%9C%AC%E5%9C%B0%E8%B7%AF%E7%94%B1%EF%BC%9F.png)
我在 192.168.1.0 上有一个本地网络,网络掩码为 255.255.255.0。当我通过 OpenVPN(作为客户端)连接到 VPN 时,它会推送一条 192.168.1.0 的路由,该路由会破坏现有路由,导致我的本地网络无法访问。我不想在远程计算机上访问 192.168.1.0 上的任何内容;我想忽略它,同时接受推送的其他路由。我的客户端是 Ubuntu 10.10。
我怎样才能跳过那条有问题的路线?
答案1
使用
--route-up --route-noexec
openvpn 中的选项,完全忽略推送给您的路由,而是将静态路由添加到您想要通过隧道访问的特定主机。
openvpn --route-noexec --route-up /tmp/myscript --config ./client.ovpn
/tmp/myscript 的位置
route add -host 192.168.1.69 gw ${route_net_gateway}
类似的东西,我还没有实际测试过,但它应该可以工作。您可能还想在断开连接时删除路由。
答案2
除了@hellomynameisjoel的回答,请注意,您可以通过环境变量访问脚本中推送的路由route-up
。因此,您可以只添加必要的路由。
或者,您可以使用 OpenVPN 配置文件中的默认网关添加路由:
route 192.168.1.0 netmask 255.255.255.0 net_gateway
此后,添加相同的推送路线将会失败。
PS 在 ArchLinux/OpenVPN 2.3.5 上测试。
答案3
您的本地网络很大吗?最简单的方法可能是将您的网络重新编号为不冲突的范围。
否则,您可以将 openvpn 启动命令包装在脚本中,该脚本在 OpenVPN 启动后修复路由。