Documentation

Server 2.x

Add Node#

NOTE: this is LEGACY. Do not use on new deployments. Use ADD_DAEMON_NODE instead!

This document describes how to add a new VPN server to your VPN setup. We assume you setup your current VPN server using deploy_${DIST}.sh.

Adding more servers will allow you to handle more VPN users concurrently.

When using multiple servers, we’ll make a distinction between controller and node(s). The controller runs the portal and API, the node runs the OpenVPN process(es). A typical deploy looks like this:

Those machines can be in the same data center, or in physically different locations.

Prerequisites#

In order to add node(s) to your VPN setup there needs to be a secure way for the controller to communicate with the node(s). Typically you’d use a private VLAN for this. However, how exactly this is done is out of scope here.

We assume your node(s) will be reachable by the controller so it can access the OpenVPN management ports, i.e. TCP ports 11940 and up.

Note: those ports MUST only be available to the controller NOT to the public Internet!

Setup#

Controller#

Initially we’ll leave the controller, your existing VPN server, alone. We’ll just add a new “profile” that is delegated to your new node.

Add a new profile as described here. In addition pay close attention to the following options:

Next, we want to allow access from the node to the vpn-server-api component on the controller. Modify /etc/httpd/conf.d/vpn-server-api.conf and add Require ip lines containing the public IP address(es) of the node. Make sure you restart Apache! NOTE: the traffic from the node to the controller does NOT go over the private VLAN, but connects via HTTPS to the controller!

Next, take note of the secret under apiConsumers => vpn-server-node in /etc/vpn-server-api/config.php, you’ll need it on the node later.

Node#

You can use the deploy_${DIST}_node.sh for installing the node. It will only install the relevant software to connect to your controller and handle VPN connections.

The deploy script will ask for your API URL, which is the full HTTPS URL to your VPN controller. Replace the host name with your controller’s name, e.g. https://vpn.example.org/vpn-server-api/api.php.

You will need the API secret as well that you took note of before, the script will also ask for that!

If everything was setup correctly, the node script should run without any problems!

You can restrict the profiles you deploy on the node. By default, all profiles will be deployed.

You can use the configuration option profileList in /etc/vpn-server-node/config.php. It takes an array containing a list of profiles to deploy on this particular node. The default, when the option is missing, is to deploy all profiles on this node. Example:

'profileList' => ['office', 'sysadm'],

To apply the configuration changes:

$ sudo vpn-maint-apply-changes

If the command is not available, install the vpn-maint-scripts package first.