Installer facilement un serveur OpenVPN sur Debian, Ubuntu, CentOS et Arch Linux

Script et article mis à jour en décembre 2016


Avoir son propre serveur VPN, ça évite d’avoir à faire confiance à un fournisseur qui utilise des serveurs trop lents, trop chers, et parfois ayant une sécurité douteuse. Pourquoi ne pas avoir son propre VPN ?

Plein de tutoriels sur le web expliquent comment installer OpenVPN sur votre serveur. Mais pourquoi ne pas se faciliter la vie et laisser un script le faire à votre place ? 😀

Il y a une petite perle sur GitHub qui permet cela : OpenVPN-install, développé par Nyr. C’est un script qui installe automatiquement un serveur OpenVPN et qui génère la configuration client. Il a quelques fonctionnalités sympathiques comme le choix du port ou des DNS.

Seulement, je trouve qu’il lui manque quelques fonctionnalités et surtout que le chiffrement utilisé est trop faible… Du coup j’ai fait un fork ! C’est à dire que j’ai pris le script de Nyr, et je l’ai (beaucoup) modifié à ma sauce. Les 2 sont sous licence MIT.

Le script est amené à changer souvent donc au lieu de tout écrire dans l’article je vous invite à vous rendre sur le Github, en anglais, pour les choses suivantes :

En gros le script est plus sécurisé par défaut. Vous n’avez pas besoin de tout comprendre, vous pouvez juste lancer le script en appuyer sur entrée ! 🙂

Utilisation

Vous devez activer le module TUN pour que OpenVPN fonctionne. Demandez à votre hébergeur si vous ne savez pas comment faire. Si TUN n’est pas activé, le script vous le signalera.

Il suffit de télécharger le script et de l’exécuter :

wget https://raw.githubusercontent.com/Angristan/OpenVPN-install/master/openvpn-install.sh
chmod +x openvpn-install.sh
./openvpn-install.sh

Lors de la première exécution, il va vous poser des questions (en anglais) pour pouvoir installer le serveur. C’est très rapide et vous n’aurez sûrement qu’à appuyer sur entrée.

Vous pouvez ensuite ajouter des clients, supprimer des clients ou encore désinstaller complètement OpenVPN, il suffit de relancer le script :

./openvpn-install.sh

Alors, heureux ?

Simple comme bonjour !

N’hésitez pas à me faire parvenir vos retours, suggestions, ou éventuellement rapports de bug ! 🙂


Je peux vous installer votre propre serveur VPN pour 5€ sur 5euros.com.

Image de une : www.camillebaronnet.fr

Dernière modification le 5 décembre 2016.

Angristan

Stanislas - 17 ans - Lycéen passionné d'informatique, de technologie et de high-tech. Sysadmin junior, adepte des logiciels libres, de GNU/Linux et d'Android. Music addict.

Poster un Commentaire

84 Commentaires sur "Installer facilement un serveur OpenVPN sur Debian, Ubuntu, CentOS et Arch Linux"

avatar
Sreadon
Visiteur
Sreadon

Salut,

Merci, pour m’étant déjà amusé à installer un OpenVPN entièrement à la mano, j’ai bien apprécié le gain de temps énorme 🙂

@+

Foobar
Visiteur
Foobar

Merci bien, souvent septique des auto-install mais là c’est propre il ne manque juste l’authentification client.
Cdt.

Gorta
Visiteur
Gorta

Merci bien pour ce script. Il fonctionne super bien 😉
J’ai par contre un petit problème à côté (surement de moi). Je souhaite faire un FORWARD de certains ports vers un client mais n’y arrive pas…
J’ai donc une IP public x.x.x.x (server), une IP VPN server 10.8.0.1 et une IP VPN client 10.8.0.2.
Comment « forwarder » x.x.x.x:yy vers 10.8.0.2:yy ?
Merci

Gorta
Visiteur
Gorta

Ça fonctionne avec cette règle 😉
iptables -t nat -A PREROUTING -p tcp –dport YY -j DNAT –to 10.8.0.2
iptables -t filter -A FORWARD -p tcp -d 10.8.0.2 –dport YY -j ACCEPT

Triosulfate
Visiteur
Triosulfate

Merci tu viens de me sauver de 4 jours & nuits de galère. Merci.

unnamed
Visiteur
unnamed

Salut et merci pour ton travail !
L’installation s’est bien déroulée, cependant, un petit problème persiste chez moi, au lancement j’ai l’erreur suivante :

« Unrecognized option or missing parameter(s) in client.ovpn:12: block-outside-dns (2.3.10) »

As-tu une idée ?

Merci d’avance 😉

berlloon
Visiteur
berlloon

Thank you for your scripts. I executed it, and installed successfully, however, when I connect to the server, I can neither ping Google nor access the Internet. internal IP has been assigned, and I can ping the server ‘s IP 10.8.0.1. I have Googled and tried several times such as iptables, ipv4_forward etc. The OS of VPS is fresh installed, could you please give me some suggestions? Thank you very much.

boboy
Visiteur
boboy

Salut et merci pour ce script.
J’ai quand même un soucis, j’arrive à me connecter avec le client OpenVPN sur Windows 7 et j’ai internet (même si la connexion semble très instable), par contre windows me détecte le réseau en « non identifié », j’ai l’IP 10.8.0.2 et je ne peux pas pinger mon pote qui a l’IP 10.8.0.3, on ne peut pas non plus voir mutuellement nos parties de warcraft 3 créées. Tu aurais une idée ?
Bonne soirée !

comeback
Visiteur

Bonjour,

J’avais installé OpenVPN en utilisant directement leur programme https://openvpn.net/index.php/access-server/download-openvpn-as-sw/

Du coup je suis limité à deux utilisateurs, et si j’en veux plus je dois payer 15$ par utilisateur.

Est-ce qu’il y a la même restriction avec ton script ?

Ou je peux avoir autant d’utilisateurs que je veux ?

Merci

Babagoul
Visiteur
Babagoul

Bonjour,
je suis sur un serveur dedié kimsufi, j’ai bien mit ton script vpn qui fonctionne bien, mais je voulais savoir, quand je me connecte au vpn j’ai la même adresse ip que mon serveur kimsufi, mais quand je crée un autre client il a également la même adresse ip que moi c’est normal ? y’a til un moyen de lui en attribué une différente ?
Merci ! 🙂

Damien
Visiteur
Damien

Sur mon client openvpn windows je te donne les logs :

Fri Aug 26 17:10:50 2016 OpenVPN 2.3.12 x86_64-w64-mingw32 [SSL (OpenSSL)] [LZO] [PKCS11] [IPv6] built on Aug 23 2016
Fri Aug 26 17:10:50 2016 Windows version 6.2 (Windows 8 or greater) 64bit
Fri Aug 26 17:10:50 2016 library versions: OpenSSL 1.0.1t 3 May 2016, LZO 2.09
Fri Aug 26 17:10:51 2016 Control Channel Authentication: tls-auth using INLINE static key file
Fri Aug 26 17:10:51 2016 UDPv4 link local: [undef]
Fri Aug 26 17:10:51 2016 UDPv4 link remote: [AF_INET]xxx.xxx.xxx.xxx:1194

Ceci, puis rien d’autre et il réessaye de se connecter en boucle. Openvpn est bien lancé car quand je relance ./openvpn-install.sh il me pose les questions si je veux désinstaller le serveur openvpn ou rajouter un utilisateur.

Merci

Damien
Visiteur
Damien

Bonjour le script fonctionne sans problème bien joué 🙂 A part le fait que à chaque redémarrage de mon serveur , je ne peux pas me connecter a mon fichier .opvpn . Je dois désinstaller et réinstaller le script pour qu’il refonctionne ( et donc retélécharger le nouveau .opvpn . Saurais-tu d’ou cela peut provenir ? Merci d’avance 🙂

CyberMew
Visiteur
CyberMew

I’m getting this:
Certificate is to be certified until Aug 12 11:45:27 2026 GMT (3650 days)

Write out database with 1 new entries
Data Base Updated

Note: using Easy-RSA configuration from: ./vars
Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.cnf

An updated CRL has been created.
CRL file: /etc/openvpn/easy-rsa/pki/crl.pem

./openvpn-install.sh: line 404: ufw: command not found
127

Finished!

Your client config is available at ~/client.ovpn
If you want to add more clients, you simply need to run this script another time!

Does this mean the setup was successful, or was it terminated early?

Jean
Visiteur
Jean

l’installation nécessite t elle des compétences dans les réseaux ?

Jean
Visiteur
Jean

Bonjour,

J’imagine que ça a toutes les caractéristiques d’un vpn classique, et ça marche aussi avec un client Windows 7/8/10 ?

TidyKoala
Visiteur
TidyKoala

Salut, merci pour ton super script !

Je ne connais pas grand chose en OpenVPN ni en réseau et j’aimerais savoir comment à partir de ta configuration je peux faire en sorte que le client OpenVPN puisse accéder à son propre réseau LAN.
Là, je ne peux pas accéder au NAS qui est sur mon propre réseau :/

Existe-il une simple solution à effectuer sur le client sans altérer le serveur ? Comme il peut y avoir plusieurs utilisateurs du VPN, je n’ai pas envie qu’ils puissent accéder au réseau local du client.

Dorian
Visiteur
Dorian

Hello 🙂
Tu es sur quel reseau ? Box/Routeur/Dhcp ?

TidyKoala
Visiteur
TidyKoala

Ah mince, je n’avais pas reçu la notification qu’on m’a répondu.
Alors, l’ordinateur avec le VPN est connecté en Wifi à un Routeur Netgear lui-même relié à la Freebox par CPL. (j’avais fait cette installation car la portée du Wifi de la Freebox n’était pas suffisante).
Le NAS quant à lui est relié à la Freebox par CPL aussi.
De ce que j’ai compris de mes recherches, c’est du côté du serveur OpenVPN qui faut lui faire comprendre que pour une certaine plage IP, il doit aller chercher chez le client VPN.
Mais bon, je n’ai rien trouvé de très clair :/

Rathorian
Visiteur
Rathorian

Salut,

J’aimerais supprimer la règle iptables « SNAT » par défaut qui est créer au redémarrage de la machine.
J’utilise une règle spécifique et je trouve pas l’endroit ou se trouve l’enregistrement pour :
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT –to $IP

Qui se trouve dans le script .

Je sais pas si je suis très clair !!!

Rathorian
Visiteur
Rathorian

Super script !
Tu crois que tu pourrais rajouter une option pour utiliser une IP FailOver en NAT, histoire de pas passer par l’IP principale du serveur ?

wukun
Visiteur
wukun

Hello, why using the command to delete the certificate causes all the certificates cannot be used? The logging client shows as TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)

Fish
Visiteur
Fish

Hello, à quand l’arrivée du choix du mdp ? Thanks, simple d’install et d’usage ce script 😉

Henri
Visiteur
Henri

Salut,
Simple question, pourquoi désactiver les logs ?

Ludo
Visiteur

Salut, j’ai testé hier, avec un client, c’etait top, ca marchait très bien du premier coup. Mais dès que j’ai rajouté et connecté un client, j’ai perdu la main sur mon dédié, impossible de faire quoi que ce soit pour reprendre la main.

Forth
Visiteur
Forth

sinon pour être à la fois sécurisé et rapide il y a ed25519 + Chacha20 .

xinchao
Visiteur
xinchao

Bonjour et félicitations mais est-ce que le script est compatible avec Rasbian du Rpi svp ??

François
Visiteur
François

Propose un patch à l’auteur. Développer un fork et le maintenir dans son coin, c’est une perte d’énergie, de visibilité et de temps pour les gens à devoir comparer les codes de chacun.
Avoir un patch mergé, c’est une belle satisfaction.

polonium
Visiteur
polonium

Salut Angristan, chouette blog, que je croise de temps en temps au cours de mes recherches, c’est décidé aujourd’hui il passe en favori.

Je teste ton script, sur vps, à l’arrivée je récupère le fichier ovpn et l’ouvre avec n-m (importer config enregistrée), mais du coup ça coince. IL y a bien l’adresse passerelle de renseignée mais où est le certificat utilisateur, le certificat CA, la clé privée, le mot de passe de la clé…. Il me semble que toute ses infos sont dans le fichier… J’ai l’impression de louper quelque chose là !

Merci !

Stroggle
Visiteur
Stroggle

T’assures mec, ton script tourne au poil !

DigitalVoodoo
Visiteur
DigitalVoodoo

Hello !

J’avais installé OpenVPN avec l’ancien script, et je voulais désinstaller et reprendre (pour des raisons obscures, oui^^). Je pense que je vais tâter celui-ci. Chapeau !

meganet
Visiteur
meganet

ça fais des année que je voulais faire ça! T’es un bon mec! Merci! 🙂

Ninette
Visiteur
Ninette

Bonjour !
Ne m’y connaissant que très peu (je découvre l’univers linux), pourriez vous m’aider en m’indiquant où se trouvent les fichiers client à utiliser sur mon smartphone par exemple ?
Merci beaucoup !

deblan
Visiteur

Mais c’est top ça !

Merci l’ami 🙂

Amaury
Visiteur

Super ! Je vais pouvoir update mon serveur !
A quand la prise en charge d’un tunnel IPv6? Ca pourrait être pratique 🙂

wpDiscuz