在Windows 7上架设OpenVPN服务器

0 OpenVPN的用途

用途有很多很多。例如,放假回家后想下载几篇文献,可以通过OpenVPN连接到校园里的OpenVPN服务器,然后以出版商认证过的大学IP来看文献。又或者在旅途中连上了不信任的WLAN,为了防止网上传输的数据被窥探或者被钓鱼式攻击,可以先通过OpenVPN加密连接到预先架设好的可信任的OpenVPN服务器(OpenVPN客户端在连接服务器时会通过证书验证服务器的身份,所以能通过验证的自然就是可信任的OpenVPN服务器了),然后安全上网。其他的用途就不一一列举了。

1 设备概况

1.1 服务器

本次使用的服务器是实验室的一台运行着64位Windows 7桌面操作系统的电脑,也就是我的机位上的那一台电脑,拥有公网IP,通过LAN直通因特网,同时可以访问校园局域网里的IP。

1.2 客户端

本次参与测试的客户端是一台平板电脑,运行Android 4.0.3,没有root。

2 安装配置

2.1 服务器

2.1.1 下载安装包

到OpenVPN Community的页面上去下载最新的64位安装程序,本文使用的是2.3.0版的。此外还可以下载源代码,自定义相关参数后自行编译。

2.1.2 安装OpenVPN

以管理员身份运行安装包,默认安装路径是C:\Program Files\OpenVPN\

安装完毕后Control Panel\Network and Internet\Network Connections里会出现新的的Adapter,命名为OpenVPN。

2.1.3 配置服务端

2.1.3.1 生成证书和密钥

参考C:\Program Files\OpenVPN\easy-rsa目录下的README.txt来生成证书和私钥。

以管理员身份打开一个Command Prompt程序,进入C:\Program Files\OpenVPN\easy-rsa
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Windows\system32>cd ../..
C:\>cd "Program Files"
C:\Program Files>cd OpenVPN
C:\Program Files\OpenVPN>cd easy-rsa

C:\Program Files\OpenVPN\easy-rsa>init-config
修改vars.bat。

运行
C:\Program Files\OpenVPN\easy-rsa>vars.bat
C:\Program Files\OpenVPN\easy-rsa>clean-all.bat

主证书
C:\Program Files\OpenVPN\easy-rsa>build-ca.bat
服务端证书及密钥
C:\Program Files\OpenVPN\easy-rsa>build-key-server.bat openvpn.miffyliye.org
Common Name: openvpn.miffyliye.org
sign the certificate? y
commit? y

客户端证书及密钥
C:\Program Files\OpenVPN\easy-rsa>build-key.bat miffyliye-tablet-s
Common Name: miffyliye-tablet-s
sign the certificate? y
commit? y

加密连接的参数文件
C:\Program Files\OpenVPN\easy-rsa>build-dh.bat

 2.1.3.2 配置文件

打开C:\Program Files\OpenVPN\sample-config
编辑server.ovpn把相关参数
ca ca.crt
cert server.crt
key server.key

dh dh1024.pem

替换为
ca ca.crt
cert openvpn.miffyliye.org.crt
key openvpn.miffyliye.org.key

dh dh1024.pem

保存为
C:\Program Files\OpenVPN\easy-rsa\keys\openvpn.miffyliye.org.ovpn

这样的参数设定可以让客户端连上服务器,但上网数据并不会默认通过OpenVPN服务器来中转。换句话说,OpenVPN服务器端的因特网资源并没有默认共享给客户端。也就无法实现文章开头提到的那两种用途。

2.1.3.2.1 作为网关的OpenVPN服务器

参考Routing all client traffic (including web-traffic) through the VPN,继续编辑C:\Program Files\OpenVPN\easy-rsa\keys\openvpn.miffyliye.org.ovpn
加入
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS ns1.miffyliye.org"
push "dhcp-option DNS ns2.miffyliye.org"

并保存。这里的ns1.miffyliye.org和ns2.miffyliye.org代表自己指定的域名解析服务器。

打开Control Panel\Network and Internet\Network and Sharing Center
找到拥有因特网接入的网卡,名为Local Area Connection,点击-> Properties-> Sharing,勾选Allow other network users to connect through this computer’s Internet connection,在下拉菜单里选择OpenVPN,也就是安装完毕后出现的那个Adapter。

3.2.3.3 运行服务端

C:\Program Files\OpenVPN\easy-rsa\keys目录下的
ca.crt
dh1024.pem
openvpn.miffyliye.orgr.crt
openvpn.miffyliye.org.key
openvpn.miffyliye.org.ovpn

复制到C:\Program Files\OpenVPN\config\

以管理员身份运行OpenVPN GUI,右键Connect。这样,服务端就架设好了。

2.1.4 配置客户端

打开C:\Program Files\OpenVPN\sample-config
编辑client.ovpn,加入
remote openvpn.miffyliye.org 1194
或者不用openvpn.miffyliye.org这个额外设置的域名,直接用服务器的公网IP。

把相关参数
ca ca.crt
cert client.crt
key client.key

替换为
ca ca.crt
cert miffyliye-tablet-s.crt
key miffyliye-tablet-s.key

保存为C:\Program Files\OpenVPN\easy-rsa\keys\miffyliye-tablet-s.ovpn

把服务器上C:\Program Files\OpenVPN\easy-rsa\keys目录下的
ca.crt
miffyliye-tablet-s.crt
miffyliye-tablet-s.key
miffyliye-tablet-s.ovpn

复制到平板电脑的/sdcard/openvpn/miffyliye.org/目录下。

在平板电脑上安装OpenVPN Connect。运行OpenVPN Connect,Import-> Import Profile from SD card,选择/sdcard/openvpn/miffyliye.org/miffyliye-tablet-s.ovpn,赋予相关权限后连接成功。

3 结果

客户端连上OpenVPN后可以通过OpenVPN服务端正常下载文献。

在另一部已经root过的Android手机上使用以前设置好的客户端OpenVPN Settings同样成功连接。

1 thought on “在Windows 7上架设OpenVPN服务器

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.