OpenVPN
OpenVPN是一个用于创建虚拟私人网络加密信道的软件包,最早由James Yonan编写。OpenVPN允许创建的VPN使用公开密钥、电子证书、或者用户名/密码来进行身份验证。
![]() | |
原作者 | James Yonan |
---|---|
开发者 | OpenVPN 项目 / OpenVPN Inc. |
首次发布 | 2001年5月13日[1] |
当前版本 |
|
源代码库 | |
编程语言 | C语言 |
平台 | |
类型 | VPN |
许可协议 | GNU通用公共许可证 |
网站 | openvpn |
互联网安全协议 |
---|
密钥管理 |
应用层 |
域名系统 |
网络层 |
它大量使用了OpenSSL加密库中的SSL/TLS协议函数库。
目前OpenVPN能在Solaris、Linux、OpenBSD、FreeBSD、NetBSD、Mac OS X与Microsoft Windows以及Android和iOS上运行,并包含了许多安全性的功能。它不与IPsec兼容。
原理
OpenVPN的技术内核是虚拟网卡,其次是SSL协议实现。
功能
身份验证
OpenVPN提供了多种身份验证方式,用以确认连接双方的身份,包括:
- 预共享密钥
- 数字证书
- 用户名/密码组合
预共享密钥最为简单,但它只能用于创建点对点的VPN;基于PKI的第三方证书提供了最完善的功能,但是需要额外维护一个PKI证书系统。OpenVPN2.0后引入了用户名/口令组合的身份验证方式,它可以省略客户端证书,但是仍需要一份服务器证书用作加密。
功能与端口
- OpenVPN所有的通信都基于一个单一的IP端口,默认且推荐使用UDP协议通讯,同时也支持TCP。IANA(Internet Assigned Numbers Authority)指定给OpenVPN的官方端口为1194。OpenVPN 2.0以后版本每个进程可以同时管理数个并发的隧道。OpenVPN使用通用网络协议(TCP与UDP)的特点使它成为IPsec等协议的理想替代,尤其是在ISP(Internet service provider)过滤某些特定VPN协议的情况下。
- OpenVPN连接能通过大多数的代理服务器,并且能够在NAT的环境中很好地工作。
- 服务端具有向客户端“推送”某些网络配置信息的功能,这些信息包括:IP地址、路由设置等。
- OpenVPN提供了两种虚拟网络接口:通用TUN/TAP驱动,通过它们,可以创建三层IP隧道,或者虚拟二层以太网,后者可以传送任何类型的二层以太网络数据。
- 传送的数据可通过LZO算法压缩。 但传输时使用lzo压缩将遭受VORACLE威胁而暴露传输数据,官方缺省不使用也不建议打开此功能。[9]
版本
社群版本OpenVPN Community
服务器端:需用户自行下载原代码编译、安装。
用户端:使用OpenVPN Connect,支持Windows、Linux、Android与iOS。
商业版本OpenVPN Access Server
服务器端使用与社群版本相同的OpenVPN代码,但在上层建置易于操作的网页式接口。
商业版本提供无限期2个VPN连接授权可免费试用。
商业版提供下列三种安装方式:[10]
- 软件套件,支持Ubuntu、Debian、Redhat、CentOS。
- 虚拟机映像档,支持ESXi 5.0与Microsoft Hyper-V。
- 云端服务布署,支持Amazon AWS、Microsoft Azure、Google GCP、Digital Ocean droplets与ORACLE VPC。
OpenVPN Cloud
提供用户直接租用官方架设的OpenVPN Access Server,适用于不想自行安装管理主机的企业用户租用。
Private Tunnel
提供仅需要使用VPN信道服务的个人用户直接租用。
受中国大陆的限制
由于OpenVPN通讯协议特征明显,当从中国大陆向境外OpenVPN服务器传输大量数据或进行频繁连接后,防火长城会封锁OpenVPN服务器所使用的TCP/UDP端口或服务器IP地址,使OpenVPN无法连接。而在敏感时期则会针对OpenVPN服务器回送证书完成握手创建有效加密连接时干扰连接,在使用TCP协议模式时握手会被连接重置,而使用UDP协议时含有服务器认证证书的数据包会被故意丢弃,使OpenVPN无法创建有效加密连接而连接失败。而在中国大陆内部的连接不受这种限制。
伪装的改进
参考文献
- OpenVPN Change Log - OpenVPN Change Log (页面存档备份,存于)
- . 2024年3月20日 [2024年3月20日].
- . openvpn.net. [2 February 2016]. (原始内容存档于2018-10-06).
- . [2018-01-26]. (原始内容存档于2020-11-11).
- . App Store. 23 October 2014 [2018-01-26]. (原始内容存档于2019-06-05).
- . [2018-01-26]. (原始内容存档于2018-09-26).
- . [2018-01-26]. (原始内容存档于2020-09-29).
- . [2018-01-26]. (原始内容存档于2020-09-30).
- . [2021-03-18]. (原始内容存档于2021-04-15).
- . [2021-03-18]. (原始内容存档于2021-06-04).
- . www.solidot.org. [2020-07-07]. (原始内容存档于2020-07-07).
外部链接
- OpenVPN 项目主页 (页面存档备份,存于)
- Windows的OpenVPN-GUI (页面存档备份,存于) 2004-2006年间,由Mathias Sundman开发使用于Windows环境的OpenVPN-GUI程序,于2.3板后已并入OpenVPN项目内
- Tunnelblick, Mac OS X的GUI
- Android的OpenVPN-Settings(页面存档备份,存于)