carlo.yznardo
lang=|
← Back to blog
LinuxNovember 01, 2023/utiliser-docker-pour-creer-mon-propre-serveur-openvpn-en-quelques-minutes.mdx

$ cat Utiliser docker pour deployer un serveur OpenVPN en quelques minutes

Problématique : Un de nos clients avait besoin d’accéder aux ressources de leur réseau interne lors d’un séminaire et nous ont spécifiquement demandé de mettre en place un VPN. J’ai commencé par créer une machine virtuelle Debian 12 sur leur hyperviseur, avec…

Problématique : Un de nos clients avait besoin d’accéder aux ressources de leur réseau interne lors d’un séminaire et nous ont spécifiquement demandé de mettre en place un VPN.

J’ai commencé par créer une machine virtuelle Debian 12 sur leur hyperviseur, avec seulement 2 Go de RAM et environ 3 Go d’espace de stockage.

Configuration du serveur :

  • Création d’une machine virtuelle Debian 12 sur l’hyperviseur, et en nommant le serveur SRV-VPN.

  • Installation de Debian 12 sans interface graphique.

Installation de Docker :

Apres avoir mis à jour la machine avec un « apt update && apt upgrade » et avoir installé sudo, me suis connecté à la machine Debian et j’ai exécuté les commandes suivantes dans la ligne des commandes pour installer Docker et donner les droits sudo à l’utilisateur crée :

sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg-agent -y
  • J’ai ajouté la clé Docker GPG :
curl -fsSL https://download.docker.com/linux/$(awk -F'=' '/^ID=/\{ print $NF \}' /etc/os-release)/gpg | sudo apt-key add -
  • J’ai ajouté le dépôt logiciel Docker :
sudo add-apt-repository "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/$(awk -F'=' '/^ID=/\{ print $NF \}' /etc/os-release) $(lsb_release -cs) stable"
  • J’ai installé Docker :
sudo apt install docker-ce docker-compose containerd.io -y
  • J’ai activé et démarré le service Docker :
sudo systemctl enable docker && sudo systemctl start docker
  • J’ai ajouté mon utilisateur au groupe Docker :
sudo usermod -aG docker $UTILISATEUR
  • J’ai réauthentifié pour appliquer la nouvelle appartenance au groupe :
su - $UTILISATEUR

Paramétrage et déploiement du serveur OpenVPN dans Docker:

  • J’ai créé un répertoire de travail pour le serveur OpenVPN :
mkdir ~/docker/openvpn-server -p
  • J’ai défini quelques variables pour la configuration du serveur :
OVPN_DATA="ovpn-data-docker"
OVPN_HOST="udp://VPN.SERVERNAME.COM"
OVPN_CLIENT="client1"
  • J’ai téléchargé l’image Docker requise :
docker pull kylemanna/openvpn
  • J’ai généré une nouvelle configuration OpenVPN :
docker run -v ~/docker/openvpn-server:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u $\{OVPN_HOST\}
  • J’ai initialisé l’infrastructure de clés publiques (PKI) OpenVPN :
docker run -v ~/docker/openvpn-server:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki
  • J’ai démarré le conteneur du serveur OpenVPN :
docker run -d --name=openvpn-server -v ~/docker/openvpn-server:/etc/openvpn -p 1194:1194/udp --cap-add=NET_ADMIN --restart unless-stopped kylemanna/openvpn
  • J’ai généré un certificat client pour des connexions sécurisées :
docker run -v ~/docker/openvpn-server:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full $\{OVPN_CLIENT\}
  • J’ai créé un fichier de configuration OpenVPN pour le client :
docker run -v ~/docker/openvpn-server:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient $\{OVPN_CLIENT\} > $\{OVPN_CLIENT\}.ovpn

J’ai finalisé la configuration en ajoutant une règle NAT sur le routeur du client pour ouvrir un port et le rediriger vers le serveur OpenVPN dans le port 1194.

Après des tests, j’ai installé le logiciel OpenVPN sur l’ordinateur du client et importé le profil.