Comment installer un serveur VPN et créer les fichiers .ovpn
pour les clients.
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 :
# 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.
Si on utilise un pare-feu, ne pas oublier d'ouvrir le port UDP 1194.
Par exemple, avec ufw
:
$ ufw allow 1194/udp
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
$ service openvpn@server start
$ service openvpn@server stop
$ service openvpn@server restart
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
).
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>
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.
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.