OpenVPN: Difference between revisions

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
imported>GreenC bot
Rescued 1 archive link; reformat 1 link. Wayback Medic 2.5 per WP:USURPURL and JUDI batch #27ac
 
imported>Huyedits
m I just changed a bit of the words up. Nothing too dramatic.
 
(One intermediate revision by one other user not shown)
Line 28: Line 28:
OpenVPN allows [[peer-to-peer|peers]] to [[authentication|authenticate]] each other using [[pre-shared key|pre-shared secret keys]], [[public key certificate|certificates]] or [[user (computing)|username]]/[[password]]. When used in a multiclient-server configuration, it allows the server to release an authentication certificate for every client, using [[digital signature|signatures]] and [[certificate authority]].
OpenVPN allows [[peer-to-peer|peers]] to [[authentication|authenticate]] each other using [[pre-shared key|pre-shared secret keys]], [[public key certificate|certificates]] or [[user (computing)|username]]/[[password]]. When used in a multiclient-server configuration, it allows the server to release an authentication certificate for every client, using [[digital signature|signatures]] and [[certificate authority]].


It uses the [[OpenSSL]] encryption [[Library (computing)|library]] extensively, as well as the [[Transport Layer Security|TLS]] protocol, and contains many security and control features. It uses a custom security protocol<ref name=openvpn-protocol>{{cite web|title=OpenVPN Security Overview|url=http://openvpn.net/index.php/open-source/documentation/security-overview.html|access-date=28 September 2011}}</ref> that utilizes [[Transport Layer Security|SSL/TLS]] for key exchange. It is capable of traversing [[network address translator]]s (NATs) and [[Firewall (computing)|firewall]]s.{{fact|date=July 2022}}
It uses the [[OpenSSL]] encryption [[Library (computing)|library]] extensively, as well as the [[Transport Layer Security|TLS]] protocol, and contains many security and control features. As it uses a custom security protocol<ref name=openvpn-protocol>{{cite web|title=OpenVPN Security Overview|url=http://openvpn.net/index.php/open-source/documentation/security-overview.html|archive-url=https://web.archive.org/web/20180821223435/https://openvpn.net/index.php/open-source/documentation/security-overview.html|archive-date=2018-08-21}}</ref> that utilizes [[Transport Layer Security|SSL/TLS]] for key exchange. It is capable of traversing [[network address translator]]s (NATs) and [[Firewall (computing)|firewall]]s.<ref name="network-traversal-guide">
{{cite web
| title = Understanding Network Traversal Techniques
| website = AnonymousVPNs.com
| url = https://anonymousvpns.com/guides/understanding-network-traversal-techniques/
| access-date = 2025-08-07
}}</ref>


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, also has an implementation of OpenVPN protocol.<ref>{{cite web|url=https://opensource.com/article/18/8/open-source-tools-vpn|title=6 open source tools for making your own VPN|last=Bischoff|first=Paul|date=2018-08-31|website=[[Opensource.com]]|language=en|archive-url=https://web.archive.org/web/20180831141210/https://opensource.com/article/18/8/open-source-tools-vpn|archive-date=2018-08-31|url-status=live|access-date=2019-07-30}}</ref>
OpenVPN has been ported and embedded on several systems. For example, [[DD-WRT]] has the OpenVPN server function. [[SoftEther VPN]], a multi-protocol VPN server, also has an implementation of the OpenVPN protocol.<ref>{{cite web|url=https://opensource.com/article/18/8/open-source-tools-vpn|title=6 open source tools for making your own VPN|last=Bischoff|first=Paul|date=2018-08-31|website=[[Opensource.com]]|language=en|archive-url=https://web.archive.org/web/20180831141210/https://opensource.com/article/18/8/open-source-tools-vpn|archive-date=2018-08-31|url-status=live|access-date=2019-07-30}}</ref>


It was written by James Yonan and is [[free software]], released under the terms of the [[GNU General Public License version 2]] (GPLv2).<ref>LinuxSecurity.com - [http://www.linuxsecurity.com/content/view/117363/49/ OpenVPN: An Introduction and Interview with Founder, James Yonan]</ref> Additionally, commercial licenses are available.<ref>[https://openvpn.net/pricing/ openvpn.net: Pricing], retrieved 12 December 2018</ref>
It was written by James Yonan and is [[free software]], released under the terms of the [[GNU General Public License version 2]] (GPLv2).<ref>LinuxSecurity.com - [http://www.linuxsecurity.com/content/view/117363/49/ OpenVPN: An Introduction and Interview with Founder, James Yonan]</ref> Additionally, commercial licenses are available.<ref>[https://openvpn.net/pricing/ openvpn.net: Pricing], retrieved 12 December 2018</ref>
Line 41: Line 47:


===Authentication===
===Authentication===
 
OpenVPN has several ways to [[authentication|authenticate]] peers with each other. OpenVPN offers [[pre-shared key]]s, certificate-based, and username/password-based authentication. Preshared secret key is the easiest, and certificate-based is the most robust and [[feature-rich]]. {{citation needed|date=April 2018}} 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.{{citation needed|date=June 2018}}
OpenVPN has several ways to [[authentication|authenticate]] peers with each other. OpenVPN offers [[pre-shared key]]s, certificate-based, and username/password-based authentication. Preshared secret key is the easiest, and certificate-based is the most robust and [[feature-rich]].{{citation needed|date=April 2018}} 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.{{citation needed|date=June 2018}}


===Networking===
===Networking===
Line 48: Line 53:
OpenVPN can run over [[User Datagram Protocol]] (UDP) or [[Transmission Control Protocol]] (TCP) transports, multiplexing created SSL tunnels on a single TCP/UDP port<ref>OpenVPN man page, section "TLS Mode Options"</ref> (RFC 3948 for UDP).<ref>{{cite book|author1=Petros Daras|author2=Oscar Mayora|title=User Centric Media: First International Conference, UCMedia 2009, Venice, Italy, December 9-11, 2009, Revised Selected Papers|url=https://books.google.com/books?id=ti8WoFmQHdoC&pg=PA239|year=2013|publisher=Springer Science & Business Media|isbn=978-3-642-12629-1|page=239}}</ref>  
OpenVPN can run over [[User Datagram Protocol]] (UDP) or [[Transmission Control Protocol]] (TCP) transports, multiplexing created SSL tunnels on a single TCP/UDP port<ref>OpenVPN man page, section "TLS Mode Options"</ref> (RFC 3948 for UDP).<ref>{{cite book|author1=Petros Daras|author2=Oscar Mayora|title=User Centric Media: First International Conference, UCMedia 2009, Venice, Italy, December 9-11, 2009, Revised Selected Papers|url=https://books.google.com/books?id=ti8WoFmQHdoC&pg=PA239|year=2013|publisher=Springer Science & Business Media|isbn=978-3-642-12629-1|page=239}}</ref>  


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.<ref>[https://community.openvpn.net/openvpn/wiki/IPv6 OpenVPN community wiki], IPv6 in OpenVPN - retrieved 8 December 2013</ref>
From 2.3.x series on, OpenVPN fully supports IPv6 as a protocol of the virtual network inside a tunnel and the OpenVPN applications can also establish connections via IPv6.<ref>[https://community.openvpn.net/openvpn/wiki/IPv6 OpenVPN community wiki], IPv6 in OpenVPN - retrieved 8 December 2013</ref>
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 [[TUN/TAP|Universal TUN/TAP driver]]. It can create either a [[OSI model#Layer 3: Network layer|layer-3]] based IP tunnel (TUN), or a [[OSI model#Layer 2: Data link layer|layer-2]] based Ethernet TAP that can carry any type of Ethernet traffic. OpenVPN can optionally use the [[Lempel–Ziv–Oberhumer|LZO]] compression library to compress the data stream. Port 1194 is the official [[Internet Assigned Numbers Authority|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.
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 can "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 [[TUN/TAP|Universal TUN/TAP driver]]. It can create either a [[OSI model#Layer 3: Network layer|layer-3]] based IP tunnel (TUN), or a [[OSI model#Layer 2: Data link layer|layer-2]] based Ethernet TAP that can carry any type of Ethernet traffic. OpenVPN can optionally use the [[Lempel–Ziv–Oberhumer|LZO]] compression library to compress the data stream. Port 1194 is the official [[Internet Assigned Numbers Authority|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 [[Internet service provider|ISP]] may block specific [[Virtual private network|VPN]] protocols in order to force users to subscribe to a higher-priced, "business grade" service tier. For example, [[Comcast]] previously declared that their @Home product was, and had always been, designated as a residential service and did not allow the use of commercial applications. Their argument was that conducting [[remote work]] via a VPN can adversely affect the network performance of their regular residential subscribers. They offered an alternative, @Home Professional, this would cost more than @Home product. So, anyone wishing to use VPN would have to subscribe to higher-priced, business-grade service tier.<ref>{{Cite web|title=OpenVPN VPN Protocol|url=https://privacyhq.com/documentation/openvpn-vpn-protocol/|access-date=2021-06-24|website=privacyhq.com|language=en}}</ref>
OpenVPN's use of common network protocols (TCP and UDP) makes it a desirable alternative to [[IPsec]] in situations where an [[Internet service provider|ISP]] may block specific [[Virtual private network|VPN]] protocols in order to force users to subscribe to a higher-priced, "business grade" service tier. For example, [[Comcast]] previously declared that their @Home product was, and had always been, designated as a residential service and did not allow the use of commercial applications. Their argument was that conducting [[remote work]] via a VPN can adversely affect the network performance of their regular residential subscribers. They offered an alternative, @Home Professional, which would cost more than the @Home product. So, anyone wishing to use a VPN would have to subscribe to a higher-priced, business-grade service tier.<ref>{{Cite web|title=OpenVPN VPN Protocol|url=https://privacyhq.com/documentation/openvpn-vpn-protocol/|access-date=2021-06-24|website=privacyhq.com|language=en}}</ref>


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.<ref>{{cite web|last=Murray|first=Mike|archive-url=https://web.archive.org/web/20210320203759/https://www.thegeekpub.com/271035/openvpn-mtu-finding-the-correct-settings|archive-date=20 March 2021|access-date=20 July 2022|title=OPENVPN MTU: Finding The Correct Settings|url=https://www.thegeekpub.com/271035/openvpn-mtu-finding-the-correct-settings|url-status=live|website=The Geek Pub|date=20 March 2021 }}</ref> If this becomes untrue, performance falls off dramatically due to the [[TCP meltdown problem]].<ref>{{cite web|url=http://sites.inka.de/bigred/devel/tcp-tcp.html|title=Why TCP Over TCP Is A Bad Idea|first=Olaf|last=Titz|date=23 April 2001|access-date=17 October 2015}}</ref><ref>{{cite conference|bibcode=2005SPIE.6011..138H|title=Understanding TCP over TCP: effects of TCP tunneling on end-to-end throughput and latency|author1=Honda, Osamu|author2=Ohsaki, Hiroyuki|author3=Imase, Makoto|author4=Ishizuka, Mika|author5=Murayama, Junichi|s2cid=8945952|book-title=Performance, Quality of Service, and Control of Next-Generation Communication and Sensor Networks III|volume=6011|date=October 2005|doi=10.1117/12.630496|citeseerx=10.1.1.78.5815|editor1-last=Atiquzzaman|editor1-first=Mohammed|editor2-last=Balandin|editor2-first=Sergey I.}}</ref>
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.<ref>{{cite web|last=Murray|first=Mike|archive-url=https://web.archive.org/web/20210320203759/https://www.thegeekpub.com/271035/openvpn-mtu-finding-the-correct-settings|archive-date=20 March 2021|access-date=20 July 2022|title=OPENVPN MTU: Finding The Correct Settings|url=https://www.thegeekpub.com/271035/openvpn-mtu-finding-the-correct-settings|url-status=live|website=The Geek Pub|date=20 March 2021 }}</ref> If this becomes untrue, performance falls off dramatically due to the [[TCP meltdown problem]].<ref>{{cite web|url=http://sites.inka.de/bigred/devel/tcp-tcp.html|title=Why TCP Over TCP Is A Bad Idea|first=Olaf|last=Titz|date=23 April 2001|access-date=17 October 2015}}</ref><ref>{{cite conference|bibcode=2005SPIE.6011..138H|title=Understanding TCP over TCP: effects of TCP tunneling on end-to-end throughput and latency|author1=Honda, Osamu|author2=Ohsaki, Hiroyuki|author3=Imase, Makoto|author4=Ishizuka, Mika|author5=Murayama, Junichi|s2cid=8945952|book-title=Performance, Quality of Service, and Control of Next-Generation Communication and Sensor Networks III|volume=6011|date=October 2005|doi=10.1117/12.630496|citeseerx=10.1.1.78.5815|editor1-last=Atiquzzaman|editor1-first=Mohammed|editor2-last=Balandin|editor2-first=Sergey I.}}</ref>


===Security===
===Security===
OpenVPN offers various internal security features. It has up to [[256-bit]] encryption through the [[OpenSSL]] library, although some service providers may offer lower rates, effectively providing some of the fastest VPN available to consumers. OpenVPN also supports [[Forward secrecy|Perfect Forward Secrecy (PFS)]], which regenerates encryption keys at set intervals, ensuring that even if one key is compromised, previous and future data remains secure. Additionally, OpenVPN can be configured with various encryption ciphers, such as ChaCha20 and AES-256.<ref>{{Cite web |date=2023-11-29 |title=OpenVPN explained: Definition, how it works, and safety {{!}} NordVPN |url=https://nordvpn.com/de/blog/what-is-openvpn/ |access-date=2024-09-10 |website=nordvpn.com |language=de}}</ref> It runs in [[userspace]] instead of requiring IP stack (therefore kernel) operation. OpenVPN has the ability to [[Privilege separation|drop root privileges]], use [http://www.opengroup.org/onlinepubs/009695399/functions/mlockall.html mlockall] to prevent swapping sensitive data to disk, enter a [[chroot|chroot jail]] after initialization, and apply a [[Selinux|SELinux]] context after initialization.
OpenVPN offers various internal security features. It has up to [[256-bit]] encryption through the [[OpenSSL]] library, although some service providers may offer lower rates, effectively providing some of the fastest VPN available to consumers. OpenVPN also supports [[Forward secrecy|Perfect Forward Secrecy (PFS)]], which regenerates encryption keys at set intervals, ensuring that even if one key is compromised, previous and future data remains secure. Additionally, OpenVPN can be configured with various encryption ciphers, such as ChaCha20 and AES-256.<ref>{{Cite web |date=2023-11-29 |title=OpenVPN explained: Definition, how it works, and safety {{!}} NordVPN |url=https://nordvpn.com/de/blog/what-is-openvpn/ |access-date=2024-09-10 |website=nordvpn.com |language=de}}</ref> It runs in [[userspace]] instead of requiring IP stack (therefore kernel) operation. OpenVPN has the ability to [[Privilege separation|drop root privileges]], use [http://www.opengroup.org/onlinepubs/009695399/functions/mlockall.html mlockall] to prevent swapping sensitive data to disk, enter a [[chroot|chroot jail]] after initialization, and apply a [[Selinux|SELinux]] context after initialization.


OpenVPN runs a custom security protocol based on SSL and TLS,<ref name=openvpn-protocol /> rather than supporting IKE, IPsec, L2TP or [[Point-to-Point Tunneling Protocol|PPTP]].
OpenVPN runs a custom security protocol based on SSL and TLS,<ref name=openvpn-protocol /> rather than supporting IKE, IPsec, L2TP or [[Point-to-Point Tunneling Protocol|PPTP]].


OpenVPN offers support of [[smart card]]s via [[PKCS11|PKCS#11]]-based cryptographic tokens.
OpenVPN supports the use of [[smart card]]s via [[PKCS11|PKCS#11]]-based cryptographic tokens.


===Extensibility===
===Extensibility===
 
OpenVPN can be extended with third-party [[plug-in (computing)|plug-ins]] or scripts, which can be called at defined entry points.<ref>{{cite web|url=http://openvpn.net/index.php/open-source/documentation/manuals/427-openvpn-22.html#lbAQ|title=OpenVPN script entry points|publisher=Openvpn.net|access-date=30 July 2012|archive-date=9 August 2012|archive-url=https://web.archive.org/web/20120809012329/http://openvpn.net/index.php/open-source/documentation/manuals/427-openvpn-22.html#lbAQ|url-status=dead}}</ref><ref>[https://web.archive.org/web/20110728041758/http://openvpn.git.sourceforge.net/git/gitweb.cgi?p=openvpn%2Fopenvpn.git%3Ba%3Dblob%3Bf%3Dopenvpn-plugin.h%3Bhb%3DHEAD OpenVPN plug-in entry points for C based modules].</ref> 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 (programming language)|C]], while the scripts interface can execute any scripts or binaries available to OpenVPN. In the OpenVPN source code<ref>{{cite web|url=https://openvpn.git.sourceforge.net/git/gitweb.cgi?p=openvpn/openvpn.git;a=tree;h=HEAD|title=OpenVPN example plug-ins|publisher=Openvpn.git.sourceforge.net|access-date=30 July 2012}}</ref> there are some examples of such plug-ins, including a [[Pluggable authentication module|PAM]] authentication plug-in. Several third-party plug-ins also exist to authenticate against [[Lightweight Directory Access Protocol|LDAP]] or SQL databases such as [[SQLite]] and [[MySQL]].<ref>[https://community.openvpn.net/openvpn/wiki/RelatedProjects OpenVPN Community Wiki - Related Projects]</ref>
OpenVPN can be extended with third-party [[plug-in (computing)|plug-ins]] or scripts, which can be called at defined entry points.<ref>{{cite web|url=http://openvpn.net/index.php/open-source/documentation/manuals/427-openvpn-22.html#lbAQ|title=OpenVPN script entry points|publisher=Openvpn.net|access-date=30 July 2012}}</ref><ref>[https://web.archive.org/web/20110728041758/http://openvpn.git.sourceforge.net/git/gitweb.cgi?p=openvpn%2Fopenvpn.git%3Ba%3Dblob%3Bf%3Dopenvpn-plugin.h%3Bhb%3DHEAD OpenVPN plug-in entry points for C based modules].</ref> 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 (programming language)|C]], while the scripts interface can execute any scripts or binaries available to OpenVPN. In the OpenVPN source code<ref>{{cite web|url=http://openvpn.git.sourceforge.net/git/gitweb.cgi?p=openvpn/openvpn.git;a=tree;h=HEAD|title=OpenVPN example plug-ins|publisher=Openvpn.git.sourceforge.net|access-date=30 July 2012}}</ref> there are some examples of such plug-ins, including a [[Pluggable authentication module|PAM]] authentication plug-in. Several third-party plug-ins also exist to authenticate against [[Lightweight Directory Access Protocol|LDAP]] or SQL databases such as [[SQLite]] and [[MySQL]].<ref>[https://community.openvpn.net/openvpn/wiki/RelatedProjects OpenVPN Community Wiki - Related Projects]</ref>


===Header===
===Header===
{|class=wikitable style="margin:0 auto;text-align:center"
{|class=wikitable style="margin:0 auto;text-align:center"
|+OpenVPN header format
|+OpenVPN header format
Line 161: Line 163:
==Platforms==
==Platforms==


It is available on [[Solaris (operating system)|Solaris]], [[Linux]], [[OpenBSD]], [[FreeBSD]], [[NetBSD]], [[QNX]], [[macOS]] and [[comparison of Microsoft Windows versions|Windows XP and later]].<ref>{{cite web|title=Downloads|url=https://openvpn.net/index.php/open-source/downloads.html|website=openvpn.net|publisher=OpenVPN|access-date=6 August 2015}}</ref> OpenVPN is available for [[mobile operating system]]s including [[Maemo]],<ref>{{cite web|url=http://maemo.org/downloads/product/Maemo5/openvpn/|title=OpenVPN Maemo package|publisher=Maemo.org|access-date=30 July 2012}}</ref> [[Windows Mobile]] 6.5 and below,<ref>{{cite web|url=http://ovpnppc.ziggurat29.com/ovpnppc-main.htm|title=OpenVPN for PocketPC|publisher=Ovpnppc.ziggurat29.com|date=1 April 2007|access-date=30 July 2012}}</ref> [[iOS]] 3GS+ devices,<ref>{{cite web|url=https://apps.apple.com/us/app/openvpn-connect/id590379981|title=OpenVPN Connect|publisher=OpenVPN Technologies|date=16 January 2013|access-date=16 January 2013}}</ref> [[IOS jailbreaking|jailbroken]] [[iOS]] 3.1.2+ devices,<ref>{{cite web|url=http://guizmovpn.com|title=GuizmOVPN - OpenVPN GUI for iPhone/iPad|publisher=guizmovpn.com|date=30 September 2007|access-date=30 September 2012}}</ref> [[Android (operating system)|Android]] 4.0+ devices, and Android devices that have had the [[Cyanogenmod]] aftermarket firmware flashed<ref>{{cite web|url=https://github.com/CyanogenMod/android_vendor_cyanogen/blob/eclair/CHANGELOG|title=CHANGELOG at eclair from CyanogenMod's android_vendor_cyanogen|date=7 July 2010|work=[[GitHub]]|publisher=cyanogen|access-date=28 October 2010}} [https://github.com/cyanogen/android_vendor_cyanogen/blob/eclair/CHANGELOG Nexus One Cyanogenmod changelog]</ref> or have the correct kernel module installed.<ref>{{cite web|url=http://ww43.vpnblog.info/android-openvpn-strongvpn.html|archive-url=https://web.archive.org/web/20110526083443/https://vpnblog.info/android-openvpn-strongvpn.html|title=How to setup and configure OpenVPN on Android rooted device &#124; VPN blog is actual information about VPN|website=Vpnblog.info|archive-date=26 May 2011|url-status=dead}}</ref> 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 [[Remote Desktop Services|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 file|binary]] for both [[Client (computing)|client]] and [[server (computing)|server]] connections, an optional [[configuration file]], and one or more key files depending on the authentication method used.
It is available on [[Solaris (operating system)|Solaris]], [[Linux]], [[OpenBSD]], [[FreeBSD]], [[NetBSD]], [[QNX]], [[macOS]] and [[comparison of Microsoft Windows versions|Windows XP and later]].<ref>{{cite web|title=Downloads|url=https://openvpn.net/index.php/open-source/downloads.html|website=openvpn.net|publisher=OpenVPN|access-date=6 August 2015}}</ref> OpenVPN is available for [[mobile operating system]]s including [[Maemo]],<ref>{{cite web|url=http://maemo.org/downloads/product/Maemo5/openvpn/|title=OpenVPN Maemo package|publisher=Maemo.org|access-date=30 July 2012}}</ref> [[Windows Mobile]] 6.5 and below,<ref>{{cite web|url=http://ovpnppc.ziggurat29.com/ovpnppc-main.htm|title=OpenVPN for PocketPC|publisher=Ovpnppc.ziggurat29.com|date=1 April 2007|access-date=30 July 2012|archive-date=20 September 2012|archive-url=https://web.archive.org/web/20120920065335/http://ovpnppc.ziggurat29.com/ovpnppc-main.htm|url-status=dead}}</ref> [[iOS]] 3GS+ devices,<ref>{{cite web|url=https://apps.apple.com/us/app/openvpn-connect/id590379981|title=OpenVPN Connect|publisher=OpenVPN Technologies|date=16 January 2013|access-date=16 January 2013}}</ref> [[IOS jailbreaking|jailbroken]] [[iOS]] 3.1.2+ devices,<ref>{{cite web|url=http://guizmovpn.com|title=GuizmOVPN - OpenVPN GUI for iPhone/iPad|publisher=guizmovpn.com|date=30 September 2007|access-date=30 September 2012}}</ref> [[Android (operating system)|Android]] 4.0+ devices, and Android devices that have had the [[Cyanogenmod]] aftermarket firmware flashed<ref>{{cite web|url=https://github.com/CyanogenMod/android_vendor_cyanogen/blob/eclair/CHANGELOG|title=CHANGELOG at eclair from CyanogenMod's android_vendor_cyanogen|date=7 July 2010|work=[[GitHub]]|publisher=cyanogen|access-date=28 October 2010}} [https://github.com/cyanogen/android_vendor_cyanogen/blob/eclair/CHANGELOG Nexus One Cyanogenmod changelog]</ref> or have the correct kernel module installed.<ref>{{cite web|url=http://ww43.vpnblog.info/android-openvpn-strongvpn.html|archive-url=https://web.archive.org/web/20110526083443/https://vpnblog.info/android-openvpn-strongvpn.html|title=How to setup and configure OpenVPN on Android rooted device &#124; VPN blog is actual information about VPN|website=Vpnblog.info|archive-date=26 May 2011|url-status=dead}}</ref> 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 [[Remote Desktop Services|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 file|binary]] for both [[Client (computing)|client]] and [[server (computing)|server]] connections, an optional [[configuration file]], and one or more key files depending on the authentication method used.


===Firmware implementations===
===Firmware implementations===
OpenVPN has been integrated into several [[Router (computing)|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.
OpenVPN has been integrated into several [[Router (computing)|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.


Line 176: Line 177:
|-
|-
|[[Gargoyle (router firmware)|Gargoyle]]||Free||Eric Bishop||<ref>[https://www.gargoyle-router.com/wiki/doku.php?id=openvpn&s Gargoyle Wiki - OpenVPN]</ref>
|[[Gargoyle (router firmware)|Gargoyle]]||Free||Eric Bishop||<ref>[https://www.gargoyle-router.com/wiki/doku.php?id=openvpn&s Gargoyle Wiki - OpenVPN]</ref>
|-
|[[IPFire]]||Free||IPFire Project||<ref>[https://www.ipfire.org/docs/configuration/services/openvpn IPFire OpenVPN Documentation]</ref>
|-
|-
|[[OpenWrt]]||Free||Community driven development||<ref>{{cite web|url=https://openwrt.org/docs/guide-user/services/vpn/openvpn/start|title=OpenVPN - OpenWrt Wiki|publisher=openwrt.org|access-date=2018-06-11}}</ref>
|[[OpenWrt]]||Free||Community driven development||<ref>{{cite web|url=https://openwrt.org/docs/guide-user/services/vpn/openvpn/start|title=OpenVPN - OpenWrt Wiki|publisher=openwrt.org|access-date=2018-06-11}}</ref>
|-
|-
|[[OPNsense]]||Free||Deciso BV||<ref>{{cite web|url=https://opnsense.org/opnsense-17-1-released/|title=opnsense.org - OPNsense 17.1 Release Announcement}}</ref>
|[[OPNsense]]||Free||Deciso BV||<ref>{{cite web|url=https://opnsense.org/opnsense-17-1-released/|title=opnsense.org - OPNsense 17.1 Release Announcement|access-date=9 August 2018|archive-date=6 August 2018|archive-url=https://web.archive.org/web/20180806180814/https://opnsense.org/opnsense-17-1-released/|url-status=dead}}</ref>
|-
|-
|[[pfSense]]||Free||Rubicon Communications, LLC (Netgate)||
|[[pfSense]]||Free||Rubicon Communications, LLC (Netgate)||
Line 201: Line 204:
*OpenVPN Community Edition, which is a free and open-source version
*OpenVPN Community Edition, which is a free and open-source 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.<ref name="editions">{{cite web|url=https://openvpn.net/index.php/access-server/section-faq-openvpn-as/general/225-compare-openvpn-community-and-enterprise-editions.html|title=OpenVPN Product Comparison|access-date=2017-01-15}}</ref><ref name="accessServerDesc">{{cite web|url=https://openvpn.net/index.php/access-server/section-faq-openvpn-as/general/133-what-is-openvpn-access-server.html|title=What is OpenVPN Access Server (OpenVPN-AS)?|access-date=2017-01-15}}</ref> The Access Server edition relies heavily on [[iptables]] for [[load balancing (computing)|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.<ref name="accessServerDetails">{{cite web|url=https://github.com/wget/chocolatey_package_openvpn/issues/2#issuecomment-272799486|title=Regarding chocolatey.org repository · Issue #2 · wget/chocolatey_package_openvpn|website=[[GitHub]] |date=2017-01-16|access-date=2017-01-16}}</ref> 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.<ref name="asCommunityClient">{{cite web|url=https://openvpn.net/index.php/access-server/section-faq-openvpn-as/client-configuration/140-can-i-use-open-source-openvpn-client-gui-to-connect-to-the-access-server.html|title=Can I use a community OpenVPN client to connect to the Access Server?|access-date=2017-01-16}}</ref>
*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.<ref name="editions">{{cite web|url=https://openvpn.net/index.php/access-server/section-faq-openvpn-as/general/225-compare-openvpn-community-and-enterprise-editions.html|title=OpenVPN Product Comparison|access-date=2017-01-15}}</ref><ref name="accessServerDesc">{{cite web|url=https://openvpn.net/index.php/access-server/section-faq-openvpn-as/general/133-what-is-openvpn-access-server.html|title=What is OpenVPN Access Server (OpenVPN-AS)?|access-date=2017-01-15}}</ref> The Access Server edition relies heavily on [[iptables]] for [[load balancing (computing)|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.<ref name="accessServerDetails">{{cite web|url=https://github.com/wget/chocolatey_package_openvpn/issues/2#issuecomment-272799486|title=Regarding chocolatey.org repository · Issue #2 · wget/chocolatey_package_openvpn|website=[[GitHub]] |date=2017-01-16|access-date=2017-01-16}}</ref> 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.<ref name="asCommunityClient">{{cite web|url=https://openvpn.net/index.php/access-server/section-faq-openvpn-as/client-configuration/140-can-i-use-open-source-openvpn-client-gui-to-connect-to-the-access-server.html|title=Can I use a community OpenVPN client to connect to the Access Server?|access-date=2017-01-16}}</ref>
== Detectability ==
OpenVPN connections can be easily detected using deep packet inspection,<ref>{{Cite web|title=Detecting VPN Traffic through Encapsulated TCP Behavior|url=https://www.petsymposium.org/foci/2024/foci-2024-0016.pdf|access-date=2025-08-07|work=www.petsymposium.org}}</ref><ref>{{Cite web|title=Bypassing Deep Packet Inspection: Tunneling Traffic Over TLS VPN|url=https://www.linuxjournal.com/content/bypassing-deep-packet-inspection-tunneling-traffic-over-tls-vpn|access-date=2025-08-07|work=www.linuxjournal.com}}</ref><ref>{{Cite web|title=Study Shows OpenVPN Traffic Can Be Easily Identified and Blocked|url=https://cyberinsider.com/openvpn-traffic-can-be-identified-and-blocked/|access-date=2025-08-07|work=cyberinsider.com |date=22 March 2024 }}</ref> based on known header data of the transmitted packets, regardless of the protocol or port used. While deep packet inspection does not allow determining the contents of the encrypted tunnel, it can be used to block the connection, identify communication participants, and log related data. This is particularly important when the use of VPN connections is prohibited in certain environments, for example, in countries where encrypted connections are banned, or under civil legislation when circumventing network blocks in corporate networks.<ref>{{Cite web|title=Country-Based VPN Connection Restrictions: How to Bypass Them? - 🚀 VPS Hosting, Webhosting a Dedikované Servery|url=https://mydreams.cz/en/hosting-wiki/4613-country-based-vpn-connection-restrictions-how-to-bypass-them.html|access-date=2025-08-07|work=mydreams.cz}}</ref><ref>{{Cite web|title=What Is a VPN?|url=https://www.cyberhaven.com/infosec-essentials/what-is-a-vpn|access-date=2025-08-07|work=www.cyberhaven.com}}</ref><ref>{{Cite web|title=VPN Blockers: Common Methods Used to Detect VPNs|url=https://ascendantusa.com/2025/02/12/vpn-blockers/|access-date=2025-08-07|work=ascendantusa.com |date=12 February 2025 }}</ref><ref>{{Cite web|title=Are VPNs Legal in Egypt? Navigating the Regulatory Landscape|url=https://eg.andersen.com/are-vpns-legal-in-egypt/|access-date=2025-08-07|work=eg.andersen.com |date=28 March 2024 }}</ref><ref>{{Cite web|title=Are VPNs Legal? Where You Can (and Can't) Use a VPN|url=https://nym.com/blog/are-vpns-legal|access-date=2025-08-07|work=nym.com |date=25 April 2025 }}</ref>


==See also==
==See also==
Line 208: Line 214:
*[[OpenSSH]]
*[[OpenSSH]]
*[[Secure Socket Tunneling Protocol|Secure Socket Tunneling Protocol (SSTP)]]
*[[Secure Socket Tunneling Protocol|Secure Socket Tunneling Protocol (SSTP)]]
*[[stunnel]]
*[[Stunnel]]
*[[Tunnelblick]]
*[[Tunnelblick]]
*[[WireGuard]]
*[[WireGuard]]
Line 219: Line 225:
*{{official}}
*{{official}}
*[https://community.openvpn.net Community website]
*[https://community.openvpn.net Community website]
*{{cite web|url=https://archive.org/details/HantsLUG_openvpn|title=OpenVPN presentation and demonstration|publisher=Hampshire Linux User Group|website=Archive|date=2 February 2008|first=Adrian|last=Bridgett}} [http://hantslug.org.uk/wiki/TechTalks Tech Talks]
*{{cite web|url=https://archive.org/details/HantsLUG_openvpn|title=OpenVPN presentation and demonstration|publisher=Hampshire Linux User Group|website=Archive|date=2 February 2008|first=Adrian|last=Bridgett}} [http://hantslug.org.uk/wiki/TechTalks Tech Talks] {{Webarchive|url=https://web.archive.org/web/20190529050858/http://www.hantslug.org.uk/wiki/TechTalks |date=29 May 2019 }}


{{VPN}}
{{VPN}}

Latest revision as of 23:42, 28 December 2025

Template:Short description Template:Use dmy dates Script error: No such module "Infobox".Template:Template other Script error: No such module "Check for unknown parameters".Script error: No such module "Check for conflicting parameters".

OpenVPN is a virtual private network (VPN) system that implements techniques to create secure point-to-point or site-to-site connections in routed or bridged configurations and remote access facilities. It implements both client and server applications.

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. As it uses a custom security protocol[1] that utilizes SSL/TLS for key exchange. It is capable of traversing network address translators (NATs) and firewalls.[2]

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

It was written by James Yonan and is free software, released under the terms of the GNU General Public License version 2 (GPLv2).[4] Additionally, commercial licenses are available.[5]

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.[6][7] Support for mbed TLS is available starting from version 2.3.[8]

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. Script error: No such module "Unsubst". 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.Script error: No such module "Unsubst".

Networking

Script error: No such module "Unsubst". OpenVPN can run over User Datagram Protocol (UDP) or Transmission Control Protocol (TCP) transports, multiplexing created SSL tunnels on a single TCP/UDP port[9] (RFC 3948 for UDP).[10]

From 2.3.x series on, OpenVPN fully supports IPv6 as a protocol of the virtual network inside a tunnel and the OpenVPN applications can also establish connections via IPv6.[11] 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 can "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. For example, Comcast previously declared that their @Home product was, and had always been, designated as a residential service and did not allow the use of commercial applications. Their argument was that conducting remote work via a VPN can adversely affect the network performance of their regular residential subscribers. They offered an alternative, @Home Professional, which would cost more than the @Home product. So, anyone wishing to use a VPN would have to subscribe to a higher-priced, business-grade service tier.[12]

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.[13] If this becomes untrue, performance falls off dramatically due to the TCP meltdown problem.[14][15]

Security

OpenVPN offers various internal security features. It has up to 256-bit encryption through the OpenSSL library, although some service providers may offer lower rates, effectively providing some of the fastest VPN available to consumers. OpenVPN also supports Perfect Forward Secrecy (PFS), which regenerates encryption keys at set intervals, ensuring that even if one key is compromised, previous and future data remains secure. Additionally, OpenVPN can be configured with various encryption ciphers, such as ChaCha20 and AES-256.[16] 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,[1] rather than supporting IKE, IPsec, L2TP or PPTP.

OpenVPN supports the use 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.[17][18] 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[19] 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.[20]

Header

OpenVPN header format
Offsets Octet 0 1 2 3
Octet Bit 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0 0 Opcode KeyID Session ID
4 32 Session ID
8 64 Session ID HMAC
12 96 HMAC
24 192
28 224 HMAC Packet ID
32 256 Packet ID Net Time
36 288 Net Time Msg Array Len Message Packet ID #

Platforms

It is available on Solaris, Linux, OpenBSD, FreeBSD, NetBSD, QNX, macOS and Windows XP and later.[21] OpenVPN is available for mobile operating systems including Maemo,[22] Windows Mobile 6.5 and below,[23] iOS 3GS+ devices,[24] jailbroken iOS 3.1.2+ devices,[25] Android 4.0+ devices, and Android devices that have had the Cyanogenmod aftermarket firmware flashed[26] or have the correct kernel module installed.[27] 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:

Notable firmware packages with OpenVPN integration
Firmware package Cost Developer References
DD-WRT Free NewMedia-NET GmbH [28]
Gargoyle Free Eric Bishop [29]
IPFire Free IPFire Project [30]
OpenWrt Free Community driven development [31]
OPNsense Free Deciso BV [32]
pfSense Free Rubicon Communications, LLC (Netgate)
Tomato Free Keith Moyer [33][34]

OpenVPN has also been implemented in some manufacturer router firmware.

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 operating system forked from the Vyatta software router.

Licensing

OpenVPN is available in two versions:

  • OpenVPN Community Edition, which is a free and open-source 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.[35][36] 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.[37] 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.[38]

Detectability

OpenVPN connections can be easily detected using deep packet inspection,[39][40][41] based on known header data of the transmitted packets, regardless of the protocol or port used. While deep packet inspection does not allow determining the contents of the encrypted tunnel, it can be used to block the connection, identify communication participants, and log related data. This is particularly important when the use of VPN connections is prohibited in certain environments, for example, in countries where encrypted connections are banned, or under civil legislation when circumventing network blocks in corporate networks.[42][43][44][45][46]

See also

Script error: No such module "Portal".

References

<templatestyles src="Reflist/styles.css" />

  1. a b Script error: No such module "citation/CS1".
  2. Script error: No such module "citation/CS1".
  3. Script error: No such module "citation/CS1".
  4. LinuxSecurity.com - OpenVPN: An Introduction and Interview with Founder, James Yonan
  5. openvpn.net: Pricing, retrieved 12 December 2018
  6. Script error: No such module "citation/CS1".
  7. Script error: No such module "citation/CS1".
  8. Overview of changes in OpenVPN v2.3 - ChangesInOpenvpn23 - OpenVPN Community
  9. OpenVPN man page, section "TLS Mode Options"
  10. Script error: No such module "citation/CS1".
  11. OpenVPN community wiki, IPv6 in OpenVPN - retrieved 8 December 2013
  12. Script error: No such module "citation/CS1".
  13. Script error: No such module "citation/CS1".
  14. Script error: No such module "citation/CS1".
  15. Script error: No such module "citation/CS1".
  16. Script error: No such module "citation/CS1".
  17. Script error: No such module "citation/CS1".
  18. OpenVPN plug-in entry points for C based modules.
  19. Script error: No such module "citation/CS1".
  20. OpenVPN Community Wiki - Related Projects
  21. Script error: No such module "citation/CS1".
  22. Script error: No such module "citation/CS1".
  23. Script error: No such module "citation/CS1".
  24. Script error: No such module "citation/CS1".
  25. Script error: No such module "citation/CS1".
  26. Script error: No such module "citation/CS1". Nexus One Cyanogenmod changelog
  27. Script error: No such module "citation/CS1".
  28. dd-wrt.com - OpenVPN
  29. Gargoyle Wiki - OpenVPN
  30. IPFire OpenVPN Documentation
  31. Script error: No such module "citation/CS1".
  32. Script error: No such module "citation/CS1".
  33. Script error: No such module "citation/CS1".
  34. LinksysInfo.org – VPN build with Web GUI
  35. Script error: No such module "citation/CS1".
  36. Script error: No such module "citation/CS1".
  37. Script error: No such module "citation/CS1".
  38. Script error: No such module "citation/CS1".
  39. Script error: No such module "citation/CS1".
  40. Script error: No such module "citation/CS1".
  41. Script error: No such module "citation/CS1".
  42. Script error: No such module "citation/CS1".
  43. Script error: No such module "citation/CS1".
  44. Script error: No such module "citation/CS1".
  45. Script error: No such module "citation/CS1".
  46. Script error: No such module "citation/CS1".

Script error: No such module "Check for unknown parameters".

External links

Template:VPN