SoftEther 在 Linux 下需要手动编译安装。不管是 官网 还是 Github,
下载的源码都无法成功编译,提示以下错误,
-
官网 (softether-vpnclient-v4.22-9634-beta-2016.11.27-linux-x64-64bit.tar.gz)
...(略) ranlib code/vpnclient.a gcc code/vpnclient.a -O2 -fsigned-char -pthread -m64 -lm -ldl -lrt -lpthread -L./ lib/libssl.a lib/libcrypto.a lib/libiconv.a lib/libcharset.a lib/libedit.a lib/libncurses.a lib/libz.a lib/libintelaes.a -o vpnclient /usr/bin/ld: code/vpnclient.a(vpnclient.o): relocation R_X86_64_32 against symbol `StopProcess' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: code/vpnclient.a(Unix.o): relocation R_X86_64_32 against `.data' can not be used when making a shared object; recompile with -fPIC ...(略) collect2: error: ld returned 1 exit status Makefile:18: recipe for target 'i_read_and_agree_the_license_agreement' failed make[1]: *** [i_read_and_agree_the_license_agreement] Error 1 make[1]: Leaving directory '/opt/vpnclient' ...(略)
-
github (#e9006fa)
% make cc -DNDEBUG -DVPN_SPEED -DUNIX -DUNIX_LINUX -DCPU_64 -D_REENTRANT -DREENTRANT -D_THREAD_SAFE -D_THREADSAFE -DTHREAD_SAFE -DTHREADSAFE -D_FILE_OFFSET_BITS=64 -I./src/ -I./src/Cedar/ -I./src/Mayaqua/ -O2 -fsigned-char -m64 -c src/Mayaqua/Encrypt.c -o tmp/objs/Mayaqua/Encrypt.o src/Mayaqua/Encrypt.c: In function ‘Enc_tls1_P_hash’: src/Mayaqua/Encrypt.c:175:11: error: storage size of ‘ctx’ isn’t known HMAC_CTX ctx; ...(略)
最后在 论坛 找到回避方法,
ha found a woraround
instead of installing libssl-dev you have to install libssl1.0-dev
this way you also install openssl v1.0.x on your debian 9 system.it also requires this patch to disable sslv3 support
-
安装 libssl1.0-dev 替代 libssl-dev
-
修改代码禁用 sslv3
src/Mayaqua/Network.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git src/Mayaqua/Network.c src/Mayaqua/Network.c index 41d69cc..77a4773 100644 --- src/Mayaqua/Network.c +++ src/Mayaqua/Network.c @@ -13013,7 +13013,7 @@ bool StartSSLEx(SOCK *sock, X *x, K *priv, bool client_tls, UINT ssl_timeout, ch } else { - if (client_tls == false) + if (true == false) { SSL_CTX_set_ssl_version(ssl_ctx, SSLv3_method()); }