OpenVPN est un progiciel qui vous permet de protéger le trafic des utilisateurs de «l’interception» en fournissant une transmission de données cryptées du périphérique du client au serveur sur lequel OpenVPN est installé. Idéal pour l'utilisation de points d'accès Wi-Fi publics où les informations peuvent être interceptées par des tiers. Ou dans le cas où votre adresse IP est bloquée sur un certain site et que vous devez contourner cette restriction en toute sécurité.
Outre l'installation et la configuration d'OpenVPN sur le serveur, vous devez pouvoir configurer le client pour l'accès depuis un ordinateur sur lequel Windows sera utilisé comme système d'exploitation.
En utilisant le gestionnaire de paquets standard, installez openvpn.
# aptitude install openvpn
Contenu de l'article:
- Создание сертификатов 1 Création de certificats
- Настройка сервера Configuration du serveur 2
- Перенаправление трафика через OpenVPN 3 Redirection du trafic via OpenVPN
- OpenVPN клиент на Windows 4 Client OpenVPN sous Windows
- OpenVPN совместно с NetworkManager 5 OpenVPN avec NetworkManager
Création de certificats
OpenVPN nécessite nécessairement la génération de certificats pour le serveur et les clients. C'est logique, car la connexion du client au serveur doit être cryptée.
Accédez au dossier openvpn:
# cd / etc / openvpn
Nous allons générer des clés en utilisant easy-rsa.
Créez un dossier avec des fichiers de configuration et des liens vers des scripts de génération de certificat:
# make-cadir rsa # cd rsa
Ouvrez le fichier de configuration vars et modifiez les paramètres:
export KEY_COUNTRY = "US" export KEY_PROVINCE = "CA" export KEY_CITY = "SanFrancisco" export KEY_ORG = "Fort-Funston" export KEY_EMAIL = "me@myhost.mydomain"
KEY_COUNTRY - entrez le code du pays (RU, UA, etc.);
KEY_PROVINCE - cet élément n'est pas pertinent si vous n'habitez pas aux États-Unis. :) Vous pouvez remplacer le XX;
KEY_CITY - votre ville où vous habitez;
KEY_EMAIL - votre adresse email.
Et décommentez également la ligne d'exportation KEY_CN, pour la valeur pour laquelle spécifiez le nom du serveur:
export KEY_CN = "exemple.com"
Toutes les variables sont renseignées en latin.
Enregistrez le fichier et exécutez-le:
# vars
Puis commencez à supprimer les anciens certificats:
# ./clean-all
Créez un certificat racine:
# ./build-ca
Si, lors de la génération du certificat racine, vous obtenez l'erreur suivante error:0E065068:configuration file routines:STR_COPY:variable has no value:conf_def.c:618:line 198 , ajoutez la ligne au fichier vars :
export KEY_ALTNAMES = "quelque chose"
Et puis relancez les commandes précédentes: vars, ./clean- all, ./build-ca.
L'étape suivante consiste à créer une clé et un certificat de serveur.
# ./build-key-server server
Créez ensuite un certificat et une clé pour le client:
# ./build -key client
Remarque: pour chaque client, vous devez générer votre propre certificat et votre clé. Il vous suffit de spécifier des noms différents (au lieu du client) et de modifier leurs chemins d'accès dans les fichiers de configuration. Dans le même temps, vous pouvez protéger les clés des clients avec un mot de passe, utilisez pour cela la commande build-key-pass au lieu de build-key.
Ensuite, vous devez créer une clé Diffie-Hellman pour pouvoir utiliser le secret de transfert:
# ./build-dh
Et la clé pour l'authentification tls:
# openvpn --genkey --secret /etc/openvpn/ta.key
Vous devez maintenant copier les certificats de serveur et les clés dans le dossier de paramètres OpenVPN:
# cp clés / clés ca.crt / clés serveur.crt / clés serveur.key / dh2048.pem / etc / openvpn /
Et mettez aussi sur eux les droits qui permettent de lire et de changer uniquement pour leur propriétaire.
# chmod 0600 /etc/openvpn/ca.crt /etc/openvpn/server.crt /etc/openvpn/server.key
Veillez à copier sur votre ordinateur, par exemple, le bureau, à partir du dossier des clés , les clés nécessaires à la connexion du client: client.crt , client.key , ca.crt , ta.key .
Ceci termine le processus de préparation du certificat.
Configuration du serveur
Dans le répertoire / usr / share / doc / openvpn /, vous trouverez un exemple de fichier permettant de configurer un serveur Openvpn. Copiez-le dans le répertoire / etc / openvpn / et décompressez:
cd / etc / openvpn; cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz / etc / openvpn /; gunzip server.conf.gz
Nous allons maintenant examiner les paramètres nécessaires pour que openvpn fonctionne.
Le port sur lequel Openvpn acceptera les connexions. Par défaut, 1194. Je recommande de le changer afin de le masquer. Vous pouvez même dissimuler openvpn sous un serveur Web en spécifiant le port 80.
port 20100
Enregistrez les chemins d'accès aux fichiers de certificat et à la clé du serveur.
ca ca.crt cert serveur.crt clé server.key
Le chemin de la clé Diffie-Hellman.
dh dh2048.pem
Les deux chemins relatifs au répertoire / etc / openvpn (si les fichiers s'y trouvent) et absolu peuvent être spécifiés.
Trouvez et décommentez la ligne:
appuyez sur "redirect-gateway def1 bypass-dhcp"
Il est nécessaire pour pouvoir accéder à Internet via le serveur OpenVPN. Si ce n'est pas le cas, seuls les ordinateurs du réseau seront disponibles.
Vous devez également spécifier les serveurs DNS pour la connexion des clients.
push "dhcp-option DNS 213.183.57.55" push "dhcp-option DNS 87.98.175.85"
Selon l'emplacement du serveur, vous pouvez sélectionner d'autres serveurs DNS, par exemple sur le projet OpenNIC .
Ensuite, recherchez et décommentez le paramètre tls-auth.
tls-auth ta.key 0
Attention! Dans les paramètres du client, le dernier chiffre de ce paramètre doit être remplacé par 1 - tls-auth ta.key 1 .
Juste en dessous dans le fichier de configuration suit la liste des chiffrements disponibles. Décommentez le chiffrement AES-128-CBC .
Chiffre AES-128-CBC # AES
Si nécessaire, il peut être remplacé par AES-256-CBC . Dans le fichier de configuration du client, le chiffre doit être identique à celui du serveur.
Ajoutez également le paramètre auth. Par défaut, les clés sha1 de 160 bits sont utilisées pour l'authentification, mais l'algorithme sha1 est considéré comme vulnérable. Lors de la spécification du paramètre suivant, les clés SHA512 d'une longueur de 512 bits seront utilisées.
auth SHA512
Ainsi que le paramètre tls-version-min, qui détermine la version de tls utilisée. Dans ce cas, la dernière version est la 1.2. Attention! Network Manager ne prend pas en charge (au moment de l'écriture) ce paramètre. Par conséquent, si vous envisagez de vous connecter au serveur VPN via Network Manager, ce paramètre n'est PAS spécifié dans les paramètres du serveur.
tls-version-min 1.2
OpenVPN ne doit pas être exécuté en tant que root. Par conséquent, décommentez les lignes:
utilisateur personne groupe de groupe
Il ne sera pas superflu d'activer les journaux pour OpenVPN. En particulier, lors de la première utilisation après le réglage pour la recherche d’erreurs, etc.
log /var/log/openvpn.log
Laissez tous les autres paramètres du fichier de configuration /etc/openvpn/server.conf avec les valeurs par défaut. Ceci termine la configuration du serveur OpenVPN.
Activez openvpn avec la commande:
# systemctl enable openvpn
Et redémarrer:
# service openvpn restart
Il est également utile de rechercher des erreurs dans le journal.
Rediriger le trafic via OpenVPN
Pour pouvoir accéder à Internet via le serveur openvpn, vous devez faire quelque chose pour cela.
1. Configurez sysctl
Dans la console, lancez la commande:
# sysctl net.ipv4.ip_forward
Si le résultat de la commande est égal à net.ipv4.ip_forward = 1 , il n'est pas nécessaire de changer quoi que ce soit. Si la valeur de la variable est 0, la ligne suivante doit être ajoutée au fichier /etc/sysctl.conf :
net.ipv4.ip_forward = 1
Et rechargez les règles avec la commande:
# sysctl -p
2. Configurez iptables
Vous pouvez également exécuter les commandes suivantes dans la console:
# iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED, RELATED -j ACCEPT # iptables -A FORWARD -s 10.8.0.0/24 -o eth0 -j ACCEPTER # iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Ainsi, nous autoriserons le trafic via le serveur OpenVPN pour le sous-réseau 10.8.0.0 dans les limites des connexions déjà établies.
Si le client openvpn doit attribuer une adresse IP externe spécifique du serveur, alors, au lieu de la dernière commande de la liste des précédentes pour iptables, vous devez exécuter ceci:
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source 127.0.0.1
Où, après le paramètre –to-source, vous devez spécifier le serveur IP externe.
Client OpenVPN sous Windows
Mise en route de la configuration d’un client Openvpn sous Windows. Tout est simple ici: téléchargez le client depuis le site officiel, installez-le, créez le fichier de configuration et lancez-le.
Il est à noter qu'il est nécessaire de lancer openvpn sous Windows avec les droits de l'administrateur si le contrôle des comptes est actif.
Si vous n'avez pas modifié le chemin d'installation, les exemples de fichiers de configuration sur votre PC se trouvent dans le répertoire C: \ Program Files \ OpenVPN \ sample-config . Copiez le fichier client.ovpn à partir d’ici et placez-le dans le répertoire C: \ Program Files \ OpenVPN \ config .
Rappelez-vous les certificats créés pour le client? Ils doivent également être téléchargés à partir du serveur et copiés dans ce répertoire.
Ouvrez le fichier de configuration client.ovpn et recherchez le paramètre distant my-server-1 1194 . Au lieu de my-server, spécifiez l'adresse IP ou le nom de domaine de votre serveur. Puis le port que nous avons changé plus tôt. En conséquence, la ligne peut ressembler à ceci:
192.168.0.1 à distance 20100
Ensuite, vous devez spécifier le chemin d'accès aux certificats que vous avez générés sur le serveur. Pour chaque client, une clé est créée avec un nom unique, qui doit être indiqué ci-dessous, au lieu de client .
ca ca.crt cert client.crt clé client.key
Vous devez également supprimer le commentaire du paramètre qui spécifie le chemin d'accès à la clé tls.
tls-auth ta.key 1
Auparavant, il était déjà indiqué que le dernier chiffre sur le serveur devait être 0, sur le client - 1.
Et les derniers paramètres sont les chiffrements que vous avez installés sur le serveur.
Chiffre AES-128-CBC auth SHA512 tls-version-min 1.2
C'est tout ce qui est nécessaire pour configurer le client. Essayez d’exécuter le client OpenVPN et connectez-vous à votre serveur. Les informations de connexion nécessaires seront affichées dans la fenêtre openvpn gui.
OpenVPN avec NetworkManager
Installez l'interface graphique pour le gestionnaire de réseau.
# aptitude install network-manager-openvpn-gnome
Et redémarrer.
# redémarrage du gestionnaire de réseau de service
Nous copions les certificats générés pour le client dans un dossier arbitraire sur l'ordinateur. Par exemple, dans /home/user/.openvpn/.
Cliquez avec le bouton droit de la souris sur l'icône du gestionnaire de réseau, sélectionnez l'élément «modifier les connexions», ajoutez une nouvelle connexion du type «OpenVPN».

Spécifiez:
- Nom de la connexion
- Passerelle (adresse IP du domaine ou du serveur)
- Type: Certificats
Le certificat d'utilisateur est un certificat que nous avons généré au début pour le client (client.crt).
Certificat CA - fichier ca.crt.
La clé privée est la clé du client (client.key).

Cliquez sur le bouton "Avancé". Dans la fenêtre qui s'ouvre, dans l'onglet "Général", vous devrez modifier quelques éléments.
- Utilisez un autre port de passerelle (si vous avez spécifié un non standard lors de la configuration du serveur)
- Utiliser la compression lzo
Passez à l'onglet "Sécurité". Sélectionnez le chiffre, comme dans les paramètres du serveur. En tant que valeur du paramètre d'authentification hmac, vous devez spécifier un algorithme, comme dans la valeur d'authentification du serveur. Dans l'article, nous avons choisi SHA512.
Ouvrez l'onglet Authentification TLS et cochez les éléments suivants:
- Vérifier le pair ...
- Utiliser une authentification TLS supplémentaire
Pour le dernier paramètre, spécifiez le chemin d'accès au fichier ta.key et sélectionnez 1. comme direction de la clé dans la liste déroulante, de la même manière que le fichier de configuration pour Windows.
Enregistrez la connexion et essayez de vous connecter. :)
Juste au cas où, nous cherchons que NM écrit lors de la connexion au journal système:
# tail -f / var / log / syslog

Merci pour l'article. Très utile.
Excellent article, auteur cher personne!
Un auteur comme celui que je n'ai pas essayé de déboguer pour comprendre pourquoi mes clients ne peuvent pas se connecter, openvpn ne crée pas de journaux! dis moi quoi faire!
Vous devez donc consulter les journaux des clients. OpenVPN GUI tel journal conduit nécessairement. Clic droit -> afficher le journal.
Peut-être qu'il manque un élément dans les instructions ...
Merci, mais il s'est avéré qu'il était nécessaire de le faire #openvpn /opt/vp/vp.conf et que l'application a branché le fichier de configuration - les journaux sont allés - j'ai tout examiné et j'ai transformé le vpn en travailleur.
Un auteur de manuel conscient vous le demande. Comment faire un tunnel entre le serveur sur Debian et Mikrotikom. Connecter leur réseau local. 2 appartements.
Merci pour le post. Toujours intéressé par la configuration de clients mobiles, comme ici - http://sysadm.pp.ua/linux/shifrovanie/openvpn-client-server.html . Pouvez-vous conseiller un bon client mobile OpenVPN?
Sur mon smartphone Android, j'utilise le client officiel du développeur Openvpn - "Openvpn connect" https://play.google.com/store/apps/details?id=net.openvpn.openvpn
C'est assez facile à mettre en place. Les fichiers générés pour le client doivent être téléchargés dans n’importe quel dossier du lecteur flash du téléphone. Ensuite, lancez Openvpn Connect, sélectionnez «Importer» dans le menu, puis «Importer le profil depuis la carte SD». Le gestionnaire de fichiers s'ouvre. Si vous devez sélectionner le fichier * .ovpn, cliquez sur le bouton "Sélectionner". En confirmation de l'importation réussie, le message «Profil importé» s'affiche à l'écran.
Pour vous connecter, appuyez sur le bouton "Connecter". C'est tout. :)
Je ne connais pas d'autres clients, mais celui-ci fonctionne très bien.
PS Si vous prévoyez de vous connecter simultanément à partir d’un ordinateur et d’un téléphone, vous devez générer pour ce dernier votre clé et votre certificat.
L'article a aidé à comprendre les principes de openvpn en général. Merci
ASPIRATION ET NE TRAVAILLE PAS SUR CETTE INSTRUCTION NIFIGA!
Merci Tout fonctionne!
upd.
La Clause 2 a décidé d’installer les droits sur la clé client.key (apparemment, elle a été négligée d’abord). + il était nécessaire de définir explicitement le type de connexion TCP et de spécifier le type d'adaptateur - TAP / TUN
Merci beaucoup Excellent article!
J'ai tout mis en place conformément aux instructions, mais il y a un tel problème:
Le client se connecte au serveur, mais il n’ya pas d’Internet. Le client envoie une requête ping au serveur VPN 10.8.0.1 et à l'adresse IP du serveur dédié. À partir du serveur lui-même, les sites externes répondent sans problème. Il s'avère que le chien est enterré quelque part dans les IPtables et ip.frwarding. Des pensées? Est-ce que cela peut rapidement conseiller que de s'occuper de cette forêt?
Il est nécessaire de prescrire d'autres règles de routage
iptables -t nat -A POSTROUTING -o venet0 -j SNAT —to IP_ADDRESS_Your_SERVER
iptables -A FORWARD -i venet0 -o tun0 -m état - état RELATED, ESTABLISHED -j ACCEPT
iptables -A FORWARD -i tun0 -o venet0 -j ACCEPTER