Ubuntu VPN 连接不能同时访问内外网的问题

也许 VPN 服务器设置的原因,有些 VPN 网络在 Ubuntu 下就使用最简单的配置方式即可使用,但偏偏这个,用最简单的配置,连上之后就只能访问内网资源,不能访问外网资源。奇怪就奇怪在,在 win 下只要勾选了那个“在远程网络上使用默认网关”,就什么问题都没有了。

可能 linux 下也会有类似的关键性按钮,google 了好一阵,按照这篇 在 ubuntu 1004 的 pptp 客户端上如何建立分离的 vpn 隧道。按照文中的内容一步一步做了之后,的确可以访问外网了,但是悲剧的是,内网无法访问了。显然,Use this connection only for resources on its network 并没有起到预期中的效果。

这个现象与 这个问题 中描述的十分类似,虽然,里面没有如何描述最后如何解决。可能跟我最初的想法一样,连 VPN 的时候就不上外网就完事了。但是怎么想都觉得麻烦,而且已经感觉离解决问题不是很远了。从 那个问题的评论 中得到的提示:自动从远程网关那边得到的配置信息可能并不是正确的路由信息(至少 mask 就非常可疑:255.255.255.255),通过 route 命令可以证实这一点。

因为有了那个错误的路由,所有数据都走内网了,于是外网不能访问了。而 Use this connection only for resources on its network 似乎只是简单地去掉了那个错误的路由,所以能上外网但是内网就无法访问了。既然不能自动得到正确的路由,那么就手动添加一个静态 route。代价就是 VPN 那边发生变化就得跟着修改。求神拜佛那边不要改吧。

由于不是添加常规路由,仅仅是在 VPN 生效的时候才使用的路由,于是,可以在 VPN 的 IPv4 设置中找到路由的设置

根据自动获得的网关信息,进行一些小修改。比如通常网关是 192.168.1.1 那么网络就是 192.168.1.0,子网掩码是 255.255.255.0,跃点数 Metric 填 1。
同时还要勾选 Ignore automatically obtained routes

这样,两边的网络都可以使用了。

实际效果访问一下就知道,当然可以用 route 命令验证路由状态。

  • oracle

    谢谢信息,我这边按照你设置的,进VPN后还是不能上网,然后我把填入的Gateway和Metric去除后,只在:“Ignore auutomatically obtained routes”上打个勾,就可以上了。看来,每人的情况还有些区别。