0
0
mirror of https://github.com/OpenVPN/openvpn3.git synced 2024-09-20 20:13:05 +02:00
OpenVPN 3 is a C++ class library that implements the functionality of an OpenVPN client, and is protocol-compatible with the OpenVPN 2.x branch.
Go to file
James Yonan 7927982371 Added "Exclude Routes Emulation" feature for both IPv4 and IPv6.
This feature is needed by Android because it lacks a native
VPN API method for excluding routes.

If redirect-gateway is enabled and exclude routes are present,
such as:

  route 54.215.128.71 255.255.255.255 net_gateway

the client will emulate the excluded route(s) by adding routes
that encompass the entire IPv4/v6 address space EXCEPT for the
excluded route.  These routes will be used for redirect-gateway
instead of the standard 0.0.0.0/0 and ::0/0.
2015-02-28 15:09:53 -07:00
client Add extension parameter to ProfileMerge constructor to allow 2015-02-10 15:48:08 -07:00
deps Updated Android build system to support ARM64: 2015-02-27 09:20:35 -07:00
doc OpenVPN Protocol extensions update. 2015-01-06 17:16:06 -07:00
javacli Updated Android build system to support ARM64: 2015-02-27 09:20:35 -07:00
openvpn Added "Exclude Routes Emulation" feature for both IPv4 and IPv6. 2015-02-28 15:09:53 -07:00
scripts Updated Android build system to support ARM64: 2015-02-27 09:20:35 -07:00
test Added "Exclude Routes Emulation" feature for both IPv4 and IPv6. 2015-02-28 15:09:53 -07:00
vars Updated Android build system to support ARM64: 2015-02-27 09:20:35 -07:00
COPYING Added AGPL text in COPYING. 2014-08-28 15:05:23 -06:00
README.rst Added README.rst. Contains basic instructions for building 2014-08-31 14:05:13 -06:00

OpenVPN 3
=========

OpenVPN 3 is a C++ class library that implements the functionality
of an OpenVPN client, and is protocol-compatible with the OpenVPN
2.x branch.

OpenVPN 3 includes a minimal client wrapper (``cli``) that links in with
the library and provides basic command line functionality.

NOTE: As of 2014, OpenVPN 3 is primarily of interest to developers
because it does not yet replicate the full functionality of OpenVPN 2.

Building OpenVPN 3 client on Mac OS X
-------------------------------------

OpenVPN 3 should be built in a non-root Mac OS X account.
Make sure that Xcode is installed with optional command-line tools.
(These instructions have been tested with Xcode 5.1.1).

Create the directories ``~/src`` and ``~/src/mac``::

    mkdir -p ~/src/mac

Clone the OpenVPN 3 repo::

    cd ~/src
    mkdir ovpn3
    cd ovpn3
    git clone ... core

Export the shell variable ``O3`` to point to the OpenVPN 3 top level
directory::

    export O3=~/src/ovpn3

Download source tarballs (``.tar.gz`` or ``.tgz``) for these dependency
libraries into ``~/Downloads``

See the file ``$O3/core/deps/lib-versions`` for the expected
version numbers of each dependency.  If you want to use a different
version of the library than listed here, you can edit this file.

1. Boost -- http://www.boost.org/
2. PolarSSL (1.3.4 or higher) -- https://polarssl.org/
3. Snappy -- https://code.google.com/p/snappy/
4. LZ4 -- https://code.google.com/p/lz4/

Note that while LZO and OpenSSL are listed in lib-versions, they are
not required for Mac builds.

Build the dependencies::

    OSX_ONLY=1 $O3/core/scripts/mac/build-all

Now build the OpenVPN 3 client executable::

    cd $O3/core
    . vars/vars-osx
    . vars/setpath
    cd test/ovpncli
    STRIP=1 PSSL=1 SNAP=1 LZ4=1 build cli

This will build the OpenVPN 3 client library with a small client
wrapper (``cli``).  It will also statically link in all external
dependencies (Boost, PolarSSL,
LZ4, and Snappy), so ``cli`` may be distributed to other Macs and
will run as a standalone executable.

These build scripts will create a "fat" Mac OS X executable with
support for both **x86_x64** and **i386** architectures, with a minimum
deployment target of 10.6.x.  The Mac OS X tuntap driver is not
required, as OpenVPN 3 can use the integrated utun interface if
available.

To view the client wrapper options::

    ./cli -h

To connect::

    ./cli client.ovpn