windows下OpenVPN搭建
OpenVPN下载、安装、配置及使用详解
OpenVPN简介 OpenVPN是一个用于创建虚拟专用网络(Virtual Private Network)加密通道的免费开源软件。使用OpenVPN可以方便地在家庭、办公场所、住宿酒店等不同网络访问场所之间搭建类似于局域网的专用网络通道。OpenVPN使用方便,运行性能优秀,支持Solaris、Linux 2.2 (Linux 2.2 表示Linux 2.2及以上版本,下同)、OpenBSD 3.0 、FreeBSD、NetBSD、Mac OS X、Android和Windows 2000 的操作系统,并且采用了高强度的数据加密,再加上其开源免费的特性,使得OpenVPN成为中小型企业及个人的VPN首选产品。
使用OpenVPN配合特定的代理服务器,可用于访问Youtube、FaceBook、Twitter等受限网站,也可用于突破公司的网络限制。由于OpenVPN支持UDP协议,还可以配合HTTP代理(HTTP Proxy)使用,使得只要是能够打开网站或上QQ的地方,就可以访问外部的任何网站或其他网络资源。
OpenVPN的官方最新版本是OpenVPN 2.3.0(发布于2013年01月08日),你可以点击此处查看OpenVPN 2.3.0的更新日志内容。
OpenVPN下载
下载链接:
https://www.softpedia.com/get/Security/Security-Related/OpenVPN.shtml
OpenVPN安装
在OpenVPN 2.3.0中,默认是不安装easy-rsa(一个加密证书生成程序)的,因此,我们必须手动勾选如下图所示的两个选项(在OpenVPN 2.2中是默认选中的)。一路Next(如果询问是否安装TAP-Win32驱动程序时,请选择「仍然继续」),就安装成功了。
OpenVPN的配置
OpenVPN的配置工作主要分为如下两步:
• 第一步,创建加密证书和私钥,其中包括服务器端和客户端都要用到的核心CA证书和私钥,服务器端自身的加密证书(即公钥)和私钥,以及每个客户端对应的加密证书和私钥。
• 第二步,为服务器和客户端编写对应的配置文件,然后将其与第一步中生成的相应证书、私钥放在OpenVPN安装目录的config文件夹下。
OpenVPN支持基于加密证书的双向认证。在OpenVPN中,不管是服务器还是客户端,所有的证书和私钥都需要由服务器端生成,客户端要先获得服务器端分配给它的加密证书和密钥才能成功连接。这与使用网上银行有些类似,大多数银行网站都会要求你先下载并安装一个数字证书,才允许你进行网上付款或其他操作。
下面我们开始具体配置:
第一步:创建加密证书和私钥
1、修改OpenVPN服务器端的vars.bat.sample文件(客户端的无需做任何修改)。
使用记事本或其他文本编辑工具打开OpenVPN安装目录\easy-rsa\vars.bat.sample文件,如下图所示:
由于稍后给客户端生成对应加密证书和私钥时,程序会要求我们输入一些注册信息。如果你需要配置多个客户端,并且许多信息都相同(比如国家、省市、地址、公司名称等)你还可以修改vars.bat.sample文件后面的一些相关变量的默认值,这样在稍后生成客户端证书的时候,如果该信息项不输入就会采用默认值。
2、运行DOS命令,初始化执行环境。
在作为服务器端的电脑A上打开DOS命令窗口,并进入到%OpenVPN的安装目录%\easy-rsa目录。笔者的服务器端安装目录是D:\OpenVPN,因此这里进入D:\OpenVPN\easy-rsa。
然后依次输入并执行以下命令(括号内的是笔者附加的注释):
init-config(初始化配置,将vars.bat.sample文件的内容复制到vars.bat。实际上,你也可以直接双击执行easy-rsa目录下的init-config.bat文件来代替这一步。)
vars(设置相应的局部环境变量,就是我们在vars.bat.sample文件中设置的内容)
clean-all(相关设置和清理工作)
3、创建CA根证书:build-ca
如图所示,在build-ca的时候需要输入一些注册信息。在输入信息的时候,如果你不输入任何信息,就表示采用默认值(前面中的内容就是默认值);如果你输入.,则表示当前信息项留空白。值得注意的是,上图中红色矩形框中的OpenVPN_CA是证书的通用名称(Common Name),相当于我们常说的账号,你也可以自行输入其他名称。(ca证书中显示颁发给谁)
4、创建服务器端证书:build-key-server server
如上图所示,命令中的参数server指的是生成的证书文件名称,你可以按照自己的需要进行修改,不过后面的Common Name也应保持一致。第二个红色矩形框中是输入的密码,你也可以根据意愿自行输入。最后程序会询问你是否注册并提交证书,两次均输入y即可。(生成server.crt server.key server公钥私钥)
5、创建迪菲·赫尔曼密钥:build-dh
迪菲·赫尔曼密钥交换(Diffie–Hellman key exchange,简称「D–H」) 是一种安全协议。它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道创建起一个密钥。这个密钥可以在后续的通讯中作为对称密钥来加密通讯内容。(生成dh2048.pem)
6、创建客户端证书:build-key client
如上图所示,命令中的参数client表示生成的证书文件名称,你可以按照自己的需要进行修改,不过后面的Common Name也应保持一致。第二个红色矩形框中是输入的密码,你也可以根据意愿自行输入。最后程序会询问你是否注册并提交证书,两次均输入y即可。
如果你想创建多个不同的客户端证书,只需要重复此步骤即可。切记,Common Name不要重复,这是OpenVPN用来区分不同客户端的关键所在。(生成client.crt
client.key client 公钥私钥)
7、生成ta.key:openvpn --genkey --secret keys/ta.key
生成的ta.key主要用于防御DoS、UDP淹没等恶意攻击。命令中的第3个参数keys/ta.key表示生成的文件路径(含文件名)。
创建完证书后,我们会发现easy-rsa目录下多了一个keys文件夹。现在我们将keys文件夹中对应的文件复制到OpenVPN服务器或客户端的安装目录的config文件夹下。
服务器端config目录需要的文件包括:
ca.crt ca.key(核心CA证书和私钥) dh1024.pem(如果最初的变量KEY_SIZE设为2048,这里就是dh2048.pem) server.crt 公钥 server.key(私钥 名称server根据个人设置可能有所不同) ta.key(名称也可自行设置,如果不需要防御攻击,可以不创建或复制此文件)客户端config目录需要的文件包括:
ca.crt client.crt client.key(名称client根据个人设置可能有所不同) ta.key(如果服务器端具备此文件,客户端也应具备)第二步:编写对应的配置文件 上面我们已经创建了OpenVPN配置所需要的各种证书和私钥,现在我们开始为服务器和客户端编写对应的配置文件。 对于一个刚刚接触OpenVPN的人来说,我们应该配置些什么呢,又该从哪里入手呢?别着急,OpenVPN已经考虑到了这一点。在OpenVPN的安装目录的sample-config文件夹中存放有3个示例模板文件:server.ovpn、client.ovpn、sample.ovpn。其中,server.ovpn是服务器的配置模板,client.ovpn是客户端的配置模板(sample.ovpn也可用作客户端配置模板,不过配置比较简单,不够全面。按照官方的说法,client.ovpn可用于连接具有多个客户端的服务器端配置文件)。 现在,我们就复制server.ovpn到服务器的config目录,client.ovpn到客户端的config目录,并在此基础上进行修改。在OpenVPN的配置文件中,前面带「#」或「;」的表示注释内容。 1、 编辑服务器端配置文件。 server.ovpn的英文注释中已经比较清楚地解释了每一个设置的作用,笔者对配置文件的英文注释作了全文翻译,你可以点击查看server.ovpn的配置内容详解,在此不再赘述,下面只提取所有用到的命令。
local 192.168.0.2 #指定监听的本机IP(因为有些计算机具备多个IP地址),该命令是可选的,默认监听所有IP地址。 port 1194 #指定监听的本机端口号 proto udp #指定采用的传输协议,可以选择tcp或udp dev tun #指定创建的通信隧道类型,可选tun或tap ca ca.crt #指定CA证书的文件路径 cert server.crt #指定服务器端的证书文件路径 key server.key #指定服务器端的私钥文件路径 dh dh1024.pem #指定迪菲赫尔曼参数的文件路径 server 10.0.0.0 255.255.255.0 #指定虚拟局域网占用的IP地址段和子网掩码,此处配置的服务器自身占用10.0.0.1。 ifconfig-pool-persist ipp.txt #服务器自动给客户端分配IP后,客户端下次连接时,仍然采用上次的IP地址(第一次分配的IP保存在ipp.txt中,下一次分配其中保存的IP)。 tls-auth ta.key 0 #开启TLS,使用ta.key防御攻击。服务器端的第二个参数值为0,客户端的为1。 keepalive 10 120 #每10秒ping一次,连接超时时间设为120秒。 comp-lzo #开启VPN连接压缩,如果服务器端开启,客户端也必须开启 client-to-client #允许客户端与客户端相连接,默认情况下客户端只能与服务器相连接 persist-key persist-tun #持久化选项可以尽量避免访问在重启时由于用户权限降低而无法访问的某些资源。 status openvpn-status.log #指定记录OpenVPN状态的日志文件路径 verb 3 #指定日志文件的记录详细级别,可选0-9,等级越高日志内容越详细修改注册表: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 将IPEnableRouter改为1 关闭防火墙或将1194端口加入到防火墙允许通过的端口中去 2、 编辑客户端配置文件。 client.ovpn中所有用到的命令如下:
client #指定当前VPN是客户端 dev tun #必须与服务器端的保持一致 proto udp #必须与服务器端的保持一致 remote 192.168.0.2 1194 #指定连接的远程服务器的实际IP地址和端口号 resolv-retry infinite #断线自动重新连接,在网络不稳定的情况下(例如:笔记本电脑无线网络)非常有用。 nobind #不绑定特定的本地端口号 persist-key persist-tun ca ca.crt #指定CA证书的文件路径 cert client.crt #指定当前客户端的证书文件路径 key client.key #指定当前客户端的私钥文件路径 ns-cert-type server #指定采用服务器校验方式 tls-auth ta.key 1 #如果服务器设置了防御DoS等攻击的ta.key,则必须每个客户端开启;如果未设置,则注释掉这一行; comp-lzo #与服务器保持一致 verb 3 #指定日志文件的记录详细级别,可选0-9,等级越高日志内容越详细修改完毕并保存之后,服务器端的OpenVPN安装目录的config文件夹下服务端文件包含如下: 客户端)的OpenVPN安装目录的config文件夹下包含如下文件: 双击OpenVPN安装时在桌面上生成的图标,此时在任务栏的右下角将会出现如下图所示的红色小图标,右键该图标,点击connect: 连接成功后变为绿色。 参考链接: http://www.fyluo.com/m/?post=198 http://blog.joylau.cn/2020/05/28/OpenVPN-Config/