[Tuto] Monter son VPN perso avec OpenVPN

Aujourd’hui, on va prendre le taureau par les cornes. Pour tout un tas de raisons, je suis régulièrement amené à me connecter à des réseaux sans fil ouverts soi-disant sécurisés par une authentification (rigolade !), ou au réseau de la médiathèque de Troyes (quand il fonctionne, quand le serveur DNS est pas tombé, et quand ALCASAR daigne proposer d’entrer ses identifiants) qui a la fâcheuse manie de bloquer plein de ports que j’utilise au quotidien (au hasard : SMTP, XMPP). On peut aussi ajouter le fait que j’aimerais me connecter à mon NAS depuis le bureau, sans pour autant ouvrir grand la porte du routeur avec une pancarte clignotante « All you can eat: mes données sont ici, viendez ! ».

Et systématiquement, je me galère à ouvrir un tunnel SSH entre mon portable et le Raspberry Pi, à faire transiter la connexion au NAS à travers tout ça… Et encore, ça ne sécurise pas ma navigation. Bref. Du coup, la solution, c’est un VPN. On va donc installer le serveur OpenVPN, le configurer, puis installer le client sous Windows, sous Android et sous Linux. Vous suivez ?

 

OpenVPN, quoi-t’est-ce ?

C’est une solution VPN (Virtual Private Network, réseau privé virtuel) libre et gratuite.  Elle se compose de deux composants principaux : le serveur, qui représente le point de sortie de votre VPN, et le client, qui est pour sa part le point d’entrée. La navigation au travers d’un VPN est plus rapide que si vous utilisiez un proxy, en plus d’être mieux sécurisée.

OpenVPN Connect sous Android
OpenVPN Connect sous Android

 

Pré-requis

Je pars du principe que vous disposez déjà d’une machine sous Debian (dans mon cas : Raspberry Pi + Raspbian) installée, configurée avec une IP interne fixe et un accès SSH, et que vous savez ouvrir/rediriger (faites-le, tiens) le port 1194 UDP de votre routeur vers votre serveur.

Alors ça, c’est dans un cas idéal, hein. Dans mon cas, pour des raisons de restrictions d’usages sur le réseau de l’école et/ou RENATER, il m’est impossible d’utiliser la configuration classique via le port 1194, ou de l’UDP tout court, a priori. Du coup, bien que ce soit un poil plus lourd pour mon petit serveur, j’utilise le protocole TCP sur le port 80. Ouais, je sais. Mais plus c’est gros et crade, plus ça passe.

Pour commencer, on installe OpenVPN. Si si : sudo apt-get update && sudo apt-get install openvpn (pas méchant hein !).

 

Configuration du serveur

On est d’accord que vous ne voulez pas (sauf erreur de ma part) ouvrir votre serveur VPN à tout le monde. Comme pour votre porte d’entrée, on va faire une clé, du coup. Et la garder pour nous. Pensez à m’envoyer la vôtre par mail ! :mrgreen:

 

Etape 1 : Easy_RSA

Easy_RSA, c’est un petit utilitaire qui va nous faciliter la vie. Il a été rapatrié quand vous avez installé le paquet openvpn. Aussi surprenant que cela puisse vous paraître, il utilise l’algorithme RSA. #Obvious

On va commencer par se connecter en tant sur superutilisateur : sudo -s. Votre invite de commande (du style pi@raspberrypi ~ $) va changer (pour moi : root@raspberrypi:/home/pi#).

Copions Easy_RSA dans le dossier de OpenVPN, histoire de pouvoir travailler avec : cp –r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa. On se place ensuite dans le dossier fraîchement copié, et puis… Au boulot. cd /etc/openvpn/easy-rsa

 

Bon. Attaquons les choses sérieuses, et éditons le fichier vars, qui contient un certain nombre de variables/réglages importants : nano vars. Il faut commencer par adapter la ligne export EASY_RSA="`pwd`", qui devient dans notre cas export EASY_RSA="/etc/openvpn/easy-rsa" .

Par défaut les clés générées font 1024 bits. Le fichier dit que si vous êtes paranos, vous pouvez monter ça à 2048 bits. Moi je le suis, donc j’ai changé le 1024 en 2048 dans la ligne export KEY_SIZE=1024… On ne se refait pas !

Vous pouvez éditer la dernière partie qui concerne la génération des certificats, pour gagner du temps ensuite, mais rien d’obligatoire (pays, tout ça).

Un petit Ctrl+X pour enregistrer et quitter nano, et hop !

 

On va générer certificats de l’autorité de certification. OK, dans la vraie vie, il faudrait utiliser une vraie autorité de certification, reconnue, qui vérifierait que vous êtes bien celui/celle que vous prétendez être, et j’en passe, tout en vous soutirant au passage une coquette somme. Là, on fait notre truc dans notre coin, alors on va (si ça vous va… mais si ça vous va pas, c’est pareil, moi je fais comme ça 😀 ) dire qu’on est notre propre autorité de certification.

Toujours dans notre répertoire easy-rsa et en tant que root, on va charger le fichier vars édité plus haut : source ./vars, nettoyer d’éventuels restes d’essais précédents (gaffe à pas virer un truc que vous auriez déjà fait volontairement !) : ./clean-all, et lancer la génération du certificat racine : ./build-ca. Place à l’interrogatoire maintenant :

  • Country Name : France pour moi, donc : FR
  • State or Province : je mets France
  • Locality Name : votre ville ? Pour moi, Troyes
  • Organization Name : perso je mets le nom de ce blog, Open-Freax
  • Organization Unit : vide ?
  • Common Name : je mets le nom de mon serveur, PrincessKenny
  • Name : au hasard, Maxime Auvy ?
  • Email Adress : c’est assez clair là non ? :mrgreen:

Plus qu’à faire la clé : ./build-key-server <nom_du_serveur> . Donnez-lui un nom au choix, hein, mais suffisamment explicite des fois que vous ayez plusieurs VPN sur votre machine. Dans mon cas, j’ai fait preuve d’une grande imagination et il s’appelle donc Mamayzon. Deuxième interro, le Common Name *doit* correspondre à celui entré juste avant (il devrait le savoir tout seul). Le Challenge Password reste vide. Et à la question qui demande si vous voulez signer le certificat (Sign the certificate? [y/n])… Bien évidemment, la réponse est oui. Si vous avez pas trop tripatouillé le fichier vars, c’est valable pour 10 ans ! Dernière question (1 out of 1 certificate requests certified, commit? [y/n] ), réponse positive, là aussi.

Ouais, on est content, la clé côté serveur est générée !

 

Reste à générer les clés côté client(s). On va le faire une fois, pis vous reproduirez les étapes au besoin. Concrètement, il faut une clé cliente par client. Si vous avez un ordinateur portable et un smartphone, par exemple, il vous faudra deux clés, pour tout un tas de bonnes raisons, dont le fait que si vous vous faites tirer votre iPhone (qui a dit « sécurisation du contexte » ?!), vous bloquez juste sa clé à lui, sans vous refaire la configuration VPN de toutes les autres machines… Donc : ./build-key-pass <nom_du_client>. Encore une fois, un truc un minimum explicite, Machine1 si ça vous chante, ou le hostname de la machine concernée, ou je sais pas… Dans le cas de mon PC portable, j’ai mis son nom d’hôte, MrSlave (no comment). Fournissez un mot de passe que vous retiendrez (PEM passphrase), laissez le Challenge password vide là aussi. Evidemment, on va signer le certificat ! 😉

Parlons sécurité, maintenant. Comme on est un peu parano, et qu’on tient malgré tout à ce que notre VPN ne soit pas utilisé par le premier pécore venu, on va demander (gentiment) à OpenSSL de passer 3 fois sur notre clé cliente, à coup de 3DES.

On se place donc dans le répertoire contenant nos clés (cd keys) puis on appelle OpenSSL : openssl rsa -in Machine1.key -des3 -out Machine1.3des.key (là, on dit à OpenSSL d’utiliser RSA puisque nos clés sont de ce type, de prendre en entrée notre clé générée un poil plus tôt, et de lui appliquer 3DES pour générer une nouvelle clé en sortie). Il faudra reproduire cette étape pour chaque clé cliente générée. Logiquement, on va vous demander un mot de passe… Vous pouvez utiliser le même que précédemment, je pense. A vous de voir.

 

Etape 2 : un peu de sécurité…

Ça y est, on a un certificat serveur et (au moins) un certificat client. On progresse. Replaçons nous dans le dossier /etc/openvpn/easy-rsa (un cd .. devrait suffire). On va maintenant sécuriser un peu l’échange des clés. Vous comprenez bien que le client et le serveur doivent échanger des informations, sensibles en l’occurrence, pour identifier qui est qui et établir la connexion, le cas échéant. Il faut donc éviter autant que faire se peut qu’un tiers puisse « intercepter » tout ça et se faire passer pour un de nos clients, par exemple. Pour cela, on va utiliser l’échange de clés dit « Diffie-Hellman ».

Dans notre cas, c’est super simple à initialiser : ./build-dh. Euh… là, ça peut être un peu long, ça a bien mis 5min sur mon Raspberry Pi, et la durée est d’autant plus longue que j’ai choisi d’utiliser des clés de 2048 bits. Ce sera plus rapide avec « seulement » 1024 bits, évidemment, mais moins sécurisé. Coffee-time, donc.

 

Autre sécurité, tant qu’à faire. On ne présente plus les attaques « par déni de service » (DoS, pour Denial of Service) qui se sont popularisées ces dernières années. Même le premier Kévin venu peut avoir accès à des outils simples pour les réaliser, alors autant les prendre en compte. Chance (anticipation, pardon), OpenVPN implémente une première barrière contre ce type d’attaques. On va l’activer !

OpenVPN utilise (si on lui demande de le faire !) un système ingénieux : le HMAC (Hash-based Message Authentication Code). C’est un code d’authentification partagé entre le serveur et le client, connu des deux dès le départ, qui précède la réelle authentification du client auprès du serveur. Techniquement, si un client « tiers » demande à s’authentifier auprès de notre serveur sans entamer le dialogue par l’envoi de ce HMAC, OpenVPN ne va même pas entamer la procédure : ce client n’est pas connu, on l’ignore, on ne lance pas la grosse machinerie, donc on ne surcharge pas le serveur.

Allez, c’est parti : openvpn --genkey --secret keys/ta.key (et c’est tout !).

 

Etape 3 : configuration du serveur

On a ce qu’il faut pour la communication client-serveur. Reste un détail : dire au serveur comment se comporter ! 😛

On est toujours connecté en tant qu’utilisateur root, hein. Ou à grands coups de sudo, si vous préférez. Ouvrons le fichier de configuration qui va bien : nano /etc/openvpn/server.conf. Ce fichier est vide, je vais vous donner mon fichier de configuration initial commenté, à vous d’adapter à votre cas !

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
local 192.168.0.125 # adresse IP locale de votre serveur
dev tun # type de VPN, tun (tunnel IP) ou tap (tunnel Ethernet/bridge)
proto tcp # protocole à utiliser : tcp ou udp, généralement udp
port 1194 # le port par défaut pour OpenVPN, à ajuster au besoin
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/mamayzon.crt # à ajuster à votre serveur
key /etc/openvpn/easy-rsa/keys/mamayzon.key # idem
dh /etc/openvpn/easy-rsa/keys/dh2048.pem # si vous êtes restés sur du 1024 bits, changez ici
server 10.8.0.0 255.255.255.0 #le réseau au sein duquel vous allez attribuer des IP
ifconfig 10.8.0.1 10.8.0.2 # serveur et point de sortie distant
push "redirect-gateway def1"
push "route 10.8.0.1 255.255.255.255" # route vers le serveur VPN
push "route 10.8.0.0 255.255.255.0" # route vers le sous-réseau VPN
push "route 192.168.0.125 255.255.255.0" #sous-réseau local - adaptez l'adresse IP locale de votre serveur
push "dhcp-option DNS 192.168.0.1" # votre serveur DNS primaire (votre routeur, souvent)
# vous pouvez aussi utiliser le DNS Google 8.8.8.8 ou OpenDNS 208.67.222.222
# pour le reste, a priori pas de raisons d'y toucher à moins de savoir ce que vous faites !
client-to-client
duplicate-cn
keepalive 10 120
tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0
cipher AES-128-CBC
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn-status.log 20
log /var/log/openvpn.log
verb 1

Enregistrez, et basta !

 

Bon, c’est bien gentil tout ça, mais on a pas fini. Par défaut, Raspbian (la Debian trafiquée pour Raspberry Pi) n’autorise pas le transit de paquets entre deux réseaux comme ça, sans rien dire. C’est problématique pour notre VPN. Du coup, activons cette fonctionnalité en éditant le fichier idoine : nano /etc/sysctl.conf. Une ligne dans la deuxième section commence par  Uncomment the next line to enable packet forwarding for IPv4, et c’est pile ce qu’il nous faut. Décommentez donc la ligne en dessous en lui enlevant le # en début de ligne. On a donc : net.ipv4.ip_forward=1 . Enregistrez et fermez ce fichier, et rechargez les paramètres afin de les prendre en compte : sysctl -p.

C’est presque suffisant. Le truc, c’est que Raspbian (comme d’autres hein !) utilise un pare-feu pour vous protéger, et que ce dernier ne va pas laisser passer vos requêtes. On va le lui imposer (c’qui l’patron, après tout ?!). Créez un fichier comme ceci : nano /etc/firewall-openvpn-rules.sh et collez-y :

1
2
#!/bin/sh
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Et pensez bien à changer l’IP de la fin en y plaçant celle de votre serveur ! On va maintenant donner des permissions « correctes » à ce fichier, afin que tout le monde ne fasse pas n’importe quoi avec : chmod 700 /etc/firewall-openvpn-rules.sh et chown root /etc/firewall-openvpn-rules.sh. Concrètement, on commence par donner les permissions 700 (le propriétaire du fichier peut lire, écrire, exécuter ; les autres se touchent), puis par affecter « root » (le superutilisateur) comme propriétaire.

Maintenant, on va charger ce fichier lors de la configuration de l’interface réseau : ouvrons cette configuration (nano /etc/network/interfaces) et ajoutons une ligne sous l’interface concernée, dans mon cas eth0. Et avec l’indentation, svp. La ligne : pre-up /etc/firewall-openvpn-rules.sh . Comme ça, en gros :

interfaces_vpn

 

Maintenant, redémarrez votre serveur (reboot) !

Et vous savez quoi ? Bah… Votre serveur est opérationnel ! \o/

 

Configuration du client

Soyons honnêtes deux minutes, même si c’est simple depuis le début (pour vous qui êtes guidés, parce que moi, j’ai un peu galéré :mrgreen: ), c’est long/chiant. Alors se taper un fichier de configuration à écrire à la main, passe encore, mais dans mon cas j’ai déjà 3 clients (ordinateur portable en dual-boot Windows 8 / elementaryOS, smartphone, tablette). Comme d’autres (en l’occurrence, Eric Jodoin) ont écrit un script qui les génère pour nous… Ne nous privons pas !

On se replace en tant que root, comme pour la première partie du tutoriel : sudo -s. Et éditons un nouveau fichier : nano /etc/openvpn/easy-rsa/keys/Default.txt, puis plaçons-y le contenu suivant (attention, adaptez-le si vous avez fait des modifications (genre protocole, port…) côté serveur) :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
client
dev tun
proto udp
remote XX.XX.XX.XX 1194
resolv-retry infinite
nobind
persist-key
persist-tun
mute-replay-warnings
ns-cert-type server
key-direction 1
cipher AES-128-CBC
comp-lzo
verb 1
mute 20

Remplacez les XX.XX.XX.XX par votre adresse IP externe (ou votre domaine hein), c’est-à-dire celle fournie par votre fournisseur d’accès (pas une qui commence par 192.168, donc). Si vous n’avez pas d’IP fixe, vous pouvez passer par un service comme DynDNS, No-IP…

Maintenant, on va créer le script pour générer le fichier de configuration client. Comme précisé, il a été écrit par Eric Jodoin, et je n’ai fait que l’adapter à mon cas, et vous le traduire en français. Il est disponible sur Github. Vous avez juste à l’insérer dans le fichier nouvellement créé : nano /etc/openvpn/easy-rsa/keys/MakeOpenVPN.sh .

On se replace dans ce même répertoire (cd /etc/openvpn/easy-rsa/keys/), on donne les permissions adaptées au script (chmod 700 MakeOpenVPN.sh), et… on l’exécute : ./MakeOpenVPN.sh. Répondez à l’unique question de la moulinette, à savoir lui fournir le nom d’un des clients créés tout à l’heure ! Normalement, aucune erreur. Recommencez pour chaque client à créer. 😉

Plus qu’à récupérer les fichiers créés. On va les copier dans le répertoire de notre utilisateur « normal » pour pouvoir les récupérer plus facilement sans être superutilisateur… cp *.ovpn /home/pi suffit, en remplaçant /home/pi par votre chemin perso si besoin.

 

Récupérez ensuite ces fichiers de la manière qui vous semble la plus adaptée (clé USB, partage réseau, SCP…) et distribuez les fichiers de configuration à chacun des clients, comme vous feriez avec n’importe quel fichier ! 😉

 

Sous Windows

Il vous faut télécharger le client officiel et l’installer. Placez ensuite votre fichier client.ovpn dans le dossier C:\Program Files\OpenVPN\config et lancez OpenVPN (attention : il faut le lancer en tant qu’administrateur pour qu’il puisse fonctionner correctement !). Le démon apparaît dans la barre de notification : vous pouvez vous connecter après avoir saisi le mot de passe associé à ce client !

 

Sous Android

Vous pouvez installer l’application officielle OpenVPN Connect et lui indiquer de charger la configuration depuis un fichier présent sur la carte SD. Pointez sur le fichier client.ovpn, et c’est tout. Vous pourrez vous connecter, également après avoir saisi le mot de passe 😉

Vous pouvez également installer OpenVPN for Android qui fonctionne de la même façon, mais est disponible via le dépôt F-Droid.

 

Sous Linux

Comme souvent, c’est le plus simple : sur une Debian-based (Debian, Ubuntu et dérivées… Mint, eOS, et j’en passe), un petit sudo apt-get install openvpn network-manager-openvpn et c’est quasiment réglé. Il vous suffit d’utiliser le gestionnaire de connexions par défaut, de choisir Connexions VPN > Configurer un VPN… et de sélectionner « Importer une configuration VPN enregistrée… » puis d’indiquer votre fichier client.ovpn. Le système ouvre une fenêtre pré-remplie, plus qu’à valider ! 😉

Il y a d’autres façons de faire, la doc Ubuntu est assez fournie sur le sujet pour que je ne fasse pas doublon.

 

vpncat

 

C’est fini !

Voilà, un article de plus… qui arrive à son terme. J’espère qu’il vous sera utile, et que vous comprenez tout l’enjeu d’utiliser un VPN au quotidien, même si effectivement, un VPN auto-hébergé, c’est un peu pénible, parce que quand on est sur du « simple » ADSL ça sature plus que rapidement. M’enfin quand vous êtes sur un Wi-Fi public, chez des gens, ou où que ce soit mais que vous n’avez pas confiance dans le réseau (ou les autres utilisateurs) (et vous ne devriez pas avoir confiance), pour ce qui est « sensible » (ne serait-ce que consulter votre banque en ligne), ayez le réflexe VPN.

Et c’est encore plus utile quand vous avez un partage de fichiers à la maison, ou une imprimante… Et que clairement c’est pas une bonne idée d’ouvrir tout ça sur l’extérieur. Autant s’y connecter de façon sécurisée.

S’il y a besoin d’éclaircissements, je suis là, comme toujours. Bonne lecture, et bon courage à celles et ceux qui vont se lancer dans l’aventure. Franchement, j’aurais eu un guide comme ça, ça aurait été tout seul, et il m’aurait pas fallu 2 tentatives + un effacement de clés malencontreux ! 😉

A très vite ! J’vous bisouille !

74 commentaires sur “[Tuto] Monter son VPN perso avec OpenVPN

  • 23 août 2014 à 15 h 15 min
    Permalink

    Cool ! Merci pour cet article très concret sur le sujet. J’utilise OpenVPN depuis 3 mois, c’est vraiment agréable de se sentir protégé lorsque l’on utilise pas mal les réseaux Wifi environnants. J’avais commencé sur mon serveur à la maison, j’ai mis comme toi plusieurs tentatives avant d’arriver à quelque chose, les tutos ne sont pas toujours complets, ou n’expliquent pas toujours les finalités des différentes clés. En plus, j’avais le problème de la connexion ADSL et son débit limité à 1Mb/S
    Je l’ai installé plus récemment sur un vps Ovh, et là, c’est vraiment plus sympa ! Et j’ai mis un peu moins de temps que la première fois.

    En tout cas, content que cet article existe maintenant, il me servira à la prochaine installation pour mieux comprendre les échanges de clé, la sécurisation du serveur, c’est un bon article à garder sous le bras !
    A++

    Réponse
  • 27 août 2014 à 15 h 17 min
    Permalink

    Haaa tiens je m’étais initié sur Open VPN sous Windows je testerais bien sous Linux 😉
    Merci du partage 🙂

    Réponse
  • 13 septembre 2014 à 17 h 29 min
    Permalink

    Il faudrait préciser que dans la génération de la clé client, il ne faut pas mettre le même common name que le serveur, si il te sort une belle erreur (ce qui m’est arrivé) :
    failed to update database
    TXT_DB error number 2

    Réponse
  • 2 octobre 2014 à 23 h 53 min
    Permalink

    Je ne sais pas si ma question a un rapport avec ce thème mais je la pose quand même.
    J’ai remarqué il n’y a pas longtemps que sur certain wifi je n’arrivai pas a passé des messages sur whatsapp ou consulté mon instagram je me suis renseigné et apparemment certain réseaux wifi bloque les xmpp.Je voudrai savoir s’il y a un moyen de contourné cela si oui lequel et comment ? Je vous remercie et j’attends vos reponses 🙂

    Réponse
  • 16 octobre 2014 à 18 h 05 min
    Permalink

    Salut, je te remercie pour ton tuto très clair.

    J’ai une petite question, j’ai fini vpn, mais puis-je créer une nouvelle clé client sans être obligé de faire un ./build-dh à chaque fois ?

    Merci de ta réponse.

    Quentin

    Réponse
    • 16 octobre 2014 à 18 h 51 min
      Permalink

      Salut,

      pas besoin de reconstruire la totalité du truc, tu peux simplement générer un nouveau certificat client (./build-key-pass ), utiliser OpenSSL pour le passer au 3DES, puis utiliser le dernier script pour générer le fichier .ovpn qui va bien.

      Si tu as un souci, je suis là 🙂

      Réponse
      • 16 octobre 2014 à 21 h 28 min
        Permalink

        Je te remercie, du coup ça va ouvrir la porte à un script sur une page web sécurisé (sur mon RPI) générant automatiquement le certificat + *.ovpn.

        Merci de ta réponse rapide.

        Réponse
      • 16 octobre 2014 à 21 h 33 min
        Permalink

        Ah et une dernière demande, comme fais-tu pour révoquer un certificat d’un utilisateur ?

        Réponse
        • 17 octobre 2014 à 8 h 40 min
          Permalink

          C’est simple même si je n’en ai pas parlé, en effet. Tu refais :

          1
          source ./vars

          puis

          1
          ./revoke-full Client01

          Ensuite, tu ajoutes la ligne suivante à ton fichier /etc/openvpn/server.conf

          1
          crl-verify /etc/openvpn/easy-rsa/keys/crl.pem

          Comme ça, ton serveur va vérifier que le fichier crl.pem contient ou non un certificat avant d’autoriser/refuser la connexion. 🙂

          Réponse
      • 25 mai 2015 à 19 h 33 min
        Permalink

        salut, j’ai un petit probleme, lorsque je veut générer une autre clé pour un autre client: j’utilse ./build-key-pass , mais j’ai cette erreur :
        Please edit the vars script to reflect your configuration,
        then source it with « source ./vars ».
        Next, to start with a fresh PKI configuration and to delete any
        previous certificates and keys, run « ./clean-all ».
        Finally, you can run this tool (pkitool) to build certificates/keys.

        j’ai raté quoi ?

        Réponse
  • 28 octobre 2014 à 21 h 06 min
    Permalink

    Salut !
    J’ai suivi ton idée et je t’en remercie. Du coup je l’ai appliquée à la fac.
    Je pense avoir tout bien paramétré, cependant mon RPI reste invisible…
    J’ai l’impression que l’ip de sortie est une ip générique pour tout le bâtiment de la fac…
    Comment je peux résoudre mon problème ?
    Tu as peut-être une idée ?
    Merci pour ton aide !
    Cverin

    Réponse
    • 10 décembre 2014 à 11 h 55 min
      Permalink

      Bonjour, pour commencer…

      Je trouve ton commentaire un poil trop affirmatif. La configuration d’un OpenVPN « de base » (ce qui est le cas ici, rien de bien exotique) ressemble en tout point à la conf d’une autre instance OpenVPN… N’importe quel tuto sur le net reprend ce « plan » (install serveur / config / clients). Je ne savais pas tout configurer, évidemment, j’apprends en même temps que les lecteurs.

      Évidemment aussi que je pioche des commandes par-ci par-là, ou juste lis la doc en l’occurrence. Toi, tu sais configurer n’importe quoi juste en faisant un « apt-get install » et paf, c’est tout prêt et opérationnel ? Tu as bien de la chance…
      Le seul élément pris ailleurs est un script, pour lequel je cite l’auteur avec un lien vers le gist. Le tutoriel que toi tu cites, je ne l’ai jamais vu avant de recevoir le mail m’informant de ton post.

      À l’avenir, prend la peine de contacter l’auteur des articles que tu penses être du plagiat, j’aurais pu t’éclairer sans étaler ça ici et surtout je l’aurais probablement mieux pris. Obligé de répondre ici de toutes façons, vu le pseudo/mail utilisé…

      Bonne continuation, et de rien pour la « traduction », c’est toujours un plaisir d’aider les gens et d’avoir un peu de reconnaissance ! 🙂

      Réponse
    • 10 décembre 2014 à 12 h 02 min
      Permalink

      Bonjour « Ilnefautpasoublierdesitersessourcessinonc’estduplagia », visiblement un nom d’emprunt non sans cacher un certaine couardise.

      Ceci n’est pas du plagiat au sens où tu l’entends. Tes accusations sont graves (car elles peuvent être portées en justice).

      Avant de sortir de telles inepties renseigne toi sur les points fondamentaux suivants:
      – Plagiat (en tant que faute morale)
      – Démarquage
      – Contrefaçon (d’œuvres, osef des sacs à main)

      Ce que tu porte en accusation ici est un vol immatériel complètement infondé dans le sens ou ce genre de sujet suit généralement le même plan. J’ai trouvé pléthore d’autres liens abordant le même sujet, avec le même plan, et les mêmes foutues commandes.

      Il ne s’agit aucunement de traduction de quoi que ce soit. Ou alors, il va falloir que je progresse fortement en anglais…

      Réponse
  • 23 décembre 2014 à 14 h 03 min
    Permalink

    Maxime Auvy merci pour le tuto et puis ce qui te critique n ont pas totalement tort mais sache que moi je te soutient car tu a permis que je crée mon propre tunnel merci et bon avancement

    Réponse
  • 6 janvier 2015 à 18 h 15 min
    Permalink

    pr moi il a fallu ajouter
    push « redirect-gateway def1 »
    ds server.conf

    mais sinon tres bon tuto, merci

    Réponse
  • 9 janvier 2015 à 18 h 16 min
    Permalink

    Bonjour,
    j’ai une erreur lors de la génération du fichier .ovpn pour le client.
    [ERREUR]: Clé privée tls-auth non trouvée : ta.key
    Effectivement apres un ls le fichier n’existe pas.
    Quel étape génère ce fichier afin de la refaire ?

    Réponse
    • 9 janvier 2015 à 18 h 43 min
      Permalink

      C’est cool, j’ai trouvé l’étape manquante.

      Réponse
  • 10 janvier 2015 à 22 h 13 min
    Permalink

    Bonjour,
    Merci pour ce tuto qui m’a enfin permis de monter un VPN sur mon BananaPi/Bananian.
    Ce tuto s’applique parfaitement aussi à cette machine.
    Par contre j’ai relevé une erreur au niveau du NAT. Avec cette config on accède bien au réseau du serveur OpenVPN mais le trafic internet continue de transiter par la connexion locale. La ligne :

    1
    iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source 192.168.0.125

    contient des paramètre en trop. Soit on veut diriger vers l’IP de sortie du serveur :

    1
    iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source 192.168.0.125

    Soit on redirige vers l’interface :

    1
    iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

    Une fois que l’on a cette config de corrigée, le trafic internet passe bien par le serveur VPN.
    En espérant que cela aide.
    Arhtur

    Réponse
    • 15 janvier 2015 à 7 h 50 min
      Permalink

      C’est exact. Merci, je vais mettre la ligne à jour dans l’article ! 🙂

      Réponse
  • 18 janvier 2015 à 20 h 24 min
    Permalink

    Bonjour,

    Tout d’abord, merci pour cet excellent tuto ! Je suis parvenu à connecté mon smartphone via la 4G à mon rpi. Ceci dit, je ne fais qu’envoyer des données sans en recevoir :/
    Au niveau des logs sur mon smartphone je remarque :
    « Error parsing IPv4 route : [route] [192.168.0.10] [255.255.255.0] : tun_prop_error:route is not canonical. »
    D’où cela pourrait-il venir ? Je me sens si près du but ! :p

    Réponse
    • 18 janvier 2015 à 20 h 35 min
      Permalink

      J’ai rien dit, j’avais décommenté la mauvaise ligne au niveau du fichier sysctl.conf. Honte à moi..
      J’ai découvert ton blog grâce à ce tuto et j’ai beaucoup aimé tes articles précédents. J’attends impatiemment tes articles suivants 🙂

      Bien à toi,
      JU

      Réponse
      • 27 janvier 2015 à 14 h 32 min
        Permalink

        Ah, content de voir que tu as résolu ton souci rapidement et tout seul en plus ! \o/

        Merci, c’est encourageant ! Je vais essayer de reprendre un rythme de publication « plus soutenu » maintenant que ça s’allège un peu autour… 🙂
        Stay tuned! 😉

        Réponse
  • 21 janvier 2015 à 1 h 41 min
    Permalink

    Bravo pour ce tuto 🙂

    Personnellement j’utilise la directive suivante pour avoir un réseau client en /24, (surtout pour Windows) :
    topology subnet;

    C’est lié à une sombre restriction de la carte virtuelle tun/tap… ^^

    Réponse
    • 27 janvier 2015 à 14 h 31 min
      Permalink

      Hum, je ne connais pas du tout… Je vais jeter un œil, sait-on jamais ! 😀

      Réponse
  • 27 janvier 2015 à 11 h 23 min
    Permalink

    Salut, et merci pour ce tuto ! J’ai découvert ton blog il y a peu de temps, et tes articles sont tous très intéressants ! Bravo et bonne continuation.

    J’ai donc suivi ce tuto à la lettre, et tout fonctionnait normalement sur des clients Windows, Linux et iOS. Cependant, depuis quelques temps (je dirais 2 semaines), sur mes clients Linux (ubuntu 12.04) je ne peux plus charger certaines pages web (notamment google, speedtest.net) ni accéder à la page de configuration de mon routeur (192.168.0.1), alors que d’autres pages web se chargent normalement, et que j’arrive à accéder aux autres machines présentes sur mon réseau. C’est très curieux.. Je n’arrive pas à comprendre ce qui se passe. Quelqu’un a-t-il une idée ?
    Guy

    Réponse
    • 27 janvier 2015 à 14 h 35 min
      Permalink

      Salut,

      merci du compliment, ça me fait plaisir ! Ça me pousse un peu à reprendre l’écriture aussi 🙂

      Ah, le souci n’apparaît que sur des clients Linux ? Parce que c’est vrai que sous Ubuntu, c’est parfois bien galère… Tu peux charger des pages mais pas toutes ? Ça c’est étrange par contre, un souci de DNS ? Qui ne colle pas avec la page de ton routeur cela dit…

      Tu as des erreurs dans les logs client et serveur ?

      Maxime

      Réponse
      • 28 janvier 2015 à 10 h 23 min
        Permalink

        Salut ! Merci de ta réponse ! Oui, c’est très bizarre, le problème n’apparaît que sur les clients Ubuntu. Je peux charger certaines pages, et pas d’autres (« la connexion a été réinitialisée » sur firefox, pareil avec chrome) mais a priori les noms sont bien résolus (j’ai essayé les trois serveurs DNS suivants : openDNS, le DNS de mon FAI et DNS google). De plus le problème ne change pas en rentrant directement l’adresse IP du site visé. En fait la page commence à se charger et puis pouf message « connexion réinitialisée ».
        Alors sur la partie serveur aucune erreur dans les logs, par contre il y une erreur sur mes clients ubuntu : « ERROR: Linux route add command failed: external program exited with error status: 7 » dont je n’arrive pas bien à comprendre l’origine à part qu’il y a un problème de routage. Enfin bon, mystère et boule de gomme…

        Guy

        Réponse
  • 15 février 2015 à 19 h 17 min
    Permalink

    Bonjour,
    après avoir suivi ce tuto, je suis désespéré, j’arrive pas que ça fonctionne…

    mes logs:

    [quote]root@raspberrypi:/var/log# sudo service openvpn stop
    [ ok ] Stopping virtual private network daemon:.
    root@raspberrypi:/var/log# sudo service openvpn start
    [FAIL] Starting virtual private network daemon: server failed![/quote]

    [quote]root@raspberrypi:/var/log# grep VPN *
    openvpn.log:Sun Feb 15 18:03:05 2015 OpenVPN 2.2.1 arm-linux-gnueabihf [SSL] [LZO2] [EPOLL] [PKCS11] [eurephia] [MH] [PF_INET6] [IPv6 payload 20110424-2 (2.2RC2)] built on Dec 1 2014
    openvpn.log:Sun Feb 15 18:03:06 2015 NOTE: your local LAN uses the extremely common subnet address 192.168.0.x or 192.168.1.x. Be aware that this might create routing conflicts if you connect to the VPN server from public locations such as internet cafes that use the same subnet.
    openvpn.log:Sun Feb 15 18:03:06 2015 NOTE: OpenVPN 2.1 requires ‘–script-security 2’ or higher to call user-defined scripts or executables
    openvpn.log:Sun Feb 15 18:03:06 2015 Control Channel Authentication: using ‘/etc/openvpn/easy-rsa/keys/ta.key’ as a OpenVPN static key file[/quote]

    [quote]root@raspberrypi:/var/log# cat openvpn.log
    Sun Feb 15 18:03:05 2015 OpenVPN 2.2.1 arm-linux-gnueabihf [SSL] [LZO2] [EPOLL] [PKCS11] [eurephia] [MH] [PF_INET6] [IPv6 payload 20110424-2 (2.2RC2)] built on Dec 1 2014
    Sun Feb 15 18:03:06 2015 NOTE: your local LAN uses the extremely common subnet address 192.168.0.x or 192.168.1.x. Be aware that this might create routing conflicts if you connect to the VPN server from public locations such as internet cafes that use the same subnet.
    Sun Feb 15 18:03:06 2015 NOTE: OpenVPN 2.1 requires ‘–script-security 2’ or higher to call user-defined scripts or executables
    Sun Feb 15 18:03:06 2015 Control Channel Authentication: using ‘/etc/openvpn/easy-rsa/keys/ta.key’ as a OpenVPN static key file
    Sun Feb 15 18:03:06 2015 TCP/UDP: Socket bind failed on local address [AF_INET]192.168.1.12:8080: Cannot assign requested address
    Sun Feb 15 18:03:06 2015 Exiting
    root@raspberrypi:/var/log# [/quote]

    [quote]root@raspberrypi:/var/log# ifconfig
    eth0 Link encap:Ethernet HWaddr b8:27:eb:b1:14:88
    inet addr:192.168.1.120 Bcast:192.168.1.255 Mask:255.255.255.0
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:4534 errors:0 dropped:0 overruns:0 frame:0
    TX packets:1599 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:287732 (280.9 KiB) TX bytes:318712 (311.2 KiB)

    lo Link encap:Local Loopback
    inet addr:127.0.0.1 Mask:255.0.0.0
    UP LOOPBACK RUNNING MTU:65536 Metric:1
    RX packets:16 errors:0 dropped:0 overruns:0 frame:0
    TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:1504 (1.4 KiB) TX bytes:1504 (1.4 KiB)[/quote]

    [u][b]My server configuration[/b][/u]

    [quote]root@raspberrypi:/var/log# cat /etc/openvpn/server.conf
    local 192.168.1.12O # adresse IP locale de votre serveur
    dev tun # type de VPN, tun (tunnel IP) ou tap (tunnel Ethernet/bridge)
    proto udp # protocole à utiliser : tcp ou udp, généralement udp
    port 8080 # le port par défaut pour OpenVPN, à ajuster au besoin
    ca /etc/openvpn/easy-rsa/keys/ca.crt
    cert /etc/openvpn/easy-rsa/keys/raspi.crt # à ajuster à votre serveur
    key /etc/openvpn/easy-rsa/keys/raspi.key # idem
    dh /etc/openvpn/easy-rsa/keys/dh1024.pem # si vous êtes restés sur du 1024 bits, changez ici
    server 10.8.0.0 255.255.255.0 #le réseau au sein duquel vous allez attribuer des IP
    ifconfig 10.8.0.1 10.8.0.2 # serveur et point de sortie distant
    push « redirect-gateway def1 »
    push « route 10.8.0.1 255.255.255.255 » # route vers le serveur VPN
    push « route 10.8.0.0 255.255.255.0 » # route vers le sous-réseau VPN
    push « route 192.168.1.120 255.255.255.0 » #sous-réseau local – adaptez l’adresse IP locale de votre serveur
    push « dhcp-option DNS 192.168.1.254 » # votre serveur DNS primaire (votre routeur, souvent)
    # vous pouvez aussi utiliser le DNS Google 8.8.8.8 ou OpenDNS 208.67.222.222
    # pour le reste, a priori pas de raisons d’y toucher à moins de savoir ce que vous faites !
    client-to-client
    duplicate-cn
    keepalive 10 120
    tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0
    cipher AES-128-CBC
    comp-lzo
    user nobody
    group nogroup
    persist-key
    persist-tun
    status /var/log/openvpn-status.log 20
    log /var/log/openvpn.log
    verb 1[/quote]

    [u][b]Client configuration[/b][/u]

    [quote]root@raspberrypi:/var/log# cat /etc/openvpn/easy-rsa/keys/Default.txt
    client
    dev tun
    proto udp
    remote my_domaine.no-ip.org 8080
    resolv-retry infinite
    nobind
    persist-key
    persist-tun
    mute-replay-warnings
    ns-cert-type server
    key-direction 1
    cipher AES-128-CBC
    comp-lzo
    verb 1
    mute 20
    root@raspberrypi:/var/log# [/quote]

    [u][b]TCPDUMP (packets seen from the raspberry[/b][/u]

    [quote]root@raspberrypi:/var/log# tcpdump port 8080
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
    18:08:31.491828 IP 80.215.228.152.4574 > raspberrypi.http-alt: UDP, length 42
    18:08:32.543454 IP 80.215.228.152.4574 > raspberrypi.http-alt: UDP, length 42
    18:08:36.603940 IP 80.215.228.152.4547 > raspberrypi.http-alt: UDP, length 42
    18:08:38.603710 IP 80.215.228.152.4547 > raspberrypi.http-alt: UDP, length 42
    18:08:40.623667 IP 80.215.228.152.4547 > raspberrypi.http-alt: UDP, length 42[/quote]

    je ne sais plus quoi faire…

    help?

    Réponse
  • 20 février 2015 à 9 h 39 min
    Permalink

    Merci pour ce superbe Tuto 🙂
    Juste une précision …
    Dans le Tuto, il ne faut pas oublier d’être cohérent entre le protocole utilisé et indiqué dans les fichier « server.conf » et « Defaults.conf ».
    Dans le Tuto, le « server.conf » indique TCP et le « Defaults.conf » indique UDP 🙂
    voilà 🙂 juste cette petite précision à apporter peut-être 🙂

    en tout cas Merkiiiii +++

    Réponse
  • 9 mars 2015 à 17 h 19 min
    Permalink

    Salut , déjà merci pour ton tuto bien détaillé .
    j’ai un souci de connexion entre mon client windows et mon serveur vpn debian avec openvpn .
    quand j’essaye de me connecter j’ai message du style « tls handshake failed openvpn  » apparemment c’est un message d’erreur classic .je crois que ça vient du firewall coté serveur .Alors je voulais savoir si il fallait que j’établisse une régle dans le script du firewall afin de laisser passer les connexions udp.

    merci

    Réponse
    • 7 juin 2016 à 18 h 35 min
      Permalink

      Salut, j’ai la même erreur… T’as trouvé une solution ?

      Réponse
  • 2 avril 2015 à 13 h 15 min
    Permalink

    Salut !

    Merci pour ton tuto, j’ai repéré quelques erreurs dedans, et je pense que c’est l’une d’elle qui fait que ça ne fonctionne pas pour moi car j’ai du mal à réparer… Voici la liste :

    – Déjà, partout dans ton tuto tu utilises « easy-rsa » alors que le dossier se trouvant chez moi (automatiquement après installation d’OpenVPN) se nomme « easy_rsa ».
    – Dans la configuration du serveur (server.conf), je trouve beaucoup de choses non génériques, et que je n’arrive pas à mettre à ma sauce :
    – Le local (192.168.0.125), perso je suis sur un VPS, je n’ai pas d’IP locale, que suis-je censé mettre à cette ligne ?
    – Le proto tcp, il est indiqué qu’il vaut mieux mettre udp, c’est normal que tu aies mis tcp ?
    – Dans le push « route 192.168.0.125 (…) », du coup je dois remplacer par l’IP de mon VPS ?
    – Pour le iptables, je n’ai pas compris ta phrase « pensez à bien changer l’IP de la fin ». Ouais, sauf que y’a pas d’IP à la fin alors… Je peux pas la changer… Peux tu me repréciser la ligne iptables que je dois mettre ?

    Thu Apr 02 14:13:28 2015 OpenVPN 2.3.6 x86_64-w64-mingw32 [SSL (OpenSSL)] [LZO] [PKCS11] [IPv6] built on Mar 19 2015
    Thu Apr 02 14:13:28 2015 library versions: OpenSSL 1.0.1m 19 Mar 2015, LZO 2.08
    Thu Apr 02 14:13:31 2015 WARNING: this configuration may cache passwords in memory — use the auth-nocache option to prevent this
    Thu Apr 02 14:13:31 2015 Control Channel Authentication: tls-auth using INLINE static key file
    Thu Apr 02 14:13:31 2015 Attempting to establish TCP connection with [AF_INET]MON_SERVEUR:80 [nonblock]
    Thu Apr 02 14:13:41 2015 TCP: connect to [AF_INET]MON_SERVEUR:80 failed, will try again in 5 seconds: Le système a tenté de joindre un lecteur à un répertoire stocké sur un lecteur joint.
    Thu Apr 02 14:13:56 2015 TCP: connect to [AF_INET]MON_SERVEUR:80 failed, will try again in 5 seconds: Le système a tenté de joindre un lecteur à un répertoire stocké sur un lecteur joint.
    Thu Apr 02 14:14:11 2015 TCP: connect to [AF_INET]MON_SERVEUR:80 failed, will try again in 5 seconds: Le système a tenté de joindre un lecteur à un répertoire stocké sur un lecteur joint.

    Pourrais-tu m’aiguiller ?

    Merci !
    Max

    Réponse
  • 16 avril 2015 à 11 h 47 min
    Permalink

    Super tuto. Clair, et bien résumé. J’avoue que j’ai galéré quand même, mais c’était à cause du firewall (ufw).

    Réponse
  • 2 mai 2015 à 8 h 14 min
    Permalink

    Bonjour Maxime,
    Merci pour ce super tuto qui fait gagner un temps énorme au newbie que je suis sur Linux…J’avais besoin d’un VPN accessible depuis partout, et ma petite framboise devrait faire l’affaire !

    J’ai un souci cependant : la ligne « pre-up /etc/firewall-openvpn-rules.sh » dans /etc/network/interfaces me cause un gros souci (à moins que ce ne soit l’instruction « iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE » dans /etc/firewall-openvpn-rules.sh…

    Cela provoque immanquablement quand je l’inclus, l’impossibilité de monter le serveur openvpn (Starting virtual private network daemon: server failed!), dû à l’erreur suivante : « TCP/UDP: Socket bind failed on local address [AF_INET] :8080: Cannot assign requested address ».
    Pire, depuis le réseau local, impossible alors de faire un ping ou un ssh sur mon Pi.

    J’ai fait un netstat -pnta et un lsof -i pour vérifier, aucun process n’est sur le protocole 8080…

    Comme je ne comprends pas l’histoire du MASQUERADE, je me demande si ça ne viendrait pas de cette instruction. Si tu peux m’aider à résoudre ce pb, ce serait super bienvenu !

    Bruno

    Réponse
  • 19 mai 2015 à 13 h 49 min
    Permalink

    Hello !
    Je rencontre des problèmes lors de la configuration du serveur…
    Je tiens à préciser que mon raspberry est directement connecté au réseau extérieur (il possède une ip publique).

    Pourrais tu préciser quelle adresse ip il faut mettre dans les documents de conf, niveau serveur ? C’est bien détaillé niveau commentaire, mais quand bien même, j’a du mal à m’en sortir ^^’

    Je parle de : server.conf
    mais aussi du firewall-openvpn-rules.sh, où tu dis mettre l’adresse du server mais on trouve en exemple 10.8.0.0 qui est une @ip réseau et non serveur :/

    Merci 😀

    Réponse
    • 28 mai 2015 à 7 h 55 min
      Permalink

      Salut,

      quand je parle des IP type 192.168.x.x, qui sont normalement des IP de réseau interne et non des IP publiques, c’est ce qui est considéré ici comme une IP publique (puisque c’est ton routeur qui fera la redirection depuis son IP externe vers 192.168.x.x). Donc tu peux remplacer ces IP par l’IP externe de ton Raspberry Pi.

      Par contre, les IP en 10.8.0.x sont des IP « internes au VPN » et à moins que tu aies une bonne raison de la changer, tu peux la laisser telle quelle.

      Si tu as d’autres questions, je suis là ! 🙂

      Réponse
  • 25 mai 2015 à 18 h 20 min
    Permalink

    Whao Super tuto, très (très) bien expliqué, je suis arriver a monter mon serveur VPN en 1h ( oui j’ai pris mon temps)
    Par contre , quel raspberry pi utilise tu ?
    Sur le mien la manip de Diffie-Hellman m’as pris 41 minutes ( no joke, j’ai cru que mon pi avait planté)
    En tout cas Merci ! je suis ton blog depuis peu, mais j’adore.

    Réponse
    • 28 mai 2015 à 7 h 52 min
      Permalink

      Merci, c’est sympa ! 🙂

      J’ai un Raspberry Pi B 512Mo, pas le B+ ni la v2 plus récente (même si je suis bien tenté par un second micro-ordinateur !).
      Non sans rire, ça prend 3 plombes à générer, effectivement…

      Réponse
      • 28 mai 2015 à 12 h 44 min
        Permalink

        Je compte prendre le RPI 2 ( car je m’en servirai pour d’autre service aussi) je te dirai si ca prend moins de temps. ( logiquement oui, mais cb =D ?)

        Réponse
  • 29 mai 2015 à 18 h 26 min
    Permalink

    Bonjour, merci pour ton tuto il est vraiment bien détaillé à la difference d’autres ou j’ai galéré car tout n’est pas expliqué en détail ….
    en revanche moi de mon coté rien ne se passe sur le Windows client à chaque fois que je veux me connecté il me dit connexion échouée ?? je ne sais pas quoi faire, dois je ouvrir des ports sur ma box ? je precise que mon pi est sur Freebox et que je me connecte avec mon client sur une box orange.
    Merci pour ton aide

    Réponse
      • 29 mai 2015 à 21 h 18 min
        Permalink

        Cote serveur ou client ? Dans quel Rep je le trouve?

        Réponse
        • 30 mai 2015 à 12 h 58 min
          Permalink

          coté serveur : cat /var/log/openvpn.log

          Réponse
          • 2 juin 2015 à 12 h 38 min
            Permalink

            Bonjour, merci pour ton aide voila ce que me dit le log serveur :
            Fri May 29 19:27:38 2015 OpenVPN 2.2.1 arm-linux-gnueabihf [SSL] [LZO2] [EPOLL] [PKCS11] [eurephia] [MH] [PF_INET6] [IPv6 payload 20110424-2 (2.2RC2)] built on Dec 1 2014
            Fri May 29 19:27:38 2015 NOTE: your local LAN uses the extremely common subnet address 192.168.0.x or 192.168.1.x. Be aware that this might create routing conflicts if you connect to the VPN server from public locations such as internet cafes that use the same subnet.

            Fri May 29 19:27:38 2015 NOTE: OpenVPN 2.1 requires ‘–script-security 2’ or higher to call user-defined scripts or executables
            Fri May 29 19:27:38 2015 Control Channel Authentication: using ‘/etc/openvpn/easy-rsa/keys/ta.key’ as a OpenVPN static key file
            Fri May 29 19:27:38 2015 TUN/TAP device tun0 opened
            Fri May 29 19:27:38 2015 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
            Fri May 29 19:27:38 2015 /sbin/ifconfig tun0 10.8.0.1 pointopoint 10.8.0.2 mtu 1500
            Fri May 29 19:27:38 2015 GID set to nogroup
            Fri May 29 19:27:38 2015 UID set to nobody
            Fri May 29 19:27:38 2015 UDPv4 link local (bound): [AF_INET]192.168.0.26:1194
            Fri May 29 19:27:38 2015 UDPv4 link remote: [undef]
            Fri May 29 19:27:38 2015 Initialization Sequence Completed

            Voila en revanche coté client rien, le panel reste vide aucune impression de tentative de connexion et apres 20s message d’erreur « connexion exchouée »
            Merci à toi si tu peux m’aider c’est la 1ere fois que je tente de monter un VPN

  • 30 mai 2015 à 21 h 31 min
    Permalink

    Merci pour ce super tuto.
    J’ai fais des tests sur un 1er serveur, ça a fonctionné impeccable du premier coup, mais lors du lancement sur le véritable serveur, j’ai eu quelques problème qui venait du firewall !!!

    Alors pour ceux et celles qui utilise le firewall pour diverses raison, voici ce que j’ai mis (depuis tout fonctionne impeccable)

    iptables -A FORWARD -i tun+ -o eth0 -m state –state RELATED,ESTABLISHED -j ACCEPT

    iptables -A FORWARD -i eth0 -o tun+ -m state –state RELATED,ESTABLISHED -j ACCEPT

    Avec ceci, votre VPN devrait fonctionner derrière votre firewall 😀

    Réponse
  • 3 juin 2015 à 17 h 48 min
    Permalink

    Coucou Maxime

    Merci pour ton tuto, ça aurait été un peu difficile sans….
    cependant pourrais-tu me préciser quelques trucs :

    ifconfig 10.8.0.1 10.8.0.2 # serveur et point de sortie distant
    push « redirect-gateway def1 »
    push « route 10.8.0.1 255.255.255.255 » # route vers le serveur VPN
    push « route 10.8.0.0 255.255.255.0 » # route vers le sous-réseau VPN
    push « route 192.168.0.125 255.255.255.0 » #sous-réseau local – adaptez l’adresse IP locale de votre serveur
    push « dhcp-option DNS 192.168.0.1 » # votre serveur DNS primaire (votre routeur, souvent)

    A quoi correspondent les ADD 10.8.0.x ?
    quant est-il si notre serveur VPN est en 192.168.1.xx avec une box 192.168.1.1 ?

    Réponse
  • Ping : OpenVPN | Memo

  • 28 juin 2015 à 17 h 52 min
    Permalink

    Super tuto pour créer son VPN sur son Rpi. Pas de soucis particulier. Merci encore 😉

    Réponse
  • 18 juillet 2015 à 20 h 22 min
    Permalink

    Merci pour ce tuto qui, en plus de me permettre d’avoir une connexion sécurisée sur des Wifi publics, me permet également de comprendre comment l’obtenir grâce aux explications détaillées et complètes !

    J’ai dû m’y reprendre à plusieurs reprises car ayant été à chaque fois dérangé durant la procédure, j’ai fini par m’y perdre dans les étapes.
    Par ailleurs j’ai également dû revoir quelques étapes afin de retrouver mes erreurs suite à des difficultés de connexion au serveur à parti du client.
    Pour m’y retrouver plus facilement, j’ai établi un résumé structuré tenant compte des corrections et remarques faites dans les commentaires qui suivent le tuto.

    Je le livre ici car il peut servir à d’autres.
    J’ai tenté de le baliser avec le code autorisé dans les commentaires en espérant que le résultat sera suffisamment propre lors de sa publication !

    1-Installation d’openvpn

    1
    sudo apt-get update &amp;&amp; sudo apt-get install openvpn

    2- Configuration du serveur
    connection en tant que super utilisateur

    1
    sudo -s

    2-1 Création du dossier de l’utilitaire
    easy-rsa

    1
    2
    cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0
            /etc/openvpn/easy-rsa

    On se place dans le dossier créé:

    1
    cd /etc/openvpn/easy-rsa

    Edition du fichier vars:

    1
    nano vars

    Changer la ligne export EASY_RSA= »`pwd` » en export
    EASY_RSA= »/etc/openvpn/easy-rsa »

    2-2 Génération des certificats

    2-2-1 Certificat du serveur:

    1
    2
    3
    source ./vars<br>
            ./clean-all<br>
            ./build-ca

    Remplir le questionnaire qui s’ensuit en laissant vide le Challenge
    password.
    Répondre yes aux deux dernières questions.

    1
    ./build-key-server &lt;nom_du_serveur&gt;

    avec <nom du serveur> = le nom que l’on souhaite donner à son
    serveur VPN.
    Remplir le questionnaire qui s’en suit (le common name doit être le même
    que le précédent.), laisser vide le Challenge passwordd et répondre yes
    aux deux dernières questions.

    2-2-2 Certificats des clients
    Créer une clé pour chaque machine cliente de la manière suivante:

    1
    ./build-key-pass &lt;nom_du_client&gt;

    ou <nom du client> est le nom que l’on désire donner pour chaque
    client
    Fournir un mot de passe à retenir (PEM passphrase) ; il sera demandé par
    OpenSSL

    Chiffrage par OpenSSL pour plus de sécurité
    on se place dans le répertoire des clés:

    1
    cd keys

    Puis on lance OpenSSL:

    1
    openssl rsa -in nom_du_client.key -des3 -out nom_du_client.3des.key

    #######  Ce qui suit n’est pas à refaire après création d’une
    nouvelle clé client

    2-3 Sécurisation de l’échange des clés
    on se replace dans le répertoire easy-rsa

    1
    cd ..
    1
    ./build-dh

    ça peut être long

    2-4 Pour se protéger des attaques DDOs

    1
    openvpn --genkey --secret keys/ta.key

    2-5 Configuration du comportement du
    serveur

    Edition du fichier de configuration (il est vide)

    1
    nano /etc/openvpn/server.conf

    Contenu du fichier à insérer en effectuant les changements nécessaires

    1
    2
    3
    4
    5
    6
    7
    8
    9
    local 192.168.XXX.XXX # mettre à la place des XXX la fin de
            l'adresse IP locale de son serveur<br>
            dev tun # type de VPN, tun (tunnel IP) ou tap (tunnel Ethernet/bridge)<br>
            proto udp # protocole à utiliser : tcp ou udp, généralement udp<br>
            port 1194 # le port par défaut pour OpenVPN, à ajuster au besoin<br>
            ca /etc/openvpn/easy-rsa/keys/ca.crt<br>
            cert /etc/openvpn/easy-rsa/keys/nom_serveur_VPN.crt # à ajuster à son
            serveur<br>
            key /etc/openvpn/easy-rsa/keys/
    1
    2
    3
    <span

              style="font-family: Arial;"><code>nom_serveur_VPN

    .key #
    idem
    dh /etc/openvpn/easy-rsa/keys/dh1024.pem # si on est passé sur du 2048
    bits, changez ici
    server 10.8.0.0 255.255.255.0 #le réseau au sein duquel on va attribuer
    des IP
    ifconfig 10.8.0.1 10.8.0.2 # serveur et point de sortie distant
    push « redirect-gateway def1 »
    push « route 10.8.0.1 255.255.255.255 » # route vers le serveur VPN
    push « route 10.8.0.0 255.255.255.0 » # route vers le sous-réseau VPN
    push « route 192.168.0.11 255.255.255.0 » #sous-réseau local – adapter
    l’adresse IP locale de son serveur

    1
    2
    3
    4
    <span style="font-family: Arial;"><code>push
                "dhcp-option DNS XXX.XXX.XXX.XXX" #mettre ici l'adresse de son
                serveur de DNS (généralement l'adresse de son routeur, ou utiliser
                les DNS possibles qui suivent en les dé-commentant)<br>

    # push « dhcp-option DNS 208.67.222.222 » #serveur DNS
    OpenDNS
    # push « dhcp-option DNS 8.8.8.8 » #serveur DNS Google
    # pour le reste, a priori pas de raisons d’y toucher à moins de savoir
    ce que l’on fait !
    client-to-client
    duplicate-cn
    keepalive 10 120
    tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0
    cipher AES-128-CBC
    comp-lzo
    user nobody
    group nogroup
    persist-key
    persist-tun
    status /var/log/openvpn-status.log 20
    log /var/log/openvpn.log
    verb 1

    2-6 Autoriser le trafic de paquets entre réseaux

    Edition du fichier sysct1.conf:

    1
    nano /etc/sysctl.conf

    Dé-commenter la ligne sous « Uncomment the next line to enable packet
    forwarding for IPv4 » pour avoir:

    1
    net.ipv4.ip_forward=1

    Après fermeture du fichier, recharger les paramètres par:

    1
    sysctl -p

    2-7 Configuration du pare-feu pour
    laisser passer les requêtes

    Création du fichier firewall-openvpn-rules.sh:

    1
    nano /etc/firewall-openvpn-rules.sh

    Y insérer les lignes suivantes:

    1
    2
    3
    4
    5
    #!/bin/sh<br>
            iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE <br>
            Protection du fichier en attribuant les permissions:<br>
            chmod 700 /etc/firewall-openvpn-rules.sh<br>
            chown root /etc/firewall-openvpn-rules.sh

    Pour charger le fichier lors de la configuration de l’interface réseau,
    faire :

    1
    nano /etc/network/interfaces

    et y insérer la ligne:
    p

    1
    re-up /etc/firewall-openvpn-rules.sh

    en dessous de la ligne iface eth0 inet static

    Redémarrer le serveur:

    1
    reboot


    3- Configuration des clients

    On se connecte en tant que super utilisateur:

    1
    sudo -s

    Création du fichier Default.txt:

    1
    nano /etc/openvpn/easy-rsa/keys/Default.txt

    On y place le contenu suivant:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    client<br>
            dev tun<br>
            proto udp<br>
            remote xx.xx.xx.xx 1194<br>
            resolv-retry infinite<br>
            nobind<br>
            persist-key<br>
            persist-tun<br>
            mute-replay-warnings<br>
            ns-cert-type server<br>
            key-direction 1<br>
            cipher AES-128-CBC<br>
            comp-lzo<br>
            verb 1<br>
            mute 20

    Création du script MakeOpenVPN.sh:

    1
    nano /etc/openvpn/easy-rsa/keys/MakeOpenVPN.sh

    Y insérer le contenu suivant:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    #!/bin/bash<br>
            # Déclaration des variables par défaut<br>
            DEFAULT="Default.txt"<br>
            FILEEXT=".ovpn"<br>
            CRT=".crt"<br>
            KEY=".3des.key"<br>
            CA="ca.crt"<br>
            TA="ta.key"<br>
            # Demande du nom du client<br>
            echo "Entrez le nom d'un client existant :"<br>
            read NAME<br>
            # On vérifie que la clé publique associé au nom du client existe<br>
            if [ ! -f $NAME$CRT ]; then<br>
            echo "[ERREUR] Clé publique non trouvée : $NAME$CRT"<br>
            exit<br>
            fi<br>
            echo "Clé publique trouvée : $NAME$CR"<br>
            # On vérifie qu'une clé privée existe pour ce client<br>
            if [ ! -f $NAME$KEY ]; then<br>
            echo "[ERREUR] Clé privée 3DES non trouvée : $NAME$KEY"<br>
            exit<br>
            fi<br>
            echo "Clé privée trouvée : $NAME$KEY"<br>
            &nbsp;<br>
            # On vérifie l'existence de la clé CA<br>
            if [ ! -f $CA ]; then<br>
            echo "[ERREUR]: Clé publique CA non trouvée : $CA"<br>
            exit<br>
            fi<br>
            echo "Clé publique CA trouvée : $CA"<br>
            &nbsp;<br>
            # On vérifie l'existence de la clé tls-auth<br>
            if [ ! -f $TA ]; then<br>
            echo "[ERREUR]: Clé privée tls-auth non trouvée : $TA"<br>
            exit<br>
            fi<br>
            echo "Clé privée tls-auth trouvée : $TA"<br>
            # Prêt à générer le fichier de configuration<br>
            # On commence par insérer le fichier de base<br>
            cat $DEFAULT &gt; $NAME$FILEEXT<br>
            # On ajoute la clé publique du CA<br>
            echo "&lt;ca&gt;" &gt;&gt; $NAME$FILEEXT<br>
            cat $CA &gt;&gt; $NAME$FILEEXT<br>
            echo "&lt;/ca&gt;" &gt;&gt; $NAME$FILEEXT<br>
            &nbsp;<br>
            # On ajoute la clé publique du client<br>
            echo "&lt;cert&gt;" &gt;&gt; $NAME$FILEEXT<br>
            cat $NAME$CRT | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
            &gt;&gt; $NAME$FILEEXT<br>
            echo "&lt;/cert&gt;" &gt;&gt; $NAME$FILEEXT<br>
            # On ajoute la clé privée du client<br>
            echo "&lt;key&gt;" &gt;&gt; $NAME$FILEEXT<br>
            cat $NAME$KEY &gt;&gt; $NAME$FILEEXT<br>
            echo "&lt;/key&gt;" &gt;&gt; $NAME$FILEEXT<br>
            # Enfin, on ajoute la clé tls-auth<br>
            echo "&lt;tls-auth&gt;" &gt;&gt; $NAME$FILEEXT<br>
            cat $TA &gt;&gt; $NAME$FILEEXT<br>
            echo "&lt;/tls-auth&gt;" &gt;&gt; $NAME$FILEEXT<br>
            echo "Terminé ! $NAME$FILEEXT généré avec succès."<br>
            &nbsp;<br>
            # Script written by Eric Jodoin<br>
            # Adapted/translated into French by Maxime Auvy<br>
            \ Pas de ligne vide en fin de fichier<br>

    On se replace dans le répertoire du fichier créé:

    1
    cd /etc/openvpn/easy-rsa/keys/

    On donne les permissions adaptées au script:

    1
    chmod 700 MakeOpenVPN.sh

    On exécute le script pour chaque client auquel on veut attribuer une clé :

    1
    ./MakeOpenVPN.sh

    en répondant à la question par le nom du client.
    On copie les clés créées dans le répertoire de l’utilisateur normal pour
    pouvoir les récupérer plus facilement:

    1
    cp *.ovpn /home/pi

    Merci encore pour ce tuto et bon courage dans la tenue du site !
    Cordialement

    Réponse
  • 18 juillet 2015 à 20 h 27 min
    Permalink

    Bon, désolé, l’apparence est merdique lors de la publication.
    Revoici le résumé en texte brut, chacun pourra refaire sa mise en page s’il le souhaite !

    1- Installation d’openvpn

    sudo apt-get update && sudo apt-get install openvpn

    2- Configuration du serveur
    connection en tant que super utilisateur
    sudo -s
    2-1 Création du dossier de l’utilitaire easy-rsa
    cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa
    On se place dans le dossier créé:
    cd /etc/openvpn/easy-rsa
    Edition du fichier vars:
    nano vars
    Changer la ligne export EASY_RSA= »`pwd` » en export EASY_RSA= »/etc/openvpn/easy-rsa »
    2-2 Génération des certificats
    2-2-1 Certificat du serveur:
    source ./vars
    ./clean-all
    ./build-ca
    Remplir le questionnaire qui s’ensuit en laissant vide le chalenge passwd.
    Répondre yes aux deux dernières questions.
    ./build-key-server
    à la maison, = VPN-Hypolais donc
    ./build-key-server VPN-Hypolais
    Remplir le questionnaire qui s’ensuit ; l
    Remplir le questionnaire qui s’en suit (e common name doit être le même que le précédent.), laisser vide le chalenge passwd et répondre yes aux deux dernières questions.

    2-2-2 Certificats des clients
    Créer une clé pour chaque machine cliente de la manière suivante:
    ./build-key-pass
    ou est le nom que l’on désire donner pour chaque client
    Fournir un motde passe à retenir (PEM passphrase) ; il sera demandé par OpenSSL

    Chiffrage par OpenSSL pour plus de sécurité
    on se place dans le répertoire des cles:
    cd keys
    Puis on lance OpenSSL:
    openssl rsa -in nom_du_client.key -des3 -out nom_du_client.3des.key

    ####### Ce qui suit n’est pas à refaire après création d’une nouvelle clé client

    2-3 Sécurisation de l’échange des clés
    on se replace dans le répertoire easy-rsa
    cd ..
    ./build-dh
    Ca peut être long

    2-4 Pour se protéger des attaques DDOs
    openvpn –genkey –secret keys/ta.key

    2-5 Configuration du comportement du serveur
    Edition du fichier de configuration (il est vide)
    nano /etc/openvpn/server.conf
    Contenu du fichier à insérer
    local 192.168.0.11 # adresse IP locale de son serveur
    dev tun # type de VPN, tun (tunnel IP) ou tap (tunnel Ethernet/bridge)
    proto udp # protocole à utiliser : tcp ou udp, généralement udp
    port 1194 # le port par défaut pour OpenVPN, à ajuster au besoin
    ca /etc/openvpn/easy-rsa/keys/ca.crt
    cert /etc/openvpn/easy-rsa/keys/VPN-Hypolais.crt # à ajuster à son serveur
    key /etc/openvpn/easy-rsa/keys/VPN-Hypolais.key # idem
    dh /etc/openvpn/easy-rsa/keys/dh1024.pem # si on passé sur du 2048 bits, changez ici
    server 10.8.0.0 255.255.255.0 #le réseau au sein duquel on va attribuer des IP
    ifconfig 10.8.0.1 10.8.0.2 # serveur et point de sortie distant
    push « redirect-gateway def1 »
    push « route 10.8.0.1 255.255.255.255 » # route vers le serveur VPN
    push « route 10.8.0.0 255.255.255.0 » # route vers le sous-réseau VPN
    push « route 192.168.0.11 255.255.255.0 » #sous-réseau local – adapter l’adresse IP locale de son serveur
    push « dhcp-option DNS 208.67.222.222 » #serveur DNS OpenDNS
    push « dhcp-option DNS 8.8.8.8 » #serveur DNS Google
    # pour le reste, a priori pas de raisons d’y toucher à moins de savoir ce que l’on fait !
    client-to-client
    duplicate-cn
    keepalive 10 120
    tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0
    cipher AES-128-CBC
    comp-lzo
    user nobody
    group nogroup
    persist-key
    persist-tun
    status /var/log/openvpn-status.log 20
    log /var/log/openvpn.log
    verb 1

    2-6 Autoriser le trafic de paquets entre réseaux
    Edition du fichier sysct1.conf:
    nano /etc/sysctl.conf
    Décommenter la ligne sous « Uncomment the next line to enable packet forwarding for IPv4″
    pour avoir:
    net.ipv4.ip_forward=1
    Après fermeture du fichier, recharger les paramètres par:
    sysctl -p

    2-7 Configuration du pare-feu pour laisser passer les requêtes
    Création du fichier firewall-openvpn-rules.sh:
    nano /etc/firewall-openvpn-rules.sh
    Y insérer les lignes suivantes:
    #!/bin/sh
    iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
    Protection du fichier en attribuant les permissions:
    chmod 700 /etc/firewall-openvpn-rules.sh
    chown root /etc/firewall-openvpn-rules.sh
    Pour charger le fichier lors de la configuration de l’interface réseau, faire :
    nano /etc/network/interfaces
    Y insérer la ligne:
    pre-up /etc/firewall-openvpn-rules.sh
    en dessous de la ligne iface eth0 inet static

    Redémarrer le serveur:
    reboot

    3- Configuration des clients

    On se connecte en tant que super utilisateur:
    sudo -s

    Création du fichier Default.txt:
    nano /etc/openvpn/easy-rsa/keys/Default.txt
    On y place le contenu suivant:
    client
    dev tun
    proto udp
    remote xx.xx.xx.xx 1194 #IP externe + port
    resolv-retry infinite
    nobind
    persist-key
    persist-tun
    mute-replay-warnings
    ns-cert-type server
    key-direction 1
    cipher AES-128-CBC
    comp-lzo
    verb 1
    mute 20

    Création du script MakeOpenVPN.sh:
    nano /etc/openvpn/easy-rsa/keys/MakeOpenVPN.sh

    Y insérer le contenu suivant:
    #!/bin/bash
    # Déclaration des variables par défaut
    DEFAULT= »Default.txt »
    FILEEXT= ».ovpn »
    CRT= ».crt »
    KEY= ».3des.key »
    CA= »ca.crt »
    TA= »ta.key »
    # Demande du nom du client
    echo « Entrez le nom d’un client existant : »
    read NAME
    # On vérifie que la clé publique associé au nom du client existe
    if [ ! -f $NAME$CRT ]; then
    echo « [ERREUR] Clé publique non trouvée : $NAME$CRT »
    exit
    fi
    echo « Clé publique trouvée : $NAME$CR »
    # On vérifie qu’une clé privée existe pour ce client
    if [ ! -f $NAME$KEY ]; then
    echo « [ERREUR] Clé privée 3DES non trouvée : $NAME$KEY »
    exit
    fi
    echo « Clé privée trouvée : $NAME$KEY »

    # On vérifie l’existence de la clé CA
    if [ ! -f $CA ]; then
    echo « [ERREUR]: Clé publique CA non trouvée : $CA »
    exit
    fi
    echo « Clé publique CA trouvée : $CA »

    # On vérifie l’existence de la clé tls-auth
    if [ ! -f $TA ]; then
    echo « [ERREUR]: Clé privée tls-auth non trouvée : $TA »
    exit
    fi
    echo « Clé privée tls-auth trouvée : $TA »
    # Prêt à générer le fichier de configuration
    # On commence par insérer le fichier de base
    cat $DEFAULT > $NAME$FILEEXT
    # On ajoute la clé publique du CA
    echo «  » >> $NAME$FILEEXT
    cat $CA >> $NAME$FILEEXT
    echo «  » >> $NAME$FILEEXT

    # On ajoute la clé publique du client
    echo «  » >> $NAME$FILEEXT
    cat $NAME$CRT | sed -ne ‘/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p’ >> $NAME$FILEEXT
    echo «  » >> $NAME$FILEEXT
    # On ajoute la clé privée du client
    echo «  » >> $NAME$FILEEXT
    cat $NAME$KEY >> $NAME$FILEEXT
    echo «  » >> $NAME$FILEEXT
    # Enfin, on ajoute la clé tls-auth
    echo «  » >> $NAME$FILEEXT
    cat $TA >> $NAME$FILEEXT
    echo «  » >> $NAME$FILEEXT
    echo « Terminé ! $NAME$FILEEXT généré avec succès. »

    # Script written by Eric Jodoin
    # Adapted/translated into French by Maxime Auvy
    \ Pas de ligne vide en fin de fichier

    On se replace dans le répertoire du fichier créé:
    cd /etc/openvpn/easy-rsa/keys/
    On donne les permissions adaptées au script:
    chmod 700 MakeOpenVPN.sh
    On exécute le script pour chaque client auquel on veut attribuer une clé :
    ./MakeOpenVPN.sh
    en répondant à la question par le nom du client.
    On copie les clés créées dans le répertoire de l’utilisateur normal pour pouvoir les récupérer plus facilement:
    cp *.ovpn /home/pi

    Réponse
  • 22 juillet 2015 à 13 h 50 min
    Permalink

    Merci pour ce tuto très utile en ces temps de loi Renseignement, cependant j’ai remarqué que tout ce qui était IPv6 fuitait du tunnel.
    Une idée pour faire passer l’IPv4 et l’IPv6 dans le tunnel ?

    Réponse
    • 22 juillet 2015 à 14 h 09 min
      Permalink

      Salut,
      pas de quoi 🙂

      Alors, pour l’IPv6, plusieurs indications :
      – le fichiet /etc/sysctl.conf contient des instructions pour IPV6, comme

      1
      #net.ipv6.conf.all.forwarding=1

      commentées par défaut, mais que tu peux activer si tu le souhaites
      – de mémoire (à vérifier), TAP est préférable à TUN pour l’IPv6, OpenVPN 2.3 a ajouté pas mal de support, à voir dans la doc
      – j’imagine qu’il faut aussi pousser des routes chez le client, ce qui n’est pas le cas de la config que je donne, donc oui, ça ne fonctionne pas de cette façon….
      – la configuration n’est pas la même selon que tu veux te connecter au serveur en IPv4 et faire passer de l’IPv6 dans le tunnel, ou si tu veux te connecter au serveur en IPv6, ou mixer les deux

      Je peux chercher un peu si tu le souhaites, et idem, si tu as des infos, n’hésite pas à partager 🙂

      Réponse
      • 23 juillet 2015 à 20 h 34 min
        Permalink

        Ok, merci,

        C’était une simple curiosité, je n’ai pas le courage pour régler ce pb pour le moment. Ma solution temporaire et de désactiver l’IPv6 sur mon PC mais bon… un jour il faudra bien s’y mettre.

        Réponse
  • 12 août 2015 à 11 h 49 min
    Permalink

    Bonjour, et merci pour ce sublime Tuto! Heureusement que des gens comme toi existent! : )
    J’ai effectué toutes les manipulations, mon serveur démarre correctement, mais impossible de me connecter avec openVPN sous windows. Même en désactivant les parfeu coté windows. La fenêtre openVPN sous windows 7 et 10 reste désespérément silencieuse j’ai juste « la connexion à échoué » aussi bien quand je suis sur le même réseau local que le serveur VPN qu’a l’extérieur (port correctement redirigé via le routeur ), je change bien évidement la configuration des fichiers ovpn client en fonction de l’endroit ou je me situe. J’ai essayé en UPD, TCP et toujours rien. Pourtant quand je fait fonctionner le serveur en TCP avec telnet une connexion se produit et apparaît dans les logs du serveur. Mais rien quand je passe par le client OPENVpn.

    Voici les logs de démarrage du serveur en mode verbeux 4 en UDP. Je ne sais plus quoi faire..Auriez-vous une idée?

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    Wed Aug 12 12:19:40 2015 us=750284 Current Parameter Settings:
    Wed Aug 12 12:19:40 2015 us=750343   config = '/etc/openvpn/server.conf'
    Wed Aug 12 12:19:40 2015 us=750352   mode = 1
    Wed Aug 12 12:19:40 2015 us=750360   persist_config = DISABLED
    Wed Aug 12 12:19:40 2015 us=750367   persist_mode = 1
    Wed Aug 12 12:19:40 2015 us=750374   show_ciphers = DISABLED
    Wed Aug 12 12:19:40 2015 us=750381   show_digests = DISABLED
    Wed Aug 12 12:19:40 2015 us=750388   show_engines = DISABLED
    Wed Aug 12 12:19:40 2015 us=750395   genkey = DISABLED
    Wed Aug 12 12:19:40 2015 us=750405   key_pass_file = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=750413   show_tls_ciphers = DISABLED
    Wed Aug 12 12:19:40 2015 us=750420 Connection profiles [default]:
    Wed Aug 12 12:19:40 2015 us=750428   proto = udp
    Wed Aug 12 12:19:40 2015 us=750435   local = '192.168.0.100'
    Wed Aug 12 12:19:40 2015 us=750442   local_port = 1194
    Wed Aug 12 12:19:40 2015 us=750449   remote = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=750457   remote_port = 1194
    Wed Aug 12 12:19:40 2015 us=750464   remote_float = DISABLED
    Wed Aug 12 12:19:40 2015 us=750471   bind_defined = DISABLED
    Wed Aug 12 12:19:40 2015 us=750478   bind_local = ENABLED
    Wed Aug 12 12:19:40 2015 us=750485   connect_retry_seconds = 5
    Wed Aug 12 12:19:40 2015 us=750492   connect_timeout = 10
    Wed Aug 12 12:19:40 2015 us=750499   connect_retry_max = 0
    Wed Aug 12 12:19:40 2015 us=750507   socks_proxy_server = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=750514   socks_proxy_port = 0
    Wed Aug 12 12:19:40 2015 us=750521   socks_proxy_retry = DISABLED
    Wed Aug 12 12:19:40 2015 us=750529 Connection profiles END
    Wed Aug 12 12:19:40 2015 us=750537   remote_random = DISABLED
    Wed Aug 12 12:19:40 2015 us=750544   ipchange = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=750551   dev = 'tun'
    Wed Aug 12 12:19:40 2015 us=750558   dev_type = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=750565   dev_node = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=750572   lladdr = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=750579   topology = 1
    Wed Aug 12 12:19:40 2015 us=750586   tun_ipv6 = DISABLED
    Wed Aug 12 12:19:40 2015 us=750594   ifconfig_local = '10.8.0.1'
    Wed Aug 12 12:19:40 2015 us=750601   ifconfig_remote_netmask = '10.8.0.2'
    Wed Aug 12 12:19:40 2015 us=750608   ifconfig_noexec = DISABLED
    Wed Aug 12 12:19:40 2015 us=750615   ifconfig_nowarn = DISABLED
    Wed Aug 12 12:19:40 2015 us=750623   shaper = 0
    Wed Aug 12 12:19:40 2015 us=750630   tun_mtu = 1500
    Wed Aug 12 12:19:40 2015 us=750637   tun_mtu_defined = ENABLED
    Wed Aug 12 12:19:40 2015 us=750644   link_mtu = 1500
    Wed Aug 12 12:19:40 2015 us=750651   link_mtu_defined = DISABLED
    Wed Aug 12 12:19:40 2015 us=750658   tun_mtu_extra = 0
    Wed Aug 12 12:19:40 2015 us=750665   tun_mtu_extra_defined = DISABLED
    Wed Aug 12 12:19:40 2015 us=750672   fragment = 0
    Wed Aug 12 12:19:40 2015 us=750680   mtu_discover_type = -1
    Wed Aug 12 12:19:40 2015 us=750687   mtu_test = 0
    Wed Aug 12 12:19:40 2015 us=750694   mlock = DISABLED
    Wed Aug 12 12:19:40 2015 us=750701   keepalive_ping = 10
    Wed Aug 12 12:19:40 2015 us=750708   keepalive_timeout = 120
    Wed Aug 12 12:19:40 2015 us=750715   inactivity_timeout = 0
    Wed Aug 12 12:19:40 2015 us=750722   ping_send_timeout = 10
    Wed Aug 12 12:19:40 2015 us=750729   ping_rec_timeout = 240
    Wed Aug 12 12:19:40 2015 us=750737   ping_rec_timeout_action = 2
    Wed Aug 12 12:19:40 2015 us=750744   ping_timer_remote = DISABLED
    Wed Aug 12 12:19:40 2015 us=750751   remap_sigusr1 = 0
    Wed Aug 12 12:19:40 2015 us=750758   explicit_exit_notification = 0
    Wed Aug 12 12:19:40 2015 us=750765   persist_tun = ENABLED
    Wed Aug 12 12:19:40 2015 us=750772   persist_local_ip = DISABLED
    Wed Aug 12 12:19:40 2015 us=750779   persist_remote_ip = DISABLED
    Wed Aug 12 12:19:40 2015 us=750786   persist_key = ENABLED
    Wed Aug 12 12:19:40 2015 us=750793   mssfix = 1450
    Wed Aug 12 12:19:40 2015 us=750801   passtos = DISABLED
    Wed Aug 12 12:19:40 2015 us=750808   resolve_retry_seconds = 1000000000
    Wed Aug 12 12:19:40 2015 us=750815   username = 'nobody'
    Wed Aug 12 12:19:40 2015 us=750822   groupname = 'nogroup'
    Wed Aug 12 12:19:40 2015 us=750829   chroot_dir = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=750846   cd_dir = '/etc/openvpn'
    Wed Aug 12 12:19:40 2015 us=750853   writepid = '/var/run/openvpn.server.pid'
    Wed Aug 12 12:19:40 2015 us=750861   up_script = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=750868   down_script = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=750875   down_pre = DISABLED
    Wed Aug 12 12:19:40 2015 us=750882   up_restart = DISABLED
    Wed Aug 12 12:19:40 2015 us=750889   up_delay = DISABLED
    Wed Aug 12 12:19:40 2015 us=750896   daemon = ENABLED
    Wed Aug 12 12:19:40 2015 us=750904   inetd = 0
    Wed Aug 12 12:19:40 2015 us=750911   log = ENABLED
    Wed Aug 12 12:19:40 2015 us=750918   suppress_timestamps = DISABLED
    Wed Aug 12 12:19:40 2015 us=750925   nice = 0
    Wed Aug 12 12:19:40 2015 us=750932   verbosity = 4
    Wed Aug 12 12:19:40 2015 us=750939   mute = 0
    Wed Aug 12 12:19:40 2015 us=750946   gremlin = 0
    Wed Aug 12 12:19:40 2015 us=750953   status_file = '/var/log/openvpn-status.log'
    Wed Aug 12 12:19:40 2015 us=750960   status_file_version = 1
    Wed Aug 12 12:19:40 2015 us=750968   status_file_update_freq = 20
    Wed Aug 12 12:19:40 2015 us=750975   occ = ENABLED
    Wed Aug 12 12:19:40 2015 us=750982   rcvbuf = 65536
    Wed Aug 12 12:19:40 2015 us=750989   sndbuf = 65536
    Wed Aug 12 12:19:40 2015 us=750996   sockflags = 0
    Wed Aug 12 12:19:40 2015 us=751003   fast_io = DISABLED
    Wed Aug 12 12:19:40 2015 us=751010   lzo = 7
    Wed Aug 12 12:19:40 2015 us=751017   route_script = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=751024   route_default_gateway = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=751032   route_default_metric = 0
    Wed Aug 12 12:19:40 2015 us=751039   route_noexec = DISABLED
    Wed Aug 12 12:19:40 2015 us=751046   route_delay = 0
    Wed Aug 12 12:19:40 2015 us=751053   route_delay_window = 30
    Wed Aug 12 12:19:40 2015 us=751060   route_delay_defined = DISABLED
    Wed Aug 12 12:19:40 2015 us=751067   route_nopull = DISABLED
    Wed Aug 12 12:19:40 2015 us=751074   route_gateway_via_dhcp = DISABLED
    Wed Aug 12 12:19:40 2015 us=751082   max_routes = 100
    Wed Aug 12 12:19:40 2015 us=751089   allow_pull_fqdn = DISABLED
    Wed Aug 12 12:19:40 2015 us=751097   route 10.8.0.0/255.255.255.0/nil/nil
    Wed Aug 12 12:19:40 2015 us=751104   management_addr = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=751111   management_port = 0
    Wed Aug 12 12:19:40 2015 us=751118   management_user_pass = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=751126   management_log_history_cache = 250
    Wed Aug 12 12:19:40 2015 us=751133   management_echo_buffer_size = 100
    Wed Aug 12 12:19:40 2015 us=751140   management_write_peer_info_file = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=751147   management_client_user = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=751155   management_client_group = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=751162   management_flags = 0
    Wed Aug 12 12:19:40 2015 us=751169   shared_secret_file = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=751177   key_direction = 1
    Wed Aug 12 12:19:40 2015 us=751184   ciphername_defined = ENABLED
    Wed Aug 12 12:19:40 2015 us=751191   ciphername = 'AES-128-CBC'
    Wed Aug 12 12:19:40 2015 us=751198   authname_defined = ENABLED
    Wed Aug 12 12:19:40 2015 us=751205   authname = 'SHA1'
    Wed Aug 12 12:19:40 2015 us=751212   prng_hash = 'SHA1'
    Wed Aug 12 12:19:40 2015 us=751220   prng_nonce_secret_len = 16
    Wed Aug 12 12:19:40 2015 us=751227   keysize = 0
    Wed Aug 12 12:19:40 2015 us=751234   engine = DISABLED
    Wed Aug 12 12:19:40 2015 us=751241   replay = ENABLED
    Wed Aug 12 12:19:40 2015 us=751248   mute_replay_warnings = DISABLED
    Wed Aug 12 12:19:40 2015 us=751255   replay_window = 64
    Wed Aug 12 12:19:40 2015 us=751262   replay_time = 15
    Wed Aug 12 12:19:40 2015 us=751269   packet_id_file = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=751277   use_iv = ENABLED
    Wed Aug 12 12:19:40 2015 us=751284   test_crypto = DISABLED
    Wed Aug 12 12:19:40 2015 us=751291   tls_server = ENABLED
    Wed Aug 12 12:19:40 2015 us=751298   tls_client = DISABLED
    Wed Aug 12 12:19:40 2015 us=751305   key_method = 2
    Wed Aug 12 12:19:40 2015 us=751312   ca_file = '/etc/openvpn/easy-rsa/keys/ca.crt'
    Wed Aug 12 12:19:40 2015 us=751320   ca_path = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=751327   dh_file = '/etc/openvpn/easy-rsa/keys/dh1024.pem'
    Wed Aug 12 12:19:40 2015 us=751342   cert_file = '/etc/openvpn/easy-rsa/keys/debian1.crt'
    Wed Aug 12 12:19:40 2015 us=751350   priv_key_file = '/etc/openvpn/easy-rsa/keys/debian1.key'
    Wed Aug 12 12:19:40 2015 us=751357   pkcs12_file = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=751364   cipher_list = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=751371   tls_verify = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=751378   tls_remote = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=751385   crl_file = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=751393   ns_cert_type = 0
    Wed Aug 12 12:19:40 2015 us=751400   remote_cert_ku[i] = 0
    Wed Aug 12 12:19:40 2015 us=751407   remote_cert_ku[i] = 0
    Wed Aug 12 12:19:40 2015 us=751414   remote_cert_ku[i] = 0
    Wed Aug 12 12:19:40 2015 us=751421   remote_cert_ku[i] = 0
    Wed Aug 12 12:19:40 2015 us=751428   remote_cert_ku[i] = 0
    Wed Aug 12 12:19:40 2015 us=751435   remote_cert_ku[i] = 0
    Wed Aug 12 12:19:40 2015 us=751442   remote_cert_ku[i] = 0
    Wed Aug 12 12:19:40 2015 us=751449   remote_cert_ku[i] = 0
    Wed Aug 12 12:19:40 2015 us=751456   remote_cert_ku[i] = 0
    Wed Aug 12 12:19:40 2015 us=751463   remote_cert_ku[i] = 0
    Wed Aug 12 12:19:40 2015 us=751470   remote_cert_ku[i] = 0
    Wed Aug 12 12:19:40 2015 us=751477   remote_cert_ku[i] = 0
    Wed Aug 12 12:19:40 2015 us=751484   remote_cert_ku[i] = 0
    Wed Aug 12 12:19:40 2015 us=751491   remote_cert_ku[i] = 0
    Wed Aug 12 12:19:40 2015 us=751498   remote_cert_ku[i] = 0
    Wed Aug 12 12:19:40 2015 us=751505   remote_cert_ku[i] = 0
    Wed Aug 12 12:19:40 2015 us=751512   remote_cert_eku = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=751520   tls_timeout = 2
    Wed Aug 12 12:19:40 2015 us=751527   renegotiate_bytes = 0
    Wed Aug 12 12:19:40 2015 us=751534   renegotiate_packets = 0
    Wed Aug 12 12:19:40 2015 us=751541   renegotiate_seconds = 3600
    Wed Aug 12 12:19:40 2015 us=751548   handshake_window = 60
    Wed Aug 12 12:19:40 2015 us=751555   transition_window = 3600
    Wed Aug 12 12:19:40 2015 us=751562   single_session = DISABLED
    Wed Aug 12 12:19:40 2015 us=751569   push_peer_info = DISABLED
    Wed Aug 12 12:19:40 2015 us=751576   tls_exit = DISABLED
    Wed Aug 12 12:19:40 2015 us=751583   tls_auth_file = '/etc/openvpn/easy-rsa/keys/ta.key'
    Wed Aug 12 12:19:40 2015 us=751591   pkcs11_protected_authentication = DISABLED
    Wed Aug 12 12:19:40 2015 us=751598   pkcs11_protected_authentication = DISABLED
    Wed Aug 12 12:19:40 2015 us=751605   pkcs11_protected_authentication = DISABLED
    Wed Aug 12 12:19:40 2015 us=751612   pkcs11_protected_authentication = DISABLED
    Wed Aug 12 12:19:40 2015 us=751619   pkcs11_protected_authentication = DISABLED
    Wed Aug 12 12:19:40 2015 us=751626   pkcs11_protected_authentication = DISABLED
    Wed Aug 12 12:19:40 2015 us=751634   pkcs11_protected_authentication = DISABLED
    Wed Aug 12 12:19:40 2015 us=751641   pkcs11_protected_authentication = DISABLED
    Wed Aug 12 12:19:40 2015 us=751650   pkcs11_protected_authentication = DISABLED
    Wed Aug 12 12:19:40 2015 us=751658   pkcs11_protected_authentication = DISABLED
    Wed Aug 12 12:19:40 2015 us=751665   pkcs11_protected_authentication = DISABLED
    Wed Aug 12 12:19:40 2015 us=751672   pkcs11_protected_authentication = DISABLED
    Wed Aug 12 12:19:40 2015 us=751679   pkcs11_protected_authentication = DISABLED
    Wed Aug 12 12:19:40 2015 us=751686   pkcs11_protected_authentication = DISABLED
    Wed Aug 12 12:19:40 2015 us=751693   pkcs11_protected_authentication = DISABLED
    Wed Aug 12 12:19:40 2015 us=751700   pkcs11_protected_authentication = DISABLED
    Wed Aug 12 12:19:40 2015 us=751708   pkcs11_private_mode = 00000000
    Wed Aug 12 12:19:40 2015 us=751715   pkcs11_private_mode = 00000000
    Wed Aug 12 12:19:40 2015 us=751722   pkcs11_private_mode = 00000000
    Wed Aug 12 12:19:40 2015 us=751729   pkcs11_private_mode = 00000000
    Wed Aug 12 12:19:40 2015 us=751736   pkcs11_private_mode = 00000000
    Wed Aug 12 12:19:40 2015 us=751744   pkcs11_private_mode = 00000000
    Wed Aug 12 12:19:40 2015 us=751751   pkcs11_private_mode = 00000000
    Wed Aug 12 12:19:40 2015 us=751758   pkcs11_private_mode = 00000000
    Wed Aug 12 12:19:40 2015 us=751765   pkcs11_private_mode = 00000000
    Wed Aug 12 12:19:40 2015 us=751780   pkcs11_private_mode = 00000000
    Wed Aug 12 12:19:40 2015 us=751787   pkcs11_private_mode = 00000000
    Wed Aug 12 12:19:40 2015 us=751794   pkcs11_private_mode = 00000000
    Wed Aug 12 12:19:40 2015 us=751801   pkcs11_private_mode = 00000000
    Wed Aug 12 12:19:40 2015 us=751809   pkcs11_private_mode = 00000000
    Wed Aug 12 12:19:40 2015 us=751816   pkcs11_private_mode = 00000000
    Wed Aug 12 12:19:40 2015 us=751823   pkcs11_private_mode = 00000000
    Wed Aug 12 12:19:40 2015 us=751830   pkcs11_cert_private = DISABLED
    Wed Aug 12 12:19:40 2015 us=751837   pkcs11_cert_private = DISABLED
    Wed Aug 12 12:19:40 2015 us=751844   pkcs11_cert_private = DISABLED
    Wed Aug 12 12:19:40 2015 us=751851   pkcs11_cert_private = DISABLED
    Wed Aug 12 12:19:40 2015 us=751858   pkcs11_cert_private = DISABLED
    Wed Aug 12 12:19:40 2015 us=751865   pkcs11_cert_private = DISABLED
    Wed Aug 12 12:19:40 2015 us=751872   pkcs11_cert_private = DISABLED
    Wed Aug 12 12:19:40 2015 us=751879   pkcs11_cert_private = DISABLED
    Wed Aug 12 12:19:40 2015 us=751886   pkcs11_cert_private = DISABLED
    Wed Aug 12 12:19:40 2015 us=751893   pkcs11_cert_private = DISABLED
    Wed Aug 12 12:19:40 2015 us=751900   pkcs11_cert_private = DISABLED
    Wed Aug 12 12:19:40 2015 us=751907   pkcs11_cert_private = DISABLED
    Wed Aug 12 12:19:40 2015 us=751914   pkcs11_cert_private = DISABLED
    Wed Aug 12 12:19:40 2015 us=751921   pkcs11_cert_private = DISABLED
    Wed Aug 12 12:19:40 2015 us=751928   pkcs11_cert_private = DISABLED
    Wed Aug 12 12:19:40 2015 us=751935   pkcs11_cert_private = DISABLED
    Wed Aug 12 12:19:40 2015 us=751943   pkcs11_pin_cache_period = -1
    Wed Aug 12 12:19:40 2015 us=751950   pkcs11_id = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=751957   pkcs11_id_management = DISABLED
    Wed Aug 12 12:19:40 2015 us=751965   server_network = 10.8.0.0
    Wed Aug 12 12:19:40 2015 us=751973   server_netmask = 255.255.255.0
    Wed Aug 12 12:19:40 2015 us=751981   server_bridge_ip = 0.0.0.0
    Wed Aug 12 12:19:40 2015 us=751989   server_bridge_netmask = 0.0.0.0
    Wed Aug 12 12:19:40 2015 us=751997   server_bridge_pool_start = 0.0.0.0
    Wed Aug 12 12:19:40 2015 us=752005   server_bridge_pool_end = 0.0.0.0
    Wed Aug 12 12:19:40 2015 us=752012   push_entry = 'redirect-gateway def1'
    Wed Aug 12 12:19:40 2015 us=752019   push_entry = 'route 10.8.0.1 255.255.255.255'
    Wed Aug 12 12:19:40 2015 us=752027   push_entry = 'route 10.8.0.0 255.255.255.0'
    Wed Aug 12 12:19:40 2015 us=752034   push_entry = 'route 192.168.0.100 255.255.255.0'
    Wed Aug 12 12:19:40 2015 us=752041   push_entry = 'dhcp-option DNS 8.8.8.8'
    Wed Aug 12 12:19:40 2015 us=752049   push_entry = 'route 10.8.0.0 255.255.255.0'
    Wed Aug 12 12:19:40 2015 us=752056   push_entry = 'topology net30'
    Wed Aug 12 12:19:40 2015 us=752063   push_entry = 'ping 10'
    Wed Aug 12 12:19:40 2015 us=752070   push_entry = 'ping-restart 120'
    Wed Aug 12 12:19:40 2015 us=752077   ifconfig_pool_defined = ENABLED
    Wed Aug 12 12:19:40 2015 us=752085   ifconfig_pool_start = 10.8.0.4
    Wed Aug 12 12:19:40 2015 us=752096   ifconfig_pool_end = 10.8.0.251
    Wed Aug 12 12:19:40 2015 us=752104   ifconfig_pool_netmask = 0.0.0.0
    Wed Aug 12 12:19:40 2015 us=752112   ifconfig_pool_persist_filename = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=752119   ifconfig_pool_persist_refresh_freq = 600
    Wed Aug 12 12:19:40 2015 us=752127   n_bcast_buf = 256
    Wed Aug 12 12:19:40 2015 us=752134   tcp_queue_limit = 64
    Wed Aug 12 12:19:40 2015 us=752141   real_hash_size = 256
    Wed Aug 12 12:19:40 2015 us=752148   virtual_hash_size = 256
    Wed Aug 12 12:19:40 2015 us=752156   client_connect_script = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=752163   learn_address_script = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=752170   client_disconnect_script = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=752178   client_config_dir = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=752185   ccd_exclusive = DISABLED
    Wed Aug 12 12:19:40 2015 us=752192   tmp_dir = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=752199   push_ifconfig_defined = DISABLED
    Wed Aug 12 12:19:40 2015 us=752208   push_ifconfig_local = 0.0.0.0
    Wed Aug 12 12:19:40 2015 us=752216   push_ifconfig_remote_netmask = 0.0.0.0
    Wed Aug 12 12:19:40 2015 us=752230   enable_c2c = ENABLED
    Wed Aug 12 12:19:40 2015 us=752238   duplicate_cn = ENABLED
    Wed Aug 12 12:19:40 2015 us=752245   cf_max = 0
    Wed Aug 12 12:19:40 2015 us=752252   cf_per = 0
    Wed Aug 12 12:19:40 2015 us=752259   max_clients = 1024
    Wed Aug 12 12:19:40 2015 us=752267   max_routes_per_client = 256
    Wed Aug 12 12:19:40 2015 us=752274   auth_user_pass_verify_script = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=752281   auth_user_pass_verify_script_via_file = DISABLED
    Wed Aug 12 12:19:40 2015 us=752289   ssl_flags = 0
    Wed Aug 12 12:19:40 2015 us=752311   port_share_host = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=752319   port_share_port = 0
    Wed Aug 12 12:19:40 2015 us=752326   client = DISABLED
    Wed Aug 12 12:19:40 2015 us=752333   pull = DISABLED
    Wed Aug 12 12:19:40 2015 us=752340   auth_user_pass_file = '[UNDEF]'
    Wed Aug 12 12:19:40 2015 us=752350 OpenVPN 2.1.3 x86_64-pc-linux-gnu [SSL] [LZO2] [EPOLL] [PKCS11] [MH] [PF_INET6] [eurephia] built on Jun  4 2013
    Wed Aug 12 12:19:40 2015 us=752474 NOTE: your local LAN uses the extremely common subnet address 192.168.0.x or 192.168.1.x.  Be aware that this might create routing conflicts if you connect to the VPN server from public locations such as internet cafes that use the same subnet.
    Wed Aug 12 12:19:40 2015 us=752485 NOTE: OpenVPN 2.1 requires '--script-security 2' or higher to call user-defined scripts or executables
    Wed Aug 12 12:19:40 2015 us=754344 Diffie-Hellman initialized with 1024 bit key
    Wed Aug 12 12:19:40 2015 us=754756 /usr/bin/openssl-vulnkey -q -b 1024 -m <modulus omitted>
    Wed Aug 12 12:19:40 2015 us=830648 Control Channel Authentication: using '/etc/openvpn/easy-rsa/keys/ta.key' as a OpenVPN static key file
    Wed Aug 12 12:19:40 2015 us=830708 Outgoing Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
    Wed Aug 12 12:19:40 2015 us=830719 Incoming Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
    Wed Aug 12 12:19:40 2015 us=830742 TLS-Auth MTU parms [ L:1558 D:166 EF:66 EB:0 ET:0 EL:0 ]
    Wed Aug 12 12:19:40 2015 us=830772 Socket Buffers: R=[124928->131072] S=[124928->131072]
    Wed Aug 12 12:19:40 2015 us=830901 ROUTE default_gateway=192.168.0.1
    Wed Aug 12 12:19:40 2015 us=831421 TUN/TAP device tun0 opened
    Wed Aug 12 12:19:40 2015 us=831447 TUN/TAP TX queue length set to 100
    Wed Aug 12 12:19:40 2015 us=831475 /sbin/ifconfig tun0 10.8.0.1 pointopoint 10.8.0.2 mtu 1500
    Wed Aug 12 12:19:40 2015 us=832713 /sbin/route add -net 10.8.0.0 netmask 255.255.255.0 gw 10.8.0.2
    Wed Aug 12 12:19:40 2015 us=833356 Data Channel MTU parms [ L:1558 D:1450 EF:58 EB:135 ET:0 EL:0 AF:3/1 ]
    Wed Aug 12 12:19:40 2015 us=837502 GID set to nogroup
    Wed Aug 12 12:19:40 2015 us=837548 UID set to nobody
    Wed Aug 12 12:19:40 2015 us=837578 UDPv4 link local (bound): [AF_INET]192.168.0.100:1194
    Wed Aug 12 12:19:40 2015 us=837586 UDPv4 link remote: [undef]
    Wed Aug 12 12:19:40 2015 us=837599 MULTI: multi_init called, r=256 v=256
    Wed Aug 12 12:19:40 2015 us=837668 IFCONFIG POOL: base=10.8.0.4 size=62
    Wed Aug 12 12:19:40 2015 us=837696 Initialization Sequence Completed
    Réponse
    • 12 août 2015 à 11 h 50 min
      Permalink

      Pour infos je suis sous debian squeeze8

      Réponse
    • 12 août 2015 à 15 h 49 min
      Permalink

      J’ai trouvé!
      C’est grace au Notepad que je m’en suis rendu compte. Les fichier de configuration ovpn n’étaient pas correctement formaté je ne sais pas pourquoi, je les avais transféré en ssh et ça m’avait fait sauté retour de ligne et compagnie.Ce que je n’envoyais pas dans mon editeur Scite mais que j’ai vu dans notepad.

      Si jamais cela arrive vérifiez bien le formatage de ces fichiers après transfert.

      Réponse
  • 24 août 2015 à 20 h 16 min
    Permalink

    Pour le HTTPS , il semblerait qu’il soit en effet possible que la connexion soit illisible par le FAI car HTTPS utilise un protocole de chiffrement SSL. Je vais faire quelques recherches mais si c’est vrai , cela veut dire que si nous utilisons HTTPS everywhere et Force TLS, nous navigons de manière chiffrée, avec des connexions illisibles par notre FAI et ce sans avoir le désavantage du temps de latence d’un vpn/proxy.

    Réponse
  • 25 août 2015 à 16 h 41 min
    Permalink

    Bonjour !

    Merci pour ce tuto. J’ai essayé de le suivre pour faire un serveur VPN sur le port 53, cryptant les données en utilisant 2048 bits.

    Mais aucun client ne peut se connecter : l’app Android affiche l’erreur « Transport error on my.server.public.ip: NETWORK_EOF_ERROR », et le serveur a le log suivant :
    openvpn /etc/openvpn/server.conf
    Tue Aug 25 17:31:47 2015 OpenVPN 2.2.1 arm-linux-gnueabihf [SSL] [LZO2] [EPOLL] [PKCS11] [eurephia] [MH] [PF_INET6] [IPv6 payload 20110424-2 (2.2RC2)] built on Dec 1 2014
    Tue Aug 25 17:31:47 2015 WARNING: –keepalive option is missing from server config
    Tue Aug 25 17:31:47 2015 NOTE: your local LAN uses the extremely common subnet address 192.168.0.x or 192.168.1.x. Be aware that this might create routing conflicts if you connect to the VPN server from public locations such as internet cafes that use the same subnet.
    Tue Aug 25 17:31:47 2015 NOTE: OpenVPN 2.1 requires ‘–script-security 2’ or higher to call user-defined scripts or executables
    Tue Aug 25 17:31:48 2015 TUN/TAP device tun0 opened
    Tue Aug 25 17:31:48 2015 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
    Tue Aug 25 17:31:48 2015 /sbin/ifconfig tun0 10.8.0.1 pointopoint 10.8.0.2 mtu 1500
    Tue Aug 25 17:31:48 2015 Listening for incoming TCP connection on [AF_INET]192.168.1.42:53
    Tue Aug 25 17:31:48 2015 TCPv4_SERVER link local (bound): [AF_INET]192.168.1.42:53
    Tue Aug 25 17:31:48 2015 TCPv4_SERVER link remote: [undef]
    Tue Aug 25 17:31:48 2015 Initialization Sequence Completed
    Tue Aug 25 17:31:58 2015 Re-using SSL/TLS context
    Tue Aug 25 17:31:58 2015 TCP connection established with [AF_INET]my.phone.public.ip:51899
    Tue Aug 25 17:31:58 2015 TCPv4_SERVER link local: [undef]
    Tue Aug 25 17:31:58 2015 TCPv4_SERVER link remote: [AF_INET]my.phone.public.ip:51899
    Tue Aug 25 17:31:58 2015 my.phone.public.ip:51899 TLS Error: reading acknowledgement record from packet
    Tue Aug 25 17:31:58 2015 my.phone.public.ip:51899 Fatal TLS error (check_tls_errors_co), restarting

    En config côté serveur, dans /etc/openvpn/server.conf, j’ai :
    # comes from http://open-freax.fr/monter-vpn-openvpn/
    local 192.168.1.42 # adresse IP locale de votre serveur
    dev tun # type de VPN, tun (tunnel IP) ou tap (tunnel Ethernet/bridge)
    proto tcp # protocole à utiliser : tcp ou udp, généralement udp
    port 53 # le port par défaut pour OpenVPN, à ajuster au besoin
    ca /etc/openvpn/easy-rsa/keys/ca.crt
    cert /etc/openvpn/easy-rsa/keys/server1.crt # à ajuster à votre serveur
    key /etc/openvpn/easy-rsa/keys/server1.key # idem
    dh /etc/openvpn/easy-rsa/keys/dh2048.pem # si vous êtes restés sur du 1024 bits, changez ici
    server 10.8.0.0 255.255.255.0 #le réseau au sein duquel vous allez attribuer des IP
    ifconfig 10.8.0.1 10.8.0.2 # serveur et point de sortie distant
    push « redirect-gateway def1 »
    push « route 10.8.0.1 255.255.255.255 » # route vers le serveur VPN
    push « route 10.8.0.0 255.255.255.0 » # route vers le sous-réseau VPN
    push « route 192.168.1.42 255.255.255.0 » #sous-réseau local – adaptez l’adresse IP locale de votre serveur
    push « dhcp-option DNS 192.168.1.1 » # votre serveur DNS primaire (votre routeur, souvent)
    # vous pouvez aussi utiliser le DNS Google 8.8.8.8 ou OpenDNS 208.67.222.222

    Et pour la config des clients, dans /etc/openvpn/easy-rsa/keys/Default.txt, j’ai :
    client
    dev tun
    proto tcp
    remote mon.ip.public.server 53
    resolv-retry infinite
    nobind
    persist-key
    persist-tun
    mute-replay-warnings
    ns-cert-type server
    key-direction 1
    cipher AES-128-CBC
    comp-lzo
    verb 1
    mute 20

    Avez-vous une idée d’où peut venir l’erreur ?

    Réponse
  • 12 septembre 2015 à 23 h 18 min
    Permalink

    Salut Maxime et merci beaucoup pour ton tuto très bien expliqué!
    J’ai fait un quasi sans-faute jusqu’à la fin mais en voulant importer mon fichier xxxx.ovpn via :
    Connexions VPN > Configurer un VPN > Importer une configuration VPN enregistrée, j’obtiens ce message d’erreur :
    Impossible d’importer la connexion VPN
    Le fichier « PCUbuntu.ovpn » ne peut pas être lu ou ne contient pas des informations de connexion VPN reconnues

    Erreur : unknown PPTP file extension.

    J’ai déjà tenté de désinstaller/réinstaller network-manager-openvpn puis rebooté, rien n’y fait.

    Aurais-tu une idée du problème?

    Merci

    Réponse
    • 13 septembre 2015 à 9 h 43 min
      Permalink

      Bonjour,

      J’ai eu ce problème sous Linux Mint en essayant de me connecter à un serveur VPN. Le tutoriel proposé par le fournisseur était incomplet, et après de longues heures à farfouiller sur le Web je suis tombé sur le tutoriel d’un autre fournisseur qui m’a permis de résoudre le problème.
      Pour résumé, il faut (je pense à travers ton message que tu es sous Ubuntu) installer un paquet supplémentaire:
      sudo apt-get install network-manager-openvpn-gnome
      N’oublie pas de relancer network manager:
      sudo restart network-manager

      et là ton fichier devrait être reconnu.

      Réponse
  • 13 septembre 2015 à 17 h 28 min
    Permalink

    Merci Philippe pour ta réponse rapide!
    Malheureusement ça n’a pas fonctionné, le paquet était déjà installé et mon fichier n’est toujours pas reconnu. Est-ce parce que mon routeur est en DHCP? Dois-je le passer en IP statique?
    Merci encore

    Réponse
  • 6 décembre 2015 à 14 h 55 min
    Permalink

    Très bon tuto, j’ai configuré mon serveur openvpn sans gros problème sauf qu’un client pouvait initialiser la connexion openvpn et arriver sur le serveur mais n’avait pas la possibilité d’atteindre une autre machine sur mon lan. Le firewall-openvpn-rules.sh ne fonctionne pas au démarrage du RPi (reboot). C’est le raspberry Pi 2 avec la configuration raspbian et le boot est géré par systemd qui utilise les infos d’init.d mais initialise les processus différemment. Les tables d’iptables sont apparemment initialisées après le lancement du network/interfaces, ce qui effacerait la règle créée pour openvpn.
    En créant un service systemd, cela a réglé le problème sur mon RPi.
    A la fin de l’installation il faut ajouter :

    nano /etc/systemd/system/firewall-openvpn.service

    contenant :

    [Unit]
    Description=iptables rules for openvpn
    After=after-local.service openvpn.service
    Requires=openvpn.service
    ConditionPathExists=/etc/firewall-openvpn-rules.sh

    [Service]
    ExecStart=/bin/bash -c « /etc/firewall-openvpn-rules.sh »
    ExecStop=
    ExecReload=/bin/bash -c « /etc/firewall-openvpn-rules.sh »
    RemainAfterExit=false
    Type=simple

    [Install]
    WantedBy=multi-user.target

    Une fois créé il faut l’activer :

    systemctl enable firewall-openvpn

    Pour l’instant je retrouve bien la règle nat dans l’ iptables après un reboot.

    Si cela peut en aider d’autres ayant le même problème …

    P.S : toutes les lignes ne sont peut-être pas utiles, mais ça fonctionne comme ça !

    Réponse
  • 22 décembre 2015 à 15 h 42 min
    Permalink

    Hello,

    Merci pour ce tuto super détaillé et bien rédigé comme je les aime.

    Néanmoins, avant de me lancer j’aimerais savoir si je pouvais suivre la procédure sur mon serveur VPS de production avec mon site web hébergé sur le port 80 déjà.

    Merci d’avance.

    Réponse
  • 5 janvier 2016 à 1 h 06 min
    Permalink

    Salut!
    Tout d’abord, merci pour cet excellent tutoriel ^^ (et aussi désolé de venir presque après autant de temps ^^’)

    J’ai juste une question… (je précise que je suis un pur débutant dans tout ce qui est réseau, etc):

    A un moment, tu parles de modifier le fichier /etc/openvpn/server.conf, et d’y coller ce que tu nous donne et de l’adapter en fonction de ce qu’on a chez nous… Mais j’ai pas comprit ce que c’était les « routes », et comment on trouvais les « route vers le serveur VPN », les « route vers le sous-réseau VPN » et l’ip vers notre serveur ^^’ (un peu plus loin).

    Merci si tu me répond 🙂
    Cordialement,
    Cyrille.

    Ps: c’est quoi la police d’écriture utilisée pour les commentaires? je la kiff ^^

    Réponse
    • 5 janvier 2016 à 12 h 18 min
      Permalink

      J’ai oublié de préciser certaine choses:

      Je souhaite en fait créer un serveur VPN chez moi, depuis une Raspberry Pi (avec raspbian d’installé), me permettant d’accéder à tout mon réseau local même quand je suis en déplacement.
      Je précise aussi que j’ai une livebox Sagem comme routeur (avec fibre).
      Si il y a besoins d’autres informations, n’hésites pas à me demander ^^

      Réponse
  • 8 janvier 2016 à 11 h 38 min
    Permalink

    Hello tout le monde et bonne année 2016.

    Merci pour ce tuto très explicite.
    Je souhaite comme Cyrille monter un OpenVPN sous Raspbian. Je vais le configurer en mode TAP. Cependant, je ne sais pas si mon serveur doit être placé dans la DMZ ou dans mon LAN.

    Merci d’avance pour vos réponse.

    Cdt

    Réponse
  • 17 mai 2016 à 11 h 41 min
    Permalink

    Vraiment excellent.
    Un peu long, mais au final c’est parfait.
    Merci donc.

    Une petite question : dans ta 1ère image (OpenVPV Connect) quels sont les IP (celles que tu as floutés). Celle de ton FAI ou celle de ton serveur OpenVPN.
    Moi j’ai celle de mon FAI.
    Du coup comme je n’arrive pas à passer par mon VPN je me demande si je ne suis pas trompé quelque part.

    Réponse
  • 10 juin 2016 à 12 h 00 min
    Permalink

    Bonjour et merci pour ce tuto.
    J’ai une question toutefois.
    J’ai suivi le tuto à la lettre mais lorsque je tente de me connecter, la connexion s’effectue mais elle se reset directement.

    « Fri Jun 10 12:58:51 2016 Attempting to establish TCP connection with [AF_INET]: [nonblock]
    Fri Jun 10 12:58:52 2016 TCP connection established with [AF_INET]:
    Fri Jun 10 12:58:52 2016 TCPv4_CLIENT link local: [undef]
    Fri Jun 10 12:58:52 2016 TCPv4_CLIENT link remote: [AF_INET]:
    Fri Jun 10 12:58:52 2016 Connection reset, restarting [0]
    Fri Jun 10 12:58:52 2016 SIGUSR1[soft,connection-reset] received, process restarting »

    Je ne comprend pas ce qu’il se passe…
    Pouvez-vous me venir en aide svp ?

    Merci par avance.

    Réponse
    • 21 juin 2016 à 17 h 39 min
      Permalink

      bonjour

      J’ai exactement le même souci et je n’ai pas réussi à le résoudre.. Voici quelques pistes que j’ai essayé (Sans succès):
      _ Désactiver les pares-feux (Box et Windows)
      _ Essayer UDP et TCP
      _ Regénérer les certificats
      _ Désactiver la redirection de port

      Est ce que quelqu’un aurait une solution ?

      Merci d’avance

      Réponse
  • Ping : Informatique | Pearltrees

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *