公司的开发环境都是局域网的,在公司内部使用没有什么问题,但是有时候确实要在外部比如家里、出差使用,这时候就需要配置vpn连接公司内网了。vpn的配置很简单,但有时我们连了vpn后还需要公网资源,比如qq接收文件、查资料之类的,断了vpn再连外网,查完资料后再连vpn,很烦。这就需要vpn同时也能访问外网。windows环境下这种配置非常简单,vpn的连接属性上,把ipv4的属性改为“自动获得IP地址”和“自动获得DNS服务器地址”就行。但是linux下不是这么简单,需要修改路由表。
ubuntu下配置vpn有图形界面,比较简单,网上也有详细的步骤,就不说了。配置成功后,终端下使用route -n看看路由表。
第一项就是默认路由,可以匹配所有的ip,也就是说所有网络最后都是走192.168.1.1(我的路由器网关,访问外网)这个网关,除非能有更匹配的路由规则。这样就明白了,如果想开启vpn的时候也能访问外网资源,那就将所有需要走vpn的ip规则指向ppp0的路由,剩余的就会走默认网关,也就是wlan0了。
怎么查看vpn的net地址呢?连接vpn后,执行ifconfig命令,找到ppp0对应的点对点地址,比如是10.24.22.10,你要访问的内网地址是10.24.2.132~10.24.3.232,那就填加一个路由,命令:route add -net 10.24.0.0 netmask 255.255.0.0 gw 10.24.22.10(net是10.24.0.0,子网掩码是255.255.0.0,网关是10.24.22.10,跃点是1),然后重新连接vpn。使用traceroute命令,就能看到网络的访问路径,如果是请求外网,则第一跳是192.168.1.1,如果访问的是vpn资源,则第一跳是10.24.22.10 。这样就实现了vpn同时能访问外网的能力。
当然,你也可以通过图形化界面配置:网络——vpn连接——配置vpn——编辑——IpV4设置——路由——添加——输入地址、子网掩码、网关、度量——勾选忽略自动获取的路由和仅将此连接用于相应的网络上的资源——保存。
然后重新连接vpn,执行route -n查看路由表,这样就可以同时访问内网和外网资源了。