OpenVPN安装配置

发布日期:2019-06-21 14:34


简介
VPN直译就是虚拟专用网络(Virtual Private Network),是提供给企业之间或者个人与公司之间安全数据传输的隧道,OpenVPN是一个用于创建虚拟专用网络加密通道的免费开源软件。

原理
OpenVpn的技术核心是虚拟网卡,虚拟网卡是使用网络底层编程技术实现的一个驱动软件,安装后在主机上多出现一个网卡。服务器端和客户端之间利用虚拟网卡搭建一个独立于当前网络环境的加密通道,将服务器端和多个客户端组建成一个独立的虚拟局域网,从而实现服务器端和客户端、客户端和客户端之间的相互通信。

如果用户访问一个远程的虚拟地址(属于虚拟网卡配用的地址系列,区别于真实地址),则操作系统会通过路由机制将数据包(TUN模式)或数据帧(TAP模式)发送到虚拟网卡上,服务程序接收该数据并进行相应的处理后,通过SOCKET从外网上发送出去,远程服务程序通过SOCKET从外网上接收数据,并进行相应的处理后,发送给虚拟网卡,则应用软件可以接收到,完成了一个单向传输的过程,反之亦然。

 

安装
双击安装程序,按照提示进行安装,在下图这步的时候需要手动勾选OpenVPN RSA ,然后再下一步,直到完成安装。如果中途询问是否安装TAP-Win32驱动程序时,请选择「仍然继续」



 

配置
OpenVPN的配置工作主要分为如下两步:

第1步,创建加密证书和私钥,其中包括服务器端和客户端都要用到的核心CA证书和私钥,服务器端自身的加密证书(即公钥)和私钥,以及每个客户端对应的加密证书和私钥。

第2步,为服务器和客户端编写对应的配置文件,然后将其与第一步中生成的相应证书、私钥放在OpenVPN安装目录的config文件夹下。

 

OpenVPN支持基于加密证书的双向认证。在OpenVPN中,不管是服务器还是客户端,所有的证书和私钥都需要由服务器端生成,客户端要先获得服务器端分配给它的加密证书和密钥才能成功连接

 

第1步:创建加密证书和私钥

初始化环境
利用dos进入openvpn安装目录中的easy-rsa目录中(安装目录/OpenVPN/easy-rsa),然后再依次执行如下命令:

init-config(初始化配置,将vars.bat.sample文件的内容复制到vars.bat。实际上,你也可以直接双击执行easy-rsa目录下的init-config.bat文件来代替这一步。)
vars(设置相应的局部环境变量,就是我们在vars.bat.sample文件中设置的内容)
clean-all(相关设置和清理工作)



 

(1)创建CA根证书:build-ca

在创建ca证书的时候,需要注册一些信息,如上图的绿色方框所示,前面的[] 是默认值,如果不输入直接回车则表示使用默认值。上图中红色矩形框中的admin是证书的名称(Common Name),相当于我们常说的账号,你也可以自行输入其他名称。



(2)创建服务端证书:build-key-server server

如上图所示,命令中的参数server指的是生成的证书文件名称,你可以按照自己的需要进行修改,不过后面的Common Name也应保持一致。第三个红色矩形框中是输入的密码,你也可以根据意愿自行输入。最后程序会询问你是否注册并提交证书,两次均输入y即可。



(3)创建迪菲·赫尔曼密钥:build-dh

迪菲·赫尔曼密钥交换(Diffie–Hellman key exchange,简称「D–H」) 是一种安全协议。它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道创建起一个密钥。这个密钥可以在后续的通讯中作为对称密钥来加密通讯内容。



(4)创建客户端证书:build-key client

与创建服务端证书一样,第二个红色方框中的client表示生成的证书文件名称,如需创建多个不同的客户端证书,只需要重复此步骤即可。切记,Common Name不要重复,这是OpenVPN用来区分不同客户端的关键所在。



(5)生成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(如果服务器端具备此文件,客户端也应具备)

 

以上命令都是在同一个DOS窗口中执行的,如果你以后需要打开新窗口来执行命令(比如创建新的客户端证书):你不需要再执行init-config命令,除非你再次改动了vars.bat.sample文件;每一次打开新窗口时都需要先执行vars命令,后面才能执行其他命令。

第2步:编写对应配置文件

在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)编写服务端配置文件

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,等级越高日志内容越详细

 

(2)编写客户端配置文件

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,等级越高日志内容越详细

 

 

最后,在服务器端的Windows运行框中输入「services.msc」,进入windows服务界面,启动服务「OpenVPN Service」

然后,在客户端,双击OpenVPN安装时在桌面上生成的图标,此时在任务栏的右下角将会出现一个电脑一样的小图标,右键该图标,点击connect。

 

至此,OpenVPN就已经安装成功了,你可以像局域网一样地使用OpenVPN客户端访问服务器或其他客户端了。
---------------------
作者:隨遇灬而安
来源:CSDN
原文:https://blog.csdn.net/qq_33696345/article/details/87455156
版权声明:本文为博主原创文章,转载请附上博文链接!
浏览次数:67
分享到: