Windows编译OpenVPN客户端
来源:互联网 发布:中国根域名服务器在哪 编辑:程序博客网 时间:2024/04/29 20:31
OpenVPN客户端一般由两部分组成,OpenVPN和OpenVPN GUI。官方提供的OpenVPN客户端 for Windows为了提高用户账号的安全性,默认不能保存密码。安全性确实提高了,但是遇到网络不好,VPN意外中断时,每次都要手工输入密码,也很烦心。所以我们需要重新编译客户端代码,让其能够保存密码。而OpenVPN GUI的问题在于状态窗口输入的日志字体小得惊人,像我这种戴眼镜后矫正视力才0.6的人,想看清连接状态几乎是不可能的,所以也得改。 搭建编译环境 我很久没有碰过C语言了,所以除了官方推荐的环境,我不确定其他环境是否能顺利编译。 NSIS 下载链接,建议完全安装。 MinGW 下载链接,现在MinGW只提供在线安装程序,安装时再下载相关文件,耗时较长。也可以Google一下,有完整版可下,假设安装路径为 C:/MinGW MSYS 下载链接,假设安装路径为 C:/msys/1.0 msysDTK 下载链接,安装路径和MSYS相同,C:/msys/1.0 配置环境变量,如果变量PATH中已有其他路径,则新增“;C:/MinGW/bin;C:/msys/1.0/bin”,如果变量PATH不存在,则新建一个变量,命名为PATH,内容为“C:/MinGW/bin;C:/msys/1.0/bin”。注意,变量内容都不包含引号,新增变量时,变量内容最前面没有分号。 配置完成后,打开命令提示符,输入bash,如果界面显示“bash-3.1$”,则编译环境搭建完成。 获取预编译文件 OpenVPN编译过程中需要openssl,tap驱动,lzo压缩等文件,我们可以下载已经编译好的文件 下载链接,这里的预编译文件版本不是2.1.1,但不影响实际编译效果。 新建一个工作目录 C:/work,将预编译文件解压后置于工作目录下,应包含以下四个目录: gen-prebuilt 编译OpenVPN GUI 获取OpenVPN GUI的源代码 下载链接,解压缩到C:/work/openvpn-gui目录下。 首先修改openvpn.c,找到函数StatusDialogFunc,修改 charformat.yHeight = 100; 其中100是字体大小,MS Sans Serif是字体名称。 接下来需要修改Makefile, OPENSSL = /c/OpenSSL 改为预编译文件中的openssl下include头文件的位置,这里为 OPENSSL = ../openssl-0.9.8l/include/openssl LIB_DIRS = -L${OPENSSL}/lib/MinGW 改为预编译文件中openssl的相关lib目录,这里为 LIB_DIRS = –L../gen-prebuilt/lib 运行C:/msys/1.0下的msys.bat,进入类unix环境,切换到C:/work/openvpn-gui目录,执行make,OpenVPN GUI即可编译完成。 编译OpenVPN客户端 获取OpenVPN客户端的源代码 下载链接,解压缩到C:/work/openvpn-2.1.1目录下。 修改misc.c文件,在#ifundef ENABLE_PASSWORD_SAVE一行前面加上 #define ENABLE_PASSWORD_SAVE 到install-win32目录,修改openvpn.nsi文件,找到以下代码: ; tap-64bit: DetailPrint “We are running on a 64-bit system.” SetOutPath “$INSTDIR/bin” File “${GEN}/tapinstall/amd64/tapinstall.exe” SetOutPath “$INSTDIR/driver” File “${GEN}/driver/amd64/OemWin2k.inf” goto tapend tap-32bit: DetailPrint “We are running on a 32-bit system.” SetOutPath “$INSTDIR/bin” SetOutPath “$INSTDIR/driver” tapend: SectionEnd 在这段代码最前面插入: !undef GEN 在这段代码最后面插入: undef 打开命令提示符,执行如下命令: cd C:/work/openvpn-2.1.1 bash domake-win 编译结束后,安装文件会生成在C:/work/openvpn-2.1.1/gen目录下。 修改OpenVPN配置文件 修改当前使用的ovpn配置文件,将auth-user-pass改为auth-user-pass pass.txt,同时在相同路径下新增一个名为pass.txt的文本文件,内容为两行,第一行为vpn用户名,第二行为密码。 重新运行OpenVPN,即可不输密码登录vpn,而且此时status窗口的日志输出,也终于能看得清了。
lzo-2.02
openssl-0.9.8l
pkcs11-helper
strcpy(charformat.szFaceName, “MS Sans Serif”);
File “${GEN}/driver/amd64/${PRODUCT_TAP_ID}.cat”
File “${GEN}/driver/amd64/${TAPDRV}”
File “${GEN}/tapinstall/i386/tapinstall.exe”
File “${GEN}/driver/i386/OemWin2k.inf”
File “${GEN}/driver/i386/${PRODUCT_TAP_ID}.cat”
File “${GEN}/driver/i386/${TAPDRV}”
!define GEN “C:/work/gen-prebuilt/”
!define GEN “..”
- Windows编译OpenVPN客户端
- Windows配置openvpn客户端
- Windows OpenVPN客户端配置
- openvpn跨平台编译 windows客户端on ubuntu 12.04
- Windows平台编译openvpn
- Windows作为OpenVPN的客户端
- Windows作为OpenVPN的客户端
- windows下openvpn源码编译
- ICS-OpenVPN源码编译Android客户端
- Ubuntu 下建立OPENVPN 服务器/WINDOWS 客户端
- windows下安装使用openvpn客户端
- windows 2003 openvpn配置客户端访问服务端内网
- openvpn(windows服务端+win/Linux客户端)使用总结
- CentOS6.5 64位安装OpenVPN+Windows客户端配置
- OpenVPN 安装、配置客户端和服务端,以及OpenVPN的使用 (Windows 平台)
- OpenVPN 安装、配置客户端和服务端,以及OpenVPN的使用 (Windows 平台)
- OpenVPN 安装、配置客户端和服务端,以及OpenVPN的使用 (Windows 平台)
- OpenVPN-2.1.1在windows上的编译
- strlen和mb_strlen区别(php获得中英文混合字符长度)
- vs2008数据库编程笔记
- 有点无言
- c++ primer学习之1
- C++编程杂谈之四:漫谈UML
- Windows编译OpenVPN客户端
- 基于Hadoop实现通用的并行任务处理
- euqals和hashcode
- 建了一个新博客
- 建了一个新博客
- linux内核函数kernel_thread
- TinyXml 使用举例
- Spring总结-AOP
- matlab中plot用法