OpenVPN

Comment installer un serveur VPN et créer les fichiers .ovpn pour les clients.

Installation

Télécharger le script :

$ wget https://git.io/vpn -O openvpn-install.sh

Lancer l'installation :

$ chmod +x openvpn-install.sh
$ ./openvpn-install.sh

Bien préciser l'adresse IP et le port du serveur. On peut laisser les autres options à leur valeur par défaut.

Le programme d'installation ajoute directement les règles IPTABLES dans /etc/rc.local, on peut vérifier son contenu, voici un exemple :

rc.local
# Pour un accès uniquement à internet (par défaut) :
iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -I FORWARD -s 10.8.0.0/24 -j ACCEPT
iptables -I INPUT -p udp --dport 1194 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to <IP_du_Serveur>
# Pensez à remplacer <IP_du_Serveur> par l'adresse IP publique du serveur.
 
# Ou, pour accéder à toutes les interfaces du serveur et à tous les réseaux locaux,
# désactiver les lignes précédentes et ajouter manuellement :
iptables -I INPUT -p udp --dport 1194 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eno1 -j MASQUERADE
# Pensez à remplacer eno1 par le nom de votre interface réseau principale.

Firewall

Si on utilise un pare-feu, ne pas oublier d'ouvrir le port UDP 1194. Par exemple, avec ufw :

$ ufw allow 1194/udp

Finalisation du serveur

On peut ajouter les éléments suivants pour parfaire la configuration du serveur :

# Nombre maximal de clients :
max-clients 10
 
# Permettre la communication entre les clients :
client-to-client
 
# Placer les log dans un fichier différent de syslog :
log-append /var/log/openvpn.log



Démarrage et Arrêt du serveur OpenVPN

Démarrer

$ service openvpn@server start

Arrêter

$ service openvpn@server stop

Redémarrer

$ service openvpn@server restart



Installation client

Remarque préalable

Il est préférable de générer un fichier de config client différent pour chaque client car ainsi chaque client aura sa propre adresse IP. Sinon, il est quand même possible de connecter plusieurs clients avec le même fichier de configuration mais ils auront tous la même adresse IP et le routage sera fait au niveau inférieur du modèle OSI, c'est à dire par les adresses mac. Cela peut poser des problèmes en cas de communications entre les clients (Option client-to-client du fichier server.conf).

Installation

Lors de l'installation, le script a crée un fichier <utilisateur>.ovpn dans le dossier courant de l'utilisateur.

:!: ATTENTION :!: Bien protéger ce fichier car il permet de se connecter au VPN et contient les clefs.

Selon le client, installer la version adéquate pour Windows, Linux, IOS ou Android depuis https://openvpn.net/community-downloads/
Puis utiliser le fichier .ovpn pour se connecter.

Pour vérifier, lancer un navigateur et afficher son adresse IP puis penser à vérifier qu'il n'y pas de fuite DNS en effectuant un test, par exemple sur https://www.dnsleaktest.com/ (Ou en cherchant DNS leak test dans un moteur de recherche.)

Pour lancer le client en ligne de commande Linux :

$ openvpn <Fichier_Client.ovpn>


Puis, pour arrêter le client, rechercher l'ID du processus (le PID) avec ps :

$ ps -ef | grep openvpn

Puis tuer le processus :

$ kill -2 <PID_du_Process>



Ajouter / supprimer des clients

Ajouter un client

Lancer à nouveau le script et choisir l'option 1 (Add a new user) :

$ ./openvpn-install.sh
 
Looks like OpenVPN is already installed.
What do you want to do?
   1) Add a new user
   2) Revoke an existing user
   3) Remove OpenVPN
   4) Exit
Select an option [1-4]: 1
 
Tell me a name for the client certificate.
Please, use one word only, no special characters.
Client name: NOM_DU_CLIENT
.../...
Client NOM_DU_CLIENT added, configuration is available at: /root/NOM_DU_CLIENT.ovpn

Le nouveau fichier est enregistré dans le dossier de l'utlisateur, voir la section Configuration du client pour l'utiliser.

Supprimer un client

Lancer à nouveau le script et choisir l'option 2 (Revoke an existing user) :

$ ./openvpn-install.sh
 
Looks like OpenVPN is already installed.
What do you want to do?
   1) Add a new user
   2) Revoke an existing user
   3) Remove OpenVPN
   4) Exit
Select an option [1-4]: 2
 
Select the existing client certificate you want to revoke:
     1) client_a
     2) client_b
     .../...
     n) NOM_DU_CLIENT
Select one client [1-n]: 

Puis confirmer la suppression.

[ Adresse Bitcoin pour les dons BTC : 1KCZGe7PtxwaWEJf1dHcoqsxbrzypNTvEw ]