在之前的文章 Pritunl: 网关与 DNS 设置 中我提到可以使用 pull-filter
来阻止 OpenVPN 覆盖本地网关,从而使得我们在接入私网的同时,走本地的网关上公网。但是 pull-filter
这个配置属性要在 OpenVPN 2.4 版本及以上才有。在 Ubuntu 16.04 中通过 apt
直接安装的 OpenVPN 是 2.3 版本的,更高的版本需要我们手动安装。
这里我参考了 Manually Installing OpenVPN 2.4.7 On Ubuntu 16.04 Xenial 一文中的方法,其核心思路是从源代码安装。
首先我们需要从官方网站下载源代码,可以使用 wget
下载
官网上已经出到了 2.5 以上的版本,但是其实我用不着那么高的版本,这里仍然以 2.4.7 这个版本为例。
1 | wget https://swupdate.openvpn.org/community/releases/openvpn-2.4.7.tar.gz |
上面的命令完成了源代码的下载,解压缩以及配置。./configure
命令还会检查变异需要的环境,如果提示缺少某个工具,可以自行安装。
在 ./configure
命令通过之后,我们可以进行编译了:
1 | ./configure |
这里的 make install
会将编译好的二进制文件 openvpn
放到 /usr/local/sbin
文件夹,而如果你之前安装过 openvpn
,旧的 openvpn
可能安装在 /usr/sbin
中,这个可能会遮蔽新安装的 openvpn
。我们可以选择下面的操作
1 | mv /usr/sbin/openvpn /usr/sbin/openvpn.old |