OpenVPN Configurator

Generating OpenVPN configurations with dynamic elements is hard. Computers are good at keeping track of many details that humans can easily overlook. This tool aims to assist with the mundane details of managing routes based on DNS names and AWS IP ranges.

Additionally, whenever a generated OpenVPN config changes, the service can be automatically restarted so clients get new configurations immediately.

To reduce spurious restarts of services, all dynamic directives are sorted lexicographically before appending to the static template.

Installation

Use RubyGems to install with:

$ gem install openvpn_configurator

Usage

Create an OpenVPN configuration file with any static details as desired. Then use this tool to append some dynamic data, resulting in a final output file

Here's an example invocation which adds routes for an entire IPv4 AWS region, and IPv4(s) for a DNS name. If the output file changes, the systemd service [email protected] will be restarted:

# openvpn_configurator \
    --route-v4-aws-region=us-west-2 \ 
    --route-v4-dns=my.elb.name \
    [email protected] \
    /etc/openvpn/server/myvpn.template.conf \
    /etc/openvpn/server/myvpn.conf

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/aarontc/openvpn-configurator. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the code of conduct.

License

The gem is available as open source under the terms of the MIT License.

Code of Conduct

Everyone interacting in the OpenVPN Configurator project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.