The primary Linux distributions targeted and regularly tested are:
- Debian 11 and newer
- Fedora 38 and newer
- Red Hat Enterprise Linux (RHEL) 8 and newer
- Ubuntu 20.04 and newer
This list is not an exclusive list, and it will most likely work on all other distributions with recent enough dependencies.
The following dependencies are needed:
-
A C++ compiler capable of at least
-std=c++17
-
Meson Build System 0.58 or newer
-
OpenSSL 1.1.1 or newer
-
GDBus++ v1 or newer
-
GLib2 2.56 or newer
-
jsoncpp 0.10.5 or newer
-
libcap-ng 0.7.5 or newer
-
liblz4 1.8.4 or newer
-
libuuid 2.23.2 or newer
-
polkit 0.112 or newer
http://www.freedesktop.org/wiki/Software/polkit
Only needed when using the systemd-resolved integration. On Ubuntu this package is called policykit-1.
-
tinyxml2 2.1.0 or newer
-
(optional) libnl3 3.2.29 or newer
http://www.infradead.org/~tgr/libnl/
Only needed when building with DCO support
-
(optional) protobuf 2.4.0 or newer
http://code.google.com/p/protobuf/
Only needed when building with DCO support
-
(optional) Python 3.6 or newer
If Python 3.6 or newer is found, the openvpn2, openvpn3-autoload utilities and the openvpn3 Python module will be built and installed.
-
(optional) Python docutils
http://docutils.sourceforge.net/ This is needed for the
rst2man
utility, used to generate the man pages. -
(optional) Python Jinja2 template engine
https://palletsprojects.com/p/jinja/ Required when enabling the bash-completion support; used to generate the bash-completion script for openvpn2.
-
(optional) selinux-policy-devel
For Linux distributions running with SELinux in enforced mode (like Red Hat Enterprise Linux and Fedora), this is required.
NOTE: This project has recently switched to use Meson. The documentation migth not be 100% up-to-date on all details.
In addition, the GDBus++ library is also very new. This is
currently not available in upstream repositories. Install the
OpenVPN provided package repositories first to get the needed
packages - or build it from source
First install the package dependencies needed to run the build.
-
Building with OpenSSL:
For newer Debian and Ubuntu releases shipping with OpenSSL 1.1 or newer:
# apt-get install
-
Generic build requirements:
# apt-get install build-essential git pkg-config meson libglib2.0-dev \ libjsoncpp-dev uuid-dev liblz4-dev libcap-ng-dev \ libxml2-utils python3-minimal python3-dbus \ python3-docutils python3-jinja2 libxml2-utils \ libtinyxml2-dev policykit-1 libsystemd-dev \ python3-systemd libssl-dev libssl1.1 libgdbuspp-dev
-
Dependencies to build with DCO support:
# apt-get install libnl-3-dev libnl-genl-3-dev protobuf-compiler libprotobuf-dev
-
Generic build requirements:
# yum install gcc-c++ git meson pkgconfig glib2-devel jsoncpp-devel \ libuuid-devel libcap-ng-devel selinux-policy-devel \ lz4-devel zlib-devel libxml2 tinyxml2-devel python3-dbus \ python3-gobject python3-pyOpenSSL python3-jinja2 \ python3-docutils bzip2 polkit systemd-devel \ python3-systemd openssl-devel gdbuspp-devel
-
Dependencies to build with DCO support:
# yum install libnl3-devel protobuf-compiler protobuf protobuf-devel
- Clone this git repository:
git clone git://github.com/OpenVPN/openvpn3-linux
- Enter the
openvpn3-linux
directory:cd openvpn3-linux
- Run:
./bootstrap.sh
The default configuration for the services assumes a service account
openvpn
to be present. If it does not exist you should add one, e.g. by:
# groupadd -r openvpn
# useradd -r -s /sbin/nologin -g openvpn openvpn
If you already have a ./configure
script or have retrieved an
openvpn3-linux-*.tar.xz
tarball generated by make dist
, the following steps
will build the client.
- Run:
meson setup --prefix=/usr _builddir
- Run:
meson compile -C _builddir
- Run (as
root
):meson install -C _builddir
- Run (as
root
):openvpn3-admin init-config --write-configs
You might need to also reload D-Bus configuration to make D-Bus aware of the newly installed service. On most system this happens automatically but occasionally a manual operation is needed:
# systemctl reload dbus
With everything built and installed, it should be possible to run both the
openvpn2
and openvpn3
command line tools - even as an unprivileged
user.
The OpenVPN 3 Linux AWS-VPC add-on is currently unavailable. This will be reintroduced in a later release.
If you want to also install the bash-completion scripts for the
openvpn2
and openvpn3
commands, add -Dbash-completion=enabled
to the meson setup
command, or run:
$ meson configure -Dbash-completion=enabled _builddir
from the root of the project directory.