PHPackages                             evilfreelancer/openvpn-php - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. evilfreelancer/openvpn-php

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

evilfreelancer/openvpn-php
==========================

OpenVPN config generator writen on PHP

1.3.0(5y ago)304.7k↓50%7MITPHPPHP ^7.2

Since Jan 30Pushed 5y ago6 watchersCompare

[ Source](https://github.com/EvilFreelancer/openvpn-php)[ Packagist](https://packagist.org/packages/evilfreelancer/openvpn-php)[ Patreon](https://www.patreon.com/efreelancer)[ RSS](/packages/evilfreelancer-openvpn-php/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (5)Versions (17)Used By (0)

[![Latest Stable Version](https://camo.githubusercontent.com/b688a02d36046d172b65a80d7b907eb593080aad574561240aa8c30f11260ab6/68747470733a2f2f706f7365722e707567782e6f72672f6576696c667265656c616e6365722f6f70656e76706e2d7068702f762f737461626c65)](https://packagist.org/packages/evilfreelancer/openvpn-php)[![Build Status](https://camo.githubusercontent.com/07a74b2d933bec1d5ad7a46d356df4a7667e45a60a03fb7d7998f8a05bc6a58b/68747470733a2f2f7472617669732d63692e6f72672f6576696c667265656c616e6365722f6f70656e76706e2d7068702e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/EvilFreelancer/openvpn-php)[![Total Downloads](https://camo.githubusercontent.com/e2b02f79a474a8efcfbdc36dbf81cc2de9d4be273d6e64359d334abc5fb5e551/68747470733a2f2f706f7365722e707567782e6f72672f6576696c667265656c616e6365722f6f70656e76706e2d7068702f646f776e6c6f616473)](https://packagist.org/packages/evilfreelancer/openvpn-php)[![License](https://camo.githubusercontent.com/2afb8da0e4a07d55f148910959eb6c4556bf82903d9486392f8da66b1f1ad5d7/68747470733a2f2f706f7365722e707567782e6f72672f6576696c667265656c616e6365722f6f70656e76706e2d7068702f6c6963656e7365)](https://packagist.org/packages/evilfreelancer/openvpn-php)[![Code Climate](https://camo.githubusercontent.com/6d92aa6af23d8c885b48211b1110934895d7150293c2e4d1f475a3d245a1cffe/68747470733a2f2f636f6465636c696d6174652e636f6d2f6769746875622f4576696c467265656c616e6365722f6f70656e76706e2d7068702f6261646765732f6770612e737667)](https://codeclimate.com/github/EvilFreelancer/openvpn-php)[![Code Coverage](https://camo.githubusercontent.com/a86170eec852195c4200dbf6f36786d44b67c8b38ac46c146089ef9e67e4aadb/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f4576696c467265656c616e6365722f6f70656e76706e2d7068702f6261646765732f636f7665726167652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/EvilFreelancer/openvpn-php/?branch=master)[![Scrutinizer CQ](https://camo.githubusercontent.com/659b9c5edace57ba937d939c7d87ef01482b9ccb22e469bd0d82bd8cadf35e25/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f4576696c467265656c616e6365722f6f70656e76706e2d7068702f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/EvilFreelancer/openvpn-php/)

OpenVPN config manager
======================

[](#openvpn-config-manager)

OpenVPN configuration manager written on PHP.

```
composer require evilfreelancer/openvpn-php

```

By the way, OpenVPN library support Laravel framework, details [here](#laravel-framework-support).

How to use
----------

[](#how-to-use)

It's very simple, you need to set the required parameters, then generate the config and voila, everything is done.

More examples [here](examples).

### Write new config in OOP style

[](#write-new-config-in-oop-style)

```
require_once __DIR__ . '/../vendor/autoload.php';

// Config object
$config = new \OpenVPN\Config();

// Set server options
$config->dev                  = 'tun';
$config->proto                = 'tcp';
$config->port                 = 1194;
$config->resolvRetry          = 'infinite';
$config->cipher               = 'AES-256-CBC';
$config->redirectGateway      = true;
$config->server               = '10.8.0.0 255.255.255.0';
$config->keepalive            = '10 120';
$config->renegSec             = 18000;
$config->user                 = 'nobody';
$config->group                = 'nogroup';
$config->persistKey           = true;
$config->persistTun           = true;
$config->compLzo              = true;
$config->verb                 = 3;
$config->mute                 = 20;
$config->status               = '/var/log/openvpn/status.log';
$config->logAppend            = '/var/log/openvpn/openvpn.log';
$config->clientConfigDir      = 'ccd';
$config->scriptSecurity       = 3;
$config->usernameAsCommonName = true;
$config->verifyClientCert     = 'none';

// Set routes which will be used by server after starting
$config->setRoutes([
    '10.1.1.0 255.255.255.0',
    '10.1.2.0 255.255.255.0',
    '10.1.3.0 255.255.255.0',
]);

// Set additional certificates of server
$config->setCerts([
    'ca'   => '/etc/openvpn/keys/ca.crt',
    'cert' => '/etc/openvpn/keys/issued/server.crt',
]); // You can embed certificates into config by adding true as second parameter of setCerts method

// Another way for adding certificates
$config
    ->setCert('key', '/etc/openvpn/keys/private/server.key')
    ->setCert('dh', '/etc/openvpn/keys/dh.pem');

// Set pushes which will be passed to client
$config->setPushes([
    // Additional routes, which clients will see
    'route 10.1.2.0 255.255.255.0',
    'route 10.1.3.0 255.255.255.0',
    'route 10.1.4.0 255.255.255.0',

    // Replace default gateway, all client's traffic will be routed via VPN
    'redirect-gateway def1',

    // Prepend additional DNS addresses
    'dhcp-option DNS 8.8.8.8',
    'dhcp-option DNS 8.8.4.4',
]);

// Generate config by options
echo $config->generate();
```

### Import existing OpenVPN config

[](#import-existing-openvpn-config)

For example, you have `server.conf`, to import this file you need create `\OpenVPN\Import` object and specify a name of your config file.

```
