同时安装和使用两套openvpn(修改注册表键值,修改tap网卡)

JavaGG 发布于 2009/05/05 18:05
阅读 1K+
收藏 1

因为工作关系,我需要在一个系统上安装两套openvpn client系统,并且有可能需要同时使用它们登录到各自指定的openvpn server上,产生的问题是:
(1)两套系统使用相同的注册表键值(都是写入SOFTWARE/OpenVPN和SOFTWARE/OpenVPN-GUI),所以只有一套client可以使用,一套openvpn client被uninstall以后,注册表键值被删除,另一套openvpn client就不能使用。
(2)两套系统会生成两块tap网卡,它们的名称不同(本地连接x),但是在系统内部它们的硬件ID相同(都是tap0801),openvpn client被uninstall的时候,调用tapinstall命令删除网卡,该命令删除指定硬件ID的网卡(tap0801),所有硬件ID相同的网卡都会被删除。再使用另一套系统,不但要增加注册表键值,还要增加一块网卡。

解决问题的方法:
分别制作两套openvpn client的安装包,在安装包里指定使用不同的注册表键值,不同的安装包使用硬件ID不同的tap网卡。

解决问题的思路:
(1)修改openvpn源代码,包括openvpn-2.0.8.zip和openvpn-gui-1.0.3.zip。
(2)openvpn-2.0.8的源代码里有tap网卡的源代码,修改网卡的硬件ID,定制tap网卡。


解决问题的过程:
1. 安装Win32OpenSSL-0_9_7k.exe,再安装MinGW-3.2.0-rc-3.exe,再安装MSYS-1.0.10.exe。都使用默认值安装,安装到c盘。

2. 运行msys,建立/etc/fstab文件,内容为:




c:\mingw /mingw


3.把lzo-1.08.tar.gz解压缩到c:\msys\1.0\目录下,在msys里编译安装:



cd /lzo-1.08
./configure
make
make install

make install会把相关文件复制到/usr/local/lib目录下,但是在/目录下看不到有/usr目录,不用管它。

4.把openvpn-2.0.8.zip文件解压缩到C:\msys\1.0\目录下,修改makefile.w32文件的以下几个变量(可以在msys里用vi打开这个文件改,也可以在windows下改):



OPENSSL = /c/OpenSSL
LZO = ../lzo-1.08
LIB_DIRS = -L${OPENSSL}/lib/MinGW -L${LZO}/src/.libs

使用原文件的变量是无法编译成功的。

5.修改service-win32\openvpnserv.c,第74行:



#define REG_KEY "SOFTWARE\\OpenVPN"

把"OpenVPN"改成自己喜欢的名字,这就是注册表里的位置。

6.把/c/OpenSSL/lib/MinGW目录下的ssleay32.a 改名为 libssl32.a。

7.根据以下提示修改/openvpn-2.0.8/tap-win32/目录下相关文件,把这些tap0801改成自己的名称,比如abcd001:



; (1) Rename all tapXXXX instances in this file to
;     something different (use at least 5 characters
;     for this name!)
; (3) Change TARGETNAME in SOURCES to match what you
;     changed tapXXXX to.
; (4) Change TAP_COMPONENT_ID in common.h to match what
;     you changed tapXXXX to.
; (6) Change DeviceDescription and Provider strings.
; (7) Change PRODUCT_STRING in constants.h to what you
;     set DeviceDescription to.

注:(1)和(6)修改的是i386/OemWin2k.inf文件。
原文还有几条没有列出来,因为是不需要,或者是根据不存在这个文件(比如第5点)。

8.在/openvpn-2.0.8/目录下编译openvpn:



./configure
make -f makefile.w32

如果一切顺利的话,会生成新的openvpn.exe文件,这个文件会使用指定硬件ID的tap网卡。

9.把OemWin2k.inf文件复制到C:\Program Files\OpenVPN\bin目录(假设已经安装过一套openvpn client),把C:\Program Files\OpenVPN\driver\tap0801.sys文件也复制到bin目录,并且改名为abcd001.sys,使用以下命令生成新的网卡:



tapinstall install OemWin2k.inf abcd001

该命令会在系统中安装一块tap网卡,硬件ID为abcd001。

---------------------------------------


20061104 修正文档中一些错误。

(continue...)

[  本帖最后由 sailer_sh 于 2006-11-4 11:09 编辑  ]



加载中
返回顶部
顶部