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-auto 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 Automatic Start mode. You can go to the "Services" control panel in Control Panel -> Administrative Tools to stop and start the service or change its system startup behavior.

Sample config files for client or server functionality have been provided in \Program Files\OpenVPN\sample-config and these can be adapted to your needs.

Service Notes:

When you install OpenVPN as a service, you are actually installing openvpnserv2.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. openvpnserv2.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 (openvpnserv2.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 openvpnserv2.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

autostart_config_dir
configuration file directory to scan, defaults to "\Program Files\OpenVPN\config-auto"
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"