OpenVPN Windows 平台安装手记
VPN 用途还是很广泛的,比如家里连接公司的网络解决紧急问题,安全因素考虑时两个分部间的互访。而且在兲朝 VPN 可能还承载着更大的功用,比如你在外面有个主机或是 VPS 就可以试下。OpenVPN 是免费的(Community 版免费),它可以让你异地两个电脑组成一个局域网,可以是 client-to-client, 现 proxy 一下;或是 push 成 gateway,透明的进行 proxy -- 当然还需要更多的设置,像 NAT、Route 等。
OpenVPN 是跨平台的,这里讲下 Windows 平台的 OpenVPN 如何安装设置。下载页面:http://openvpn.net/index.php/open-source/downloads.html,当前 Windows 平台下的版本是 openvpn-2.1.4-install.exe。
在服务端和客户端都需要安装它,安装的过程没必要讲了,就是下一步、下一步的机械的走。安装完了之后就分别是 Server 端和客户端的配置。我们假定你是安装在默认的目录中的:C: \Program File\OpenVPN 的。OpenVPN 安装之后会在电脑上多出一张网卡出来,名叫 TAP-Win32 Adapter V9,我们终及目标就是让分别在服务端和客户端的这两张网卡连起来,并能通过其上的 IP 互相访问。
一. 服务端配置:
1) 运行 cmd 进到命令行窗口,cd 切到 C: \Program File\OpenVPN\easy-rsa 目录,这里有不少 .bat 脚本,然后依次运行以下三个命令:
其中 init-config 会把 vars.bat.sample 复制为 var.bat,正好是下个命令用的,还会把 openssl.cnf.sample 复制为 openssl.cnf。
vars.bat 用来设置一些变量,主要就是设置下面那几个:
根据自己的需要来改了,你也可以不用管它。
clean-all 会清掉 C: \Program File\OpenVPN\easy-rsa\keys 目录,再把 index.txt 和 serial 文件放进来。
上面是准备工作,下面要开始生成各种证书了。
2) 生成根证书,还是在上面那个 Dos 窗口中执行。现在开始要注意以下每一步操作会在 C: \Program File\OpenVPN\easy-rsa\keys 目录生成什么文件了。
这一步会在 keys 中生成 ca.key 和 ca.crt 文件,执行 build-ca 时会询问填些 Country、Organization 等一些信息,有些有默认值,关键是 Common Name 要填写的,其他的可忽略掉。
3) 生成 dh1024.pem 文件,Server 使用 TLS(OpenSSL) 必须要有的文件,执行命令:
这一步不需要输入什么,时间稍长一些,屏幕上是一串的星星点点,持续时间大约要 30-40 秒, 完后在 keys 下生成文件 dh1024.pem
4) 生成服务端密钥和证书,继续执行:
server01 是自己定义的参数名,与上相应的就会生成 server01.key、server01.csr 和 server01.crt,也都是在 keys 目录里。
这一步像 build-dh.bat 一样有些东西要填写,之后就是该回答 y 的 y 一下,关键就一个:
Common Name 必须填,且不能与执行 build-dh 时相同,否则会报:
failed to update database
TXT_DB error number 2
找不到 C:\Program Files\OpenVPN\easy-rsa\keys\*.old
三个文件 server01.key、server01.csr 和 server01.crt 也会生成,但文件 server01.crt 的大小是 0 字节,无效的,还得重新来过才行,看到 Data Base Updated 才能算数。
你要生成多个服务端的密钥和证书则继续 build-key-server server02 ......
5) 现在为客户端生成密钥和证书,仍然是在当前的 Dos 窗口的当前目录上,执行:
client01 名称自己定义,这一步成功时生成的文件相应的是 client01.key、client01.csr 和 client01.crt。
和 build-ca 和 build-key-server 一样要输入一堆东西,这里注意的是 Common Name 不能与执行 build-key-server 时输入的一样,与 build-ca 的 Common Name 一样我试过没什么关系,否则也是报:
failed to update database
TXT_DB error number 2
找不到 C:\Program Files\OpenVPN\easy-rsa\keys\*.old
如果要生成其他的客户端密钥和证书,可以继续 build-key client02 ......
6) 生成 ta.key 文件,我们仍然是 Dos 下,当前目录还是 C: \Program File\OpenVPN\easy-rsa,所以要执行的命令是:
这一步不罗嗦,很快,生成的文件就是 ta.key。
至此我们要用命令生成的各个文件是完成了,而且我们让所有的文件都生成在 keys 目录中。现在就是要配置服务端和客户端使用的 .ovpn 文件以件分配好上面生成的文件。
7) 服务端 server01.ovpn 文件,创建在 C: \Program File\OpenVPN\config\ 目录中,内容如下:
上面配置的是 client-to-client 方式,就是让异地的两台机器像局域网一样连接起来,IP 将在 10.8.0.x 内分配置。
port 指定连接端口,proto 指定了传输层协议,当然也可以是 tcp,只是 udp 比 tcp 效率要高些。
8 ) 拷贝服务器端要用的文件
把之前生成在 C: \Program File\OpenVPN\easy-rsa\keys 中的 ca.crt、server01.key、server01.crt、ta.key 和 dh1024.pm 五个文件拷贝到 C: \Program File\OpenVPN\config\ 中。
9) 启动 OpenVPN 服务端
执行 OpenVPN GUI 程序,主窗口中点连接,或是在它的系统托盘图标的右键菜单里点连接,看到一顿细小的文字狂滚。如果一切正常的话,服务器上那块 TAP-Win32 Adapter V9 网卡就会就为已连接状态,并且自动获得 IP 应该是 10.8.0.1,可能是其他。 要是有问题的话,还能怎么样呢,View Log,Edit Config 了,或者再往前追溯找原因吧。
二. 客户端配置
确实,大部分的作业都要在服务器端先完成,客户端要用的一些文件也是来自于前面生成的。
1) 客户端配置文件 client01.ovpn,放在客户端 OpenVPN 安装目录的 config 文件夹里,通常也是 C: \Program File\OpenVPN\config\,内空如下:
remote 指定了前面那个 OpenVPN 服务器的 ip 和端口号,其他的像 route 之类的配置真要好生琢磨。
2) 拷贝客户端要用的文件
在服务端也算折腾了半天,现在要把服务端上生成的 ca.crt、client01.crt、client01.key 和 ta.key 放到客户端与 client01.ovpn 所在的目录里。
3) 启动客户端进行连接
在客户端上也是运行 OpenVPN GUI 程序,在它的主窗口中点连接或是系统托盘的右键菜单上的连接,窗口中会刷刷刷的,正常的话网卡会 TAP-Win32 Adapter V9 得到一个 IP 10.8.0.2,可能是其他了。
客户端只要有密钥和证书文件就可以连接过来,所以要让更多的用户能连就给他们颁布证书和密钥,他们分别会是 client02,client03 ......
到现在,VPN 是通了,你想用它来干什么就去发挥你的想像力了。
参考:1. http://www.jianblog.com/2007/04/12/375/
2. http://zouyi.rayyn.net/2010/06/windows-openvpn-how-to-use/
3. http://chding.blog.51cto.com/102388/15119
4. Openvpn 常见问题及其解决办法
5. Linux 下 OpenVPN 安装和 Windows OpenVPN GUI 安装笔记
[版权声明]
本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。
OpenVPN 是跨平台的,这里讲下 Windows 平台的 OpenVPN 如何安装设置。下载页面:http://openvpn.net/index.php/open-source/downloads.html,当前 Windows 平台下的版本是 openvpn-2.1.4-install.exe。
在服务端和客户端都需要安装它,安装的过程没必要讲了,就是下一步、下一步的机械的走。安装完了之后就分别是 Server 端和客户端的配置。我们假定你是安装在默认的目录中的:C: \Program File\OpenVPN 的。OpenVPN 安装之后会在电脑上多出一张网卡出来,名叫 TAP-Win32 Adapter V9,我们终及目标就是让分别在服务端和客户端的这两张网卡连起来,并能通过其上的 IP 互相访问。
一. 服务端配置:
1) 运行 cmd 进到命令行窗口,cd 切到 C: \Program File\OpenVPN\easy-rsa 目录,这里有不少 .bat 脚本,然后依次运行以下三个命令:
1init-config
2vars
3clean-allvars.bat 用来设置一些变量,主要就是设置下面那几个:
1set KEY_COUNTRY=US
2set KEY_PROVINCE=CA
3set KEY_CITY=SanFrancisco
4set KEY_ORG=OpenVPN
5set KEY_EMAIL=mail@host.domainclean-all 会清掉 C: \Program File\OpenVPN\easy-rsa\keys 目录,再把 index.txt 和 serial 文件放进来。
上面是准备工作,下面要开始生成各种证书了。
2) 生成根证书,还是在上面那个 Dos 窗口中执行。现在开始要注意以下每一步操作会在 C: \Program File\OpenVPN\easy-rsa\keys 目录生成什么文件了。
1build-ca3) 生成 dh1024.pem 文件,Server 使用 TLS(OpenSSL) 必须要有的文件,执行命令:
1build-dh.bat4) 生成服务端密钥和证书,继续执行:
1build-key-server server01这一步像 build-dh.bat 一样有些东西要填写,之后就是该回答 y 的 y 一下,关键就一个:
Common Name 必须填,且不能与执行 build-dh 时相同,否则会报:
failed to update database
TXT_DB error number 2
找不到 C:\Program Files\OpenVPN\easy-rsa\keys\*.old
三个文件 server01.key、server01.csr 和 server01.crt 也会生成,但文件 server01.crt 的大小是 0 字节,无效的,还得重新来过才行,看到 Data Base Updated 才能算数。
你要生成多个服务端的密钥和证书则继续 build-key-server server02 ......
5) 现在为客户端生成密钥和证书,仍然是在当前的 Dos 窗口的当前目录上,执行:
1build-key client01和 build-ca 和 build-key-server 一样要输入一堆东西,这里注意的是 Common Name 不能与执行 build-key-server 时输入的一样,与 build-ca 的 Common Name 一样我试过没什么关系,否则也是报:
failed to update database
TXT_DB error number 2
找不到 C:\Program Files\OpenVPN\easy-rsa\keys\*.old
如果要生成其他的客户端密钥和证书,可以继续 build-key client02 ......
6) 生成 ta.key 文件,我们仍然是 Dos 下,当前目录还是 C: \Program File\OpenVPN\easy-rsa,所以要执行的命令是:
1..\bin\openvpn --genkey --secret keys\ta.key至此我们要用命令生成的各个文件是完成了,而且我们让所有的文件都生成在 keys 目录中。现在就是要配置服务端和客户端使用的 .ovpn 文件以件分配好上面生成的文件。
7) 服务端 server01.ovpn 文件,创建在 C: \Program File\OpenVPN\config\ 目录中,内容如下:
1port 1194
2proto udp
3
4dev tap
5ca ca.crt
6cert server01.crt
7key server01.key # This file should be kept secret
8;crl-verify vpncrl.pem
9dh dh1024.pem
10server 10.8.0.0 255.255.255.0
11ifconfig-pool-persist ipp.txt
12client-to-client
13;duplicate-cn
14keepalive 10 120
15tls-auth ta.key 0 # This file is secret
16comp-lzo
17;max-clients 100
18user nobody
19group nobody
20persist-key
21persist-tun
22status openvpn-status.log
23verb 3port 指定连接端口,proto 指定了传输层协议,当然也可以是 tcp,只是 udp 比 tcp 效率要高些。
8 ) 拷贝服务器端要用的文件
把之前生成在 C: \Program File\OpenVPN\easy-rsa\keys 中的 ca.crt、server01.key、server01.crt、ta.key 和 dh1024.pm 五个文件拷贝到 C: \Program File\OpenVPN\config\ 中。
9) 启动 OpenVPN 服务端
执行 OpenVPN GUI 程序,主窗口中点连接,或是在它的系统托盘图标的右键菜单里点连接,看到一顿细小的文字狂滚。如果一切正常的话,服务器上那块 TAP-Win32 Adapter V9 网卡就会就为已连接状态,并且自动获得 IP 应该是 10.8.0.1,可能是其他。 要是有问题的话,还能怎么样呢,View Log,Edit Config 了,或者再往前追溯找原因吧。
二. 客户端配置
确实,大部分的作业都要在服务器端先完成,客户端要用的一些文件也是来自于前面生成的。
1) 客户端配置文件 client01.ovpn,放在客户端 OpenVPN 安装目录的 config 文件夹里,通常也是 C: \Program File\OpenVPN\config\,内空如下:
1client
2dev tap
3proto udp
4
5remote 74.125.235.50 1194
6;remote my-server-2 1194
7
8;remote-random
9
10resolv-retry infinite
11nobind
12user nobody
13group nobody
14route 192.168.0.0 255.255.252.0
15persist-key
16persist-tun
17
18;http-proxy-retry # retry on connection failures
19;http-proxy [proxy server] [proxy port #]
20
21ca ca.crt
22cert client01.crt
23key client01.key
24
25ns-cert-type server
26tls-auth ta.key 1
27comp-lzo
28# Set log file verbosity.
29verb 42) 拷贝客户端要用的文件
在服务端也算折腾了半天,现在要把服务端上生成的 ca.crt、client01.crt、client01.key 和 ta.key 放到客户端与 client01.ovpn 所在的目录里。
3) 启动客户端进行连接
在客户端上也是运行 OpenVPN GUI 程序,在它的主窗口中点连接或是系统托盘的右键菜单上的连接,窗口中会刷刷刷的,正常的话网卡会 TAP-Win32 Adapter V9 得到一个 IP 10.8.0.2,可能是其他了。
客户端只要有密钥和证书文件就可以连接过来,所以要让更多的用户能连就给他们颁布证书和密钥,他们分别会是 client02,client03 ......
到现在,VPN 是通了,你想用它来干什么就去发挥你的想像力了。
参考:1. http://www.jianblog.com/2007/04/12/375/
2. http://zouyi.rayyn.net/2010/06/windows-openvpn-how-to-use/
3. http://chding.blog.51cto.com/102388/15119
4. Openvpn 常见问题及其解决办法
5. Linux 下 OpenVPN 安装和 Windows OpenVPN GUI 安装笔记
永久链接 https://yanbin.blog/openvpn-windows-installation/, 来自 隔叶黄莺 Yanbin's Blog[版权声明]
本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。