OpenVPN简介
在家或者在公司,有时候需要连接VPN才能访问某些服务,不过有时候会出现连接VPN之后网络缓慢,或者完全打不开某些页面。这个时候就需要了解其基本原理,看看是否能改进网络体验。下面是OpenVPN连接的流程示意图。
这里以出网为例,如果请求被路由到虚拟网卡,那么open vpn处理程序会重新封装包信息,将包的目的地址和端口号修改为OpenVPN Server端的ip和port,将实际访问的地址封装到包内容中,OpenVPN Server会提取信息,然后代理请求,并返回结果。
默认情况下,vpn会代理所有流量,但是vpn server的流量带宽是有限的,所以有时候会出现网络很慢的情况。在我们公司曾经出现过连上VPN导致很多网站访问不了,这个是因为DNS的问题,首先在访问服务前需要先解析IP地址,默认的地址可能是宽带提供商的地址,vpn server在某些情况下并不能访问本地的ISP的DNS地址,所以配置一个公共的DNS就可以解决问题,如114.114.114.114。
在实际的使用过程中,我们是不需要代理所有的流量请求,我们可以配置只有必要的流量才走虚拟网卡,其它流量还是走默认直连的逻辑。这里也就是配置路由表,我们先看下连上VPN的默认路由表:
图中打马的是vpn server的地址,这个一定要走en0网卡,我们也可以看到127开头的都会走lo0本地回环网卡,0/1可以看到能匹配所有的流量,这些流量都会走utun2这个虚拟网卡。
我们当然可以手动修改路由表达到特定的流量走utun2,但是容易出错,而且成本较高,我们可以通过修改Open VPN配置的方式达到同样效果。
我们用文本编辑器打开.ovpn
文件,加入类似下面代码
1 | max-routes 1000 |
修改后的路由表如下所示
这里可以看到,没有0/1
的策略,默认会走default策略,只有配置的ip才会走utun2,例如10网段。
Author: Abely Liu
Link: http://abely.cn/2021/04/14/OpenVPN%E7%AE%80%E4%BB%8B/
License: 知识共享署名-非商业性使用 4.0 国际许可协议