400-877-3227

4008773227

108636278

爱快在线支持

Online Support

OpenVPN服务端

2017-09-07

一、名词解释

 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后引入了用户名/口令组合的身份验证方式,它可以省略客户端证书,但是仍有一份服务器证书需要被用作加密。 OpenVPN所有的通信都基于一个单一的IP端口, 默认且推荐使用UDP协议通讯,同时TCP也被支持。OpenVPN连接能通过大多数的代理服务器,并且能够在NAT的环境中很好地工作。服务端具有向客 户端“推送”某些网络配置信息的功能,这些信息包括:IP地址、路由设置等。OpenVPN提供了两种虚拟网络接口:通用

 Tun/Tap驱动,通过它们, 可以建立三层IP隧道,或者虚拟二层以太网,后者可以传送任何类型的二层以太网络数据。传送的数据可通过LZO算法压缩。在选择协议时候,需要注意2个加密隧道之间的网络状况,如有高延迟或者丢包较多的情况下,请选择TCP协议作为底层协议,UDP协议由于存在无连接和重传机制,导致要隧道上层的协议进行重传,效率非常低下。

 

二、使用说明

1、字段说明

【服务端口】:openvpn服务进程使用的端口。IANA(Internet Assigned Numbers Authority)指定给OpenVPN的官方端口为1194。

VPN网段】/【网段掩码】:vpn所用地址池网段及所用IP地址范围

 

【隧道协议】:OpenVPN所有的通信都基于一个单一的IP端口,默认且推荐使用UDP协议通讯,同时TCP也被支持;

在选择协议时候,需要注意2个加密隧道之间的网络状况,如有高延迟或者丢包较多的情况下,请选择TCP协议作为底层协议,UDP协议由于存在无连接和重传机制,导致要隧道上层的协议进行重传,效率非常低下。

【隧道类型】:OpenVPN提供了两种虚拟网络接口:通用Tun/Tap驱动,通过它们,可以建立三层IP隧道,或者虚拟二层以太网,后者可以传送任何类型的二层以太网络数据。

【加密算法】:在传输前,对数据进行加密,可以保证在传输过程中,即使数据包遭截取,信息也无法被读。该特性在IPSec中为可选项,与IPSec策略的具体设置相关

 

LZO压缩】:传送的数据可通过LZO算法压缩;压缩节省带宽,但是会占用一定的CPU资源

MTU】:最大传输单元;建议填写大小为:链路MTU-100;默认1400。

 

CA证书】:用于签发服务器和客户端证书的证书;

【服务器证书】/【服务器私钥】:本地证书的两部分,成对出现;

注意:如果有想更改对应证书和密钥的,可以通过OPENVPNSSL生成;如果没有或不懂怎么生成的,使用默认的证书和密钥即可!

 

【推送路由】:服务端告知客户端,哪些网段的地址是需要走VPN拨号的线路;

【附加配置】:专业用户,如爱快的openvpn缺少部分配置,可由用户自主填写。

参考openvpn软件帮助,自定义原始OpenVPN配置项,具体请参考:https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage

 

2、举例说明

网络结构如下:

拓扑图.png

需要实现客户端网络通过OPENVPN的方式拨号到服务端

同时实现客户端和服务端内网互访

相关步骤必须严格按照下面的步骤进行。

①服务端配置:

QQ图片20170210103137.png


②创建VPN账号

openVPN账号.png

图片3.png

添加账号时,设置固定IP为10.7.6.2

③静态路由设置

静态路由.png


④客户端配置:

图片5.png

图片6.png

图片7.png

设置完成;客户端和服务端内网可以实现正常互访。

注意事项:

 客户端必须勾选允许服务端推送路由客户端才可以访问服务端的网段


三、知识扩展

原理

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

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

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

 

加密

OpenVPN使用OpenSSL库加密数据与控制信息:它使用了OpenSSL的加密以及验证功能,意味着,它能够使用任何OpenSSL支持的算法。它提供了可选的数据包HMAC功能以提高连接的安全性。此外,OpenSSL的硬件加速也能提高它的性能。

 

验证

OpenVPN提供了多种身份验证方式,

用以确认参与连接双方的身份,包括:预享私钥,第三方证书以及用户名/密码组合。预享密钥最为简单,但同时它只能用于建立点对点的VPN;基于PKI的第三方证书提供了最完善的功能,但是需要额外的精力去维护一个PKI证书体系。[1]  OpenVPN2.0后引入了用户名/口令组合的身份验证方式,它可以省略客户端证书,但是仍有一份服务器证书需要被用作加密。

 

网络

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

OpenVPN使用通用网络协议(TCPUDP)的特点使它成为IPsec等协议的理想替代,尤其是在ISPInternet service provider)过滤某些特定VPN协议的情况下。

在选择协议时候,需要注意2个加密隧道之间的网络状况,如有高延迟或者丢包较多的情况下,请选择TCP协议作为底层协议,UDP协议由于存在无连接和重传机制,导致要隧道上层的协议进行重传,效率非常低下。

 

安全

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

 

对比

OpenSSH,能实现二/三层的基于隧道的VPNstunnel,使用SSL向任何单一端口的TCP服务提供安全保护。

注意事项:

  为了保证VPN的稳定,建议带200个以内的VPN客户端


四、常见问题

暂无

OpenVpn客户端配置链接:http://ikuai8.com/support_article.php?id=0000000555