背景

今天创建了一台Ubuntu 20.04 LTS的虚拟机,当我用它连接hack the box的VPN时,出现了这个错误:Options error: Unrecognized option or missing or extra parameter(s) in lab:12: data-ciphers-fallback (2.4.7)

定位问题

我在Google上花了大量精力,找了很多资料,但都文不对症。

后来发现,在docker下的某个container里可以成功运行,但宿主机就不能运行。

于是我对比了两个openvpn命令的版本后,终于找到了原因:宿主机的openvpn版本太低。

解决方案1: apt更新openvpn

首先,我尝试用apt来进行更新:

apt install --only-upgrade openvpn

但结果却返回:当前已经是最新的版本了。

Reading package lists... Done
Building dependency tree       
Reading state information... Done
openvpn is already the newest version (2.4.7-1ubuntu2.20.04.4).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

因此,只能手工编译最新的openvpn了。

解决方案2: 手工编译

第一步,卸载现有的openvpn:

apt remove openvpn

第二步,下载最新版openvpn的源码:

wget https://swupdate.openvpn.org/community/releases/openvpn-2.5.7.zip
unzip openvpn-2.5.7.zip
cd openvpn-2.5.7

第三步,编译。

在编译之前,确保安装了gcc

apt install gcc

然后执行./configure

./configure

在这一步,很有可能会提示openssl版本过低,那么就需要重新编译openssl,可以参考:Linux下手工更新openssl至最新版本

在这一步,也很有可能会提示:OpenVPN configure: error: lzo enabled but missing错误,此时需要执行以下命令:

sudo apt-get install libssl-dev liblzo2-dev libpam0g-dev

当配置完成后,会看到这样的信息:checking that generated files are newer than configure... done

最后一步,编译并且安装:

make
make install

完成!