通过使用OpenVPN来构建一个VPN

时间:2023-03-09 00:01:29
通过使用OpenVPN来构建一个VPN

首先我们需要简单熟悉一下OpenVPN和VPN概念,方便我们在使用OpenVPN构建VPN时的操作~ 

VPN概述

  VPN,即虚拟专用网络,其功能是:在公用网络上建立专用网络,进行加密通讯。在企业网络中有广泛应用。VPN网关通过对数据包的加密和数据包目标地址的转换实现远程访问。VPN有多种分类方式,主要是按协议进行分类。VPN可通过服务器、硬件、软件等多种方式实现。

  VPN属于远程访问技术,简单地说就是利用公用网络架设专用网络。例如某公司员工出差到外地,他想访问企业内网的服务器资源,这种访问就属于远程访问。

  在传统的企业网络配置中,要进行远程访问,传统的方法是租用DDN(数字数据网)专线或帧中继,这样的通讯方案必然导致高昂的网络通讯和维护费用。对于移动用户(移动办公人员)与远端个人用户而言,一般会通过拨号线路(Internet)进入企业的局域网,但这样必然带来安全上的隐患。

  让外地员工访问到内网资源,利用VPN的解决方法就是在内网中架设一台VPN服务器。外地员工在当地连上互联网后,通过互联网连接VPN服务器,然后通过VPN服务器进入企业内网。为了保证数据安全,VPN服务器和客户机之间的通讯数据都进行了加密处理。有了数据加密,就可以认为数据是在一条专用的数据链路上进行安全传输,就如同专门架设了一个专用网络一样,但实际上VPN使用的是互联网上的公用链路,因此VPN称为虚拟专用网络,其实质上就是利用加密技术在公网上封装出一个数据通讯隧道。有了VPN技术,用户无论是在外地出差还是在家中办公,只要能上互联网就能利用VPN访问内网资源,这就是VPN在企业中应用得如此广泛的原因。

OpenVPN概述

  OpenVPN 是一个基于OpenSSL库的应用层VPN实现。和传统VPN相比,它的优点是简单易用。

  OpenVPN允许参与建立VPN的单点使用共享金钥,电子证书,或者用户名/密码来进行身份验证。它大量使用了OpenSSL加密库中的SSLv3/TLSv1 协议函式库。OpenVPN能在Solaris、Linux、OpenBSD、FreeBSD、NetBSD、Mac OS X与Windows 2000/XP/Vista上运行,并包含了许多安全性的功能。它并不是一个基于Web的VPN软件,也不与IPsec及其他VPN软件包兼容。

  OpenVPN2.0后引入了用户名/口令组合的身份验证方式,它可以省略客户端证书,但是仍有一份服务器证书需要被用作加密。在选择协议时候,需要注意2个加密隧道之间的网络状况,如有高延迟或者丢包较多的情况下,请选择TCP协议作为底层协议,UDP协议由于存在无连接和重传机制,导致要隧道上层的协议进行重传,效率非常低下。

使用 OpenVPN 创建一个VPN 的具体操作步骤

(1)首先自然就是下载需要使用的OpenVPN软件,网址如下https://openvpn.net/,但是需要FQ。

(2)初始化配置在安装目录的easy-rsa文件夹中将vars.bat.Sample文件修改为 vars.bat 文件并修改其内容:

  原字段如下

通过使用OpenVPN来构建一个VPN

  修改后字段(其中EAMIL为邮箱)

通过使用OpenVPN来构建一个VPN

(3)在命令行中进行以下操作生成根ca文件:

通过使用OpenVPN来构建一个VPN

(4)在命令行中进行以下操作生成dh1024.pem文件:

通过使用OpenVPN来构建一个VPN

(5)在命令行中进行以下操作生成服务器端证书:

通过使用OpenVPN来构建一个VPN

  生成客户端证书:

通过使用OpenVPN来构建一个VPN

  生成TA证书(ta.key 文件):

通过使用OpenVPN来构建一个VPN

(6)获得的服务器和客户端配置文件如下:

通过使用OpenVPN来构建一个VPN

  把配置文件server.ovpn复制到OpenVPN\config目录下,把OpenVPN\easy-rsa\keys目录下的ca.crt、ca.key、MaServer.crt、MaServer.csr、MaServer.key、dh1024.pem、ta.key 复制到OpenVPN\config目录下,并且在server.ovpn中修改信息:

通过使用OpenVPN来构建一个VPN

(7)进入OpenVPN\bin文件夹,双击openvpn-gui.exe文件,在产生的图标处右击选择“Connect”,连接服务器:

通过使用OpenVPN来构建一个VPN

通过使用OpenVPN来构建一个VPN

通过使用OpenVPN来构建一个VPN

可以发现服务器已经运行成功。

(8)按照同样的方法在client.ovpn中修改相关信息,并设置服务器IP和端口号:

通过使用OpenVPN来构建一个VPN

通过使用OpenVPN来构建一个VPN

  同理,把配置文件 client.ovpn 复制到客户端机器的\OpenVPN\config 目录下,并且把服务器 \OpenVPN\easy-rsa\keys 目录下的 MaClient.crt、MaClient.csr、MaClient.key、 ca.key、 ca.crt、ta.key 文件一起复制到客户端机器的 C:\Program Files\OpenVPN\config 目录下。

  客户端配置完毕啦~

其他

通过一些资料查询,我们可以了解到:

  OpenVpn的技术核心是虚拟网卡,其次是SSL协议实现,由于SSL协议在其它的词条中介绍的比较清楚了,虚拟网卡及其在OpenVpn的中的工作机理如下:

  虚拟网卡是使用网络底层编程技术实现的一个驱动软件,安装后在主机上多出现一个网卡,可以像其它网卡一样进行配置。服务程序可以在应用层打开虚拟网卡,如果应用软件(如IE)向虚拟网卡发送数据,则服务程序可以读取到该数据,如果服务程序写合适的数据到虚拟网卡,应用软件也可以接收得到。虚拟网卡在很多的操作系统下都有相应的实现,这也是OpenVpn能够跨平台一个很重要的理由。

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

  此外,OpenVPN所有的通信都基于一个单一的IP端口,默认且推荐使用UDP协议通讯,同时TCP也被支持。OpenVPN连接能通过大多数的代理服务器,并且能够在NAT的环境中很好地工作。服务端具有向客户端“推送”某些网络配置信息的功能,这些信息包括:IP地址、路由设置等。OpenVPN提供了两种虚拟网络接口:通用Tun/Tap驱动,通过它们,可以建立三层IP隧道,或者虚拟二层以太网,后者可以传送任何类型的二层以太网络数据。传送的数据可通过LZO算法压缩。IANA(Internet Assigned Numbers Authority)指定给OpenVPN的官方端口为1194。OpenVPN 2.0以后版本每个进程可以同时管理数个并发的隧道。OpenVPN使用通用网络协议(TCP与UDP)的特点使它成为IPsec等协议的理想替代,尤其是在ISP(Internet service provider)过滤某些特定VPN协议的情况下。

  在网络安全方面OpenVPN与生俱来便具备了许多安全特性:它在用户空间运行,无须对内核及网络协议栈作修改;初始完毕后以chroot方式运行,放弃root权限;使用mlockall以防止敏感数据交换到磁盘。并通过PKCS#11支持硬件加密标识,如智能卡。

  而对于VPN来说,VPN能够让应用者使用一种很容易设置的互联网基础设施,让新的用户迅速和轻松地添加到这个网络。这种能力意味着企业不用增加额外的基础设施就可以提供大量的容量和应用。VPN能提供高水平的安全,使用高级的加密和身份识别协议保护数据避免受到窥探,阻止数据窃贼和其他非授权用户接触这种数据。

  通过手动设置一个虚拟网络,对专有隧道协议、虚拟网络的高安全性有了更多的认识。结合VPN的优点来看,它实现了数据加密和完整性验证,类似于在计算机中重新开辟出一个安全性极高的网络,而又不消耗大量的资源。这对我们网络安全课程的学习有很大的帮助,为我们开辟了一条提高网络安全性的新途径。