12

Un serveur OpenVPN en moins de 5 minutes avec Docker

L’outil de virtualisation Docker est vraiment magique pour mettre en place très rapidement des services comme un petit serveur vpn avec OpenVPN.

logo_openvpn_docker

Pour faciliter la mise en œuvre d’un petit serveur VPN, Kyle Manna met à disposition une image Docker basée sur OpenVPN avec EasyRSA PKI CA.

Caractéristique de l’image Docker docker-openvpn :

  • Clé Diffie-Hellman sur 2048 bit
  • Génération d’une clé privée
  • Un certificat auto signé correspondant à la clé privée pour le serveur OpenVPN
  • Certificat et clé RSA 2048 bit
  • Une clé d’authentification TLS de sécurité HMAC
  • Topology réseau net30
  • Réseau 192.168.255.0/24
  • Serveur DNS par défaut 8.8.8.8 et 8.8.4.4
  • Interface réseau TUN

Un serveur OpenVPN en moins de 5 minutes avec Docker

  • Téléchargement de l’image Docker :
  • docker pull kylemanna/openvpn
  • Préparation du serveur OpenVPN :
    • Démarrage de l’environnement busybox pour préparer les fichiers de configration d’OpenVPn:
    • docker run --name ovpn-data -v /etc/openvpn busybox
    • Génération des des fichiers de configuration :
    • docker run --volumes-from ovpn-data --rm kylemanna/openvpn ovpn_genconfig -u udp://VPN.SERVERNAME.COM
    • Génération des clés RSA et DH avec pass phrase :
    • docker run --volumes-from ovpn-data --rm -it kylemanna/openvpn ovpn_initpki
  • Démarrage du serveur OpenVPN :
  • docker run --volumes-from ovpn-data -d -p 1194:1194/udp --cap-add=NET_ADMIN kylemanna/openvpn
  • Création d’un fichier client pour OpenVPN sans mot de passe :
  • docker run --volumes-from ovpn-data --rm -it kylemanna/openvpn easyrsa build-client-full client-bureau nopass
    docker run --volumes-from ovpn-data --rm kylemanna/openvpn ovpn_getclient client-bureau > client-bureau.ovpn
  • Test d’accès au serveur OpenVPN à partir d’un poste client GNU/linux :
  • openvpn --config client-bureau.ovpn

    Personnaliser les serveurs DNS

    • Identifier le numéro d’ID du conteneur :
    • docker ps
      CONTAINER ID  IMAGE         COMMAND     CREATED      STATUS      PORTS                     
      fd45d4ace481  68fbf9e45ab5  "ovpn-data"  2 weeks ago  Up 13 days  0.0.0.0:1194->1194/udp
      
    • Se connecter au conteneur :
    • docker exec -i -t fd45d4ace481 /bin/bash
    • Editer le fichier openvpn.conf :
    • vi openvpn.conf
    • Modifier les serveurs DNS, exemple avec ceux d’OpenNIC :
    • push dhcp-option DNS 37.187.0.40
    • Enregistrer les modifications avec la combinaison de touches :wq!
    • Se déconnecter du conteneur :
    • exit
    • Redémarrer le conteneur :
    • docker stop fd45d4ace481
      docker start fd45d4ace481
      

    Partager l'article :





    fred

    "Dire que l'on s'en fiche du droit à la vie privée sous prétexte qu'on a rien à cacher, c'est comme déclarer que l'on se fiche du droit à la liberté d'expression sous prétexte qu'on a rien à dire." Edward Snowden

    12 commentaires

    1. merci pour le tuto.

      Attention il y au moins une typo fd45d4ace482 au lieu de fd45d4ace481

    2. merci m’sieur !
      on a beau se relire 10 fois mais il y a toujours un p’tit loupé (oups)

    3. Bonjour,

      Bon tuto merci ! :)

      Juste j’ai remarqué une petite coquille. Il y a deux « sur » dans la phrase :
       » basée sur sur OpenVPN avec EasyRSA PKI CA. »
      Rien de bien méchant ! ;)

    4. Certificat et cle RSA 2048 bit, une autre coquille prépare l’omelette je viens avec les cêpes….la fatigue…
      Certificat et clé RSA 2048 bit

      J’ai une Debian 9 testing SolydX EE 9 64bit le tuto peut fonctionner dessus !!!???…

    5. je suis partis en vacances je ne dispose pas d’ une connexion internet mobile et wifi dans mon lieu de vacances . Est ce que le vpn peut m’ aider a avoir une connexion internet illimité .
      Merci d’avance

    6. c’est à dire intercepté ?

      sinon tu fais une authnetification via un fichier
      sur le serveur :
      echo «  »ton_login » > /etc/openvpn/auth.txt
      echo « ton_mdp » >> /etc/openvpn/auth.txt
      chmod 600 /etc/openvpn/auth.txt
      dans le fichier client.ovpn tu ajoutes :
      auth-user-pass /etc/openvpn/auth.txt

    7. bonjour,
      comment changer le port et le protocol, ie tcp/8443
      merci

    8. Bonjour,

      je trouve cette image docker et son fonctionnement génial.
      Cependant je n’ai pas réussi à dépasser le stade de POC. En effet depuis mon ordi, je suis bien connecté car j’ai une ligne pour le tunnel :
      utun1: flags=8051 mtu 1500
      inet 192.168.255.6 –> 192.168.255.5 netmask 0xffffffff

      Mais je n’arrive pas a pinger le docker ou le reseau distant. De même pour internet.
      J’ai cru comprendre qu’il faudrait ensuite configurer les tables de route pour le traffic,
      mais même si la théorie est plus ou moins comprise, je ne trouve pas d’exemple de tels configuration.
      Quelqu’un aurait une piste pour m’aider a continuer ?

      Bien cordialement

    9. Rebonjour,

      j’ai modifié un parametre dans le fichier ovpn client et tout marche :
      j’ai ajouté :

      comp-lzo no

      en effet, il semblerait que comme cette compression est désactivé sur le serveur, il faut explicitement le désactiver sur le client.

      Bonne journée à tous

    Laisser un commentaire

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