原作者 | James Yonan |
---|---|
開發者 | OpenVPN 项目 / OpenVPN Inc. |
首次发布 | 2001年5月13日[1] |
当前版本 |
|
源代码库 | |
编程语言 | C语言 |
系統平台 | |
类型 | VPN |
许可协议 | GNU通用公共許可證 |
网站 | openvpn |
互联网安全协议 |
---|
密钥管理 |
应用层 |
域名系统 |
网络层 |
OpenVPN是一个用于创建虚拟私人網絡加密通道的软件包,最早由James Yonan编写。OpenVPN允许建立的VPN使用公开密钥、電子證書、或者用户名/密碼来进行身份验证。
它大量使用了OpenSSL加密库中的SSL/TLS协议函数库。
目前OpenVPN能在Solaris、Linux、OpenBSD、FreeBSD、NetBSD、Mac OS X与Microsoft Windows以及Android和iOS上运行,並包含了许多安全性的功能。它不与IPsec兼容。
OpenVPN的技术核心是虚拟网卡,其次是SSL协议实现。
主条目:虚拟网卡 |
在OpenVPN中,如果用户访问一个远程的虚拟地址(属于虚拟网卡配用的地址系列,区别于真实地址),则操作系统会通过路由机制将数据包(TUN模式)或数据帧(TAP模式)发送到虚拟网卡上,服务程序接收该数据并进行相应的处理后,会通过SOCKET从外网上发送出去。这完成了一个单向传输的过程,反之亦然。当远程服务程序通过SOCKET从外网上接收到数据,并进行相应的处理后,又会发送回给虚拟网卡,则该应用软件就可以接收到。
OpenVPN使用OpenSSL库来加密数据与控制信息。这意味着,它能够使用任何OpenSSL支持的算法。它提供了HMAC功能以提高连接的安全性。此外,OpenSSL的硬件加速也能提高它的性能。2.3.0以後版本引入PolarSSL。
OpenVPN提供了多种身份验证方式,用以确认连接双方的身份,包括:
预共享密钥最为简单,但它只能用于建立点对点的VPN;基于PKI的第三方证书提供了最完善的功能,但是需要额外维护一个PKI证书系统。OpenVPN2.0后引入了用户名/口令组合的身份验证方式,它可以省略客户端证书,但是仍需要一份服务器证书用作加密。
OpenVPN与生俱来便具备了许多安全特性:它在用户空间运行,无须对内核及网络协议栈作修改;初始完毕后以chroot方式运行,放弃root权限;使用mlockall(页面存档备份,存于互联网档案馆)以防止敏感数据交换到磁盘。
伺服器端:需使用者自行下載原始碼編譯、安裝。
使用者端:使用OpenVPN Connect,支援Windows、Linux、Android與iOS。
伺服器端使用與社群版本相同的OpenVPN程式碼,但在上層建置易於操作的網頁式介面。
商業版本提供無限期2個VPN連線授權可免費試用。
商業版提供下列三種安裝方式:[10]
提供使用者直接租用官方架設的OpenVPN Access Server,適用於不想自行安裝管理主機的企業用戶租用。
提供僅需要使用VPN通道服務的個人用戶直接租用。
由于OpenVPN通讯协议特征明显,当从中国大陆向境外OpenVPN服务器传输大量数据或进行频繁连接后,防火长城会封锁OpenVPN服务器所使用的TCP/UDP端口或服务器IP地址,使OpenVPN无法连接。而在敏感时期则会针对OpenVPN服务器回送证书完成握手创建有效加密连接时干扰连接,在使用TCP协议模式时握手会被连接重置,而使用UDP协议时含有服务器认证证书的数据包会被故意丢弃,使OpenVPN无法创建有效加密连接而连接失败。而在中国大陆内部的连接不受这种限制。
|