====== OpenVPN ====== ---- OpenVPN是一个用于创建[[虚拟局域网|虚拟私人网络]]加密通道的软件包。 OpenVPN允许建立的VPN使用公开密钥、电子证书、或者用户名/密码来进行身份验证。 它大量使用了OpenSSL加密库中的SSL/TLS协议函数库。 目前OpenVPN能在Solaris、Linux、OpenBSD、FreeBSD、NetBSD、Mac OS X与Microsoft Windows以及Android和iOS上运行。 ====== 原理 ====== ---- OpenVPN的技术核心是[[虚拟网卡]],其次是SSL协议实现。 //虚拟网卡// 在OpenVPN中,如果用户访问一个远程的虚拟地址(属于虚拟网卡配用的地址系列,区别于真实地址), 则操作系统会通过路由机制将数据包(TUN模式)或数据帧(TAP模式)发送到虚拟网卡上, 服务程序接收该数据并进行相应的处理后,会通过SOCKET从外网上发送出去。 这完成了一个单向传输的过程,反之亦然。 当远程服务程序通过SOCKET从外网上接收到数据,并进行相应的处理后,又会发送回给虚拟网卡,则该应用软件就可以接收到。 //加密// OpenVPN使用OpenSSL库来加密数据与控制信息。 这意味着,它能够使用任何OpenSSL支持的算法。 它提供了HMAC功能以提高连接的安全性。 此外,OpenSSL的硬件加速也能提高它的性能。 ====== 相关网站 ====== ---- [[https://github.com/OpenVPN/openvpn|源码]]