OpenVPN Security Advisory: Dec 14, 2018
Action needed: Important update for OpenVPN Access Server

Running OpenVPN as a Windows Service

When OpenVPN runs as a service it will start a separate OpenVPN process for each configuration file it finds in the \Program Files\OpenVPN\config directory and will output a logfile of the same name to the \Program Files\OpenVPN\log directory.

When installed as a service, OpenVPN will default to manual start mode. You can go to the “Services” control panel in Control Panel -> Administrative Tools to start the service or to set it to Automatic Start mode.

A sample config file has been provided in \Program Files\OpenVPN\config\sample.ovpn.txt which can be adapted to your needs.

Service Notes:

When you install OpenVPN as a service, you are actually installing openvpnserv.exe which is a service wrapper for OpenVPN, i.e. it reads the config file directory and starts up a separate OpenVPN process for each config file.openvpnserv.exe performs the same function under windows as the /etc/init.d/openvpn startup script does under linux.

When you stop the OpenVPN service, it will send a terminate signal to all OpenVPN processes which were started by it.

If the OpenVPN service wrapper (openvpnserv.exe) encounters fatal errors, it will write them to the windows event log, which can be viewed in Control Panel -> Administrative Tools -> Event Viewer -> Application Log.

If the OpenVPN processes themselves encounter errors, they will write them to their respective log files in the log file directory.

There is a one-to-one correspondence between an OpenVPN process, an OpenVPN config file, an OpenVPN log file, and a TAP-Win32 adapter which represents an endpoint of a VPN tunnel.

OpenVPN tunnels are point-to-point in their simplest form, but can be made point-to-multi-point through the use of bridging or routing (see below).

Multiple OpenVPN processes can run concurrently, each on a different TAP-Windows adapter.

openvpn.exe gets all configuration information from its config file, not from the registry.

The openvpnserv.exe program (the service wrapper) gets several string parameters from the registry which can be modified by the user. If you change any of these parameters, you should be able to upgrade OpenVPN to a new version without the installer overwriting your changes:HKEY_LOCAL_MACHINE\SOFTWARE\OpenVPN

config_dir
configuration file directory to scan, defaults to “\Program Files\OpenVPN\config”
config_ext
file extension on configuration files, defaults to “ovpn”
exe_path
path to openvpn.exe, defaults to “\Program Files\OpenVPN\bin\openvpn.exe”
log_dir
log file directory, defaults to “\Program Files\OpenVPN\log”
log_append
if set to “1”, multiple instantiations of an OpenVPN process will append onto the same log file, if set to “0” (default), each new instantiation will truncate the previous log file priority the windows priority class for each instantiated OpenVPN process, can be one of:
  • “IDLE_PRIORITY_CLASS”
  • “BELOW_NORMAL_PRIORITY_CLASS”
  • “NORMAL_PRIORITY_CLASS” (default)
  • “ABOVE_NORMAL_PRIORITY_CLASS”
  • “HIGH_PRIORITY_CLASS”

Share