OpenVPN

OpenVPN
Original author(s) James Yonan
Developer(s) OpenVPN project / OpenVPN Inc.
Initial release 13 May 2001 (2001-05-13)[1]
Stable release 2.4.6[2] (19 April 2018 (2018-04-19)) [±]
Repository Edit this at Wikidata
Written in C
Platform
Type VPN
License GNU General Public License
Website openvpn.net/index.php/open-source.html

OpenVPN is a free and open-source software application that implements virtual private network (VPN) techniques to create secure point-to-point or site-to-site connections in routed or bridged configurations and remote access facilities. It uses a custom security protocol[9] that utilizes SSL/TLS for key exchange. It is capable of traversing network address translators (NATs) and firewalls. It was written by James Yonan and is published under the GNU General Public License (GPL).[10]

OpenVPN allows peers to authenticate each other using pre-shared secret keys, certificates or username/password. When used in a multiclient-server configuration, it allows the server to release an authentication certificate for every client, using signatures and certificate authority. It uses the OpenSSL encryption library extensively, as well as the TLS protocol, and contains many security and control features.

OpenVPN has been ported and embedded to several systems. For example, DD-WRT has the OpenVPN server function. SoftEther VPN, a multi-protocol VPN server, has an implementation of OpenVPN protocol.

Architecture

Encryption

OpenVPN uses the OpenSSL library to provide encryption of both the data and control channels. It lets OpenSSL do all the encryption and authentication work, allowing OpenVPN to use all the ciphers available in the OpenSSL package. It can also use the HMAC packet authentication feature to add an additional layer of security to the connection (referred to as an "HMAC Firewall" by the creator). It can also use hardware acceleration to get better encryption performance.[11][12] Support for mbed TLS is available starting from version 2.3.[13]

Authentication

OpenVPN has several ways to authenticate peers with each other. OpenVPN offers pre-shared keys, certificate-based, and username/password-based authentication. Preshared secret key is the easiest, and certificate-based is the most robust and feature-rich. In version 2.0 username/password authentications can be enabled, both with or without certificates. However, to make use of username/password authentications, OpenVPN depends on third-party modules.

Networking

OpenVPN can run over User Datagram Protocol (UDP) or Transmission Control Protocol (TCP) transports, multiplexing created SSL tunnels on a single TCP/UDP port[14] (RFC 3948 for UDP).[15]

From 2.3.x series on, OpenVPN fully supports IPv6 as protocol of the virtual network inside a tunnel and the OpenVPN applications can also establish connections via IPv6.[16] It has the ability to work through most proxy servers (including HTTP) and is good at working through network address translation (NAT) and getting out through firewalls. The server configuration has the ability to "push" certain network configuration options to the clients. These include IP addresses, routing commands, and a few connection options. OpenVPN offers two types of interfaces for networking via the Universal TUN/TAP driver. It can create either a layer-3 based IP tunnel (TUN), or a layer-2 based Ethernet TAP that can carry any type of Ethernet traffic. OpenVPN can optionally use the LZO compression library to compress the data stream. Port 1194 is the official IANA assigned port number for OpenVPN. Newer versions of the program now default to that port. A feature in the 2.0 version allows for one process to manage several simultaneous tunnels, as opposed to the original "one tunnel per process" restriction on the 1.x series.

OpenVPN's use of common network protocols (TCP and UDP) makes it a desirable alternative to IPsec in situations where an ISP may block specific VPN protocols in order to force users to subscribe to a higher-priced, "business grade," service tier.

When OpenVPN uses Transmission Control Protocol (TCP) transports to establish a tunnel, performance will be acceptable only as long as there is sufficient excess bandwidth on the un-tunneled network link to guarantee that the tunneled TCP timers do not expire. If this becomes untrue, performance falls off dramatically. This is known as the "TCP meltdown problem"[17][18]

Security

OpenVPN offers various internal security features. It has up to 256-bit encryption through OpenSSL library, although some service providers may offer lower rates, effectively providing some of the fastest VPN available to consumers.[19][20] It runs in userspace instead of requiring IP stack (therefore kernel) operation. OpenVPN has the ability to drop root privileges, use mlockall to prevent swapping sensitive data to disk, enter a chroot jail after initialization and apply a SELinux context after initialization.

OpenVPN runs a custom security protocol based on SSL and TLS[9] rather than support IKE, IPsec, L2TP or PPTP. OpenVPN offers support of smart cards via PKCS#11-based cryptographic tokens.

Extensibility

OpenVPN can be extended with third-party plug-ins or scripts, which can be called at defined entry points.[21][22] The purpose of this is often to extend OpenVPN with more advanced logging, enhanced authentication with username and passwords, dynamic firewall updates, RADIUS integration and so on. The plug-ins are dynamically loadable modules, usually written in C, while the scripts interface can execute any scripts or binaries available to OpenVPN. In the OpenVPN source code[23] there are some examples of such plug-ins, including a PAM authentication plug-in. Several third-party plug-ins also exist to authenticate against LDAP or SQL databases such as SQLite and MySQL.[24]

Platforms

It is available on Solaris, Linux, OpenBSD, FreeBSD, NetBSD, QNX, macOS and Windows XP and later.[25] OpenVPN is available for mobile phone operating systems (OS) including Maemo,[26] Windows Mobile 6.5 and below,[27] iOS 3GS+ devices,[28] jailbroken iOS 3.1.2+ devices,[29] Android 4.0+ devices, and Android devices that have had the Cyanogenmod aftermarket firmware flashed[30] or have the correct kernel module installed.[31] It is not compatible with some mobile phone OSes, including Palm OS. It is not a "web-based" VPN shown as a web page such as Citrix or Terminal Services Web access; the program is installed independently and configured by editing text files manually, rather than through a GUI-based wizard. OpenVPN is not compatible with VPN clients that use the IPsec over L2TP or PPTP protocols. The entire package consists of one binary for both client and server connections, an optional configuration file, and one or more key files depending on the authentication method used.

Firmware implementations

OpenVPN has been integrated into several router firmware packages allowing users to run OpenVPN in client or server mode from their network routers. A router running OpenVPN in client mode, for example, allows any device on a network to access a VPN without needing the capability to install OpenVPN.

Notable firmware packages with OpenVPN integration include:

Firmware PackageCostDeveloperReferences
DD-WRTFreeNewMedia-NET GmbH[32]
GargoyleFreeEric Bishop[33]
OpenWrtFreeCommunity driven development[34]
OPNsenseFreeDeciso B.V.[35]
pfSenseFreeRubicon Communications, LLC (Netgate)
TomatoFreeKeith Moyer[36][37]

OpenVPN has been implemented in some manufacturer router firmware, such as the D-Link DSR-250[38] and some MikroTik Routers.[39] MikroTik's implementation does not support the UDP protocol or LZO compression, which limits transfer speeds attainable. MikroTik said in 2010 that they would not continue developing OpenVPN in favor of SSTP.[40]

Software implementations

OpenVPN has been integrated into SoftEther VPN, an open-source multi-protocol VPN server, to allow users to connect to the VPN server from existing OpenVPN clients.

OpenVPN is also integrated into Vyos, an open-source routing OS forked from the Vyatta software router.

Editions

OpenVPN is available in two versions:

  • OpenVPN Community Edition, which is an open-source and free version;
  • OpenVPN Access Server (OpenVPN-AS) is based on the Community Edition, but provides additional paid and proprietary features like LDAP integration, SMB server, Web UI management and provides a set of installation and configuration tools that are reported to simplify the rapid deployment of a VPN remote-access solution.[41][42]
The Access Server edition relies heavily on iptables for load balancing and it has never been available on Windows for this reason. This version is also able to dynamically create client ("OpenVPN Connect") installers, which include a client profile for connecting to a particular Access Server instance.[43] However, the user does not need to have an Access Server client in order to connect to the Access Server instance; the client from the OpenVPN Community Edition can be used.[44]

See also

References

  1. OpenVPN Change Log - OpenVPN Change Log
  2. "Releases - OpenVPN/openvpn". Retrieved 25 April 2018 via GitHub.
  3. "Downloads". openvpn.net. Retrieved 2 February 2016.
  4. "Private Tunnel VPN - Android Apps on Google Play".
  5. "Private Tunnel VPN". App Store. 23 October 2014.
  6. "How to connect to Access Server from a Linux computer".
  7. "FreeBSD Ports Search".
  8. "The NetBSD Packages Collection: net/openvpn".
  9. 1 2 "OpenVPN Security Overview". Retrieved 28 September 2011.
  10. LinuxSecurity.com - OpenVPN: An Introduction and Interview with Founder, James Yonan
  11. Network security hacks By Andrew Lockhart - Hack #104 - Create a Cross-platform VPN
  12. IPv6 Deployment Guide By 6net - Chapter 5 - Integration and Transition
  13. Overview of changes in OpenVPN v2.3 - ChangesInOpenvpn23 - OpenVPN Community
  14. OpenVPN man page, section "TLS Mode Options"
  15. User Centric Media: First International Conference, UCMedia 2009, Venice, Italy, 9–11 December 2009, Revised Selected Papers By Patros Daras, Oscar Mayora Ibarra - Scalable IPTV Delivery to Home via VPN - Proposed Scheme
  16. OpenVPN community wiki, IPv6 in OpenVPN - retrieved 8 December 2013
  17. Titz, Olaf (23 April 2001). "Why TCP Over TCP Is A Bad Idea". Retrieved 17 October 2015.
  18. Honda, Osamu; Ohsaki, Hiroyuki; Imase, Makoto; Ishizuka, Mika; Murayama, Junichi (October 2005). "Understanding TCP over TCP: effects of TCP tunneling on end-to-end throughput and latency". Bibcode:2005SPIE.6011..138H. doi:10.1117/12.630496. Missing or empty |url= (help); |access-date= requires |url= (help)
  19. "VPN Newbie Guide for OpenVPN". Retrieved 30 March 2018.
  20. Trembaly, Tim. "OpenVPN and the Platforms on Which It Runs". Fastest VPN Guide. Retrieved 5 April 2018.
  21. "OpenVPN script entry points". Openvpn.net. Retrieved 30 July 2012.
  22. OpenVPN plug-in entry points for C based modules.
  23. "OpenVPN example plug-ins". Openvpn.git.sourceforge.net. Retrieved 30 July 2012.
  24. OpenVPN Community Wiki - Related Projects
  25. "Downloads". openvpn.net. OpenVPN. Retrieved 6 August 2015.
  26. "OpenVPN Maemo package". Maemo.org. Retrieved 30 July 2012.
  27. "OpenVPN for PocketPC". Ovpnppc.ziggurat29.com. 1 April 2007. Retrieved 30 July 2012.
  28. "OpenVPN Connect". OpenVPN Technologies. 16 January 2013. Retrieved 16 January 2013.
  29. "GuizmOVPN - OpenVPN GUI for iPhone/iPad". guizmovpn.com. 30 September 2007. Retrieved 30 September 2012.
  30. cyanogen (7 July 2010). "CHANGELOG at eclair from CyanogenMod's android_vendor_cyanogen". GitHub. Retrieved 28 October 2010. Nexus One Cyanogenmod changelog
  31. "How to setup and configure OpenVPN on Android rooted device | VPN blog is actual information about VPN". Vpnblog.info. Retrieved 30 July 2012.
  32. dd-wrt.com - OpenVPN
  33. Gargoyle Wiki - OpenVPN
  34. "OpenVPN (Server Setup) - OpenWrt Wiki". openwrt.org. Retrieved 2018-06-11.
  35. opnsense.org - OPNsense 17.1 Release Announcement -
  36. "TomatoVPN". Tomatovpn.keithmoyer.com. Retrieved 30 July 2012.
  37. LinksysInfo.org – VPN build with Web GUI
  38. "D-Link - Building Networks for People" (PDF).
  39. "OpenVPN".
  40. normis, MikroTik Support (26 October 2010). "Status of OpenVPN in RouterOS? - MikroTik RouterOS". Forum.mikrotik.com. Retrieved 28 December 2015.
  41. "OpenVPN Product Comparison". Retrieved 2017-01-15.
  42. "What is OpenVPN Access Server (OpenVPN-AS)?". Retrieved 2017-01-15.
  43. "Regarding chocolatey.org repository · Issue #2 · wget/chocolatey_package_openvpn". 2017-01-16. Retrieved 2017-01-16.
  44. "Can I use a community OpenVPN client to connect to the Access Server?". Retrieved 2017-01-16.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.