Guide des technologies

Installer et configurer OpenVPN sur FreeBSD 12.0

8 min read VPN Mis à jour 17 Oct 2025
OpenVPN sur FreeBSD 12.0 — Guide complet
OpenVPN sur FreeBSD 12.0 — Guide complet

Ce guide détaille étape par étape l’installation et la configuration d’un serveur OpenVPN basé sur certificats sur FreeBSD 12.0. Vous apprendrez à installer le paquet, générer une PKI avec easy-rsa, configurer OpenVPN, ajuster pf pour la NAT et le filtrage, activer le routage, créer le profil client et vérifier la connexion. Inclut des conseils de sécurité, un playbook de révocation et une check-list d’exploitation.

Important — Ce guide suppose un accès root/invité administrateur. Adaptez les adresses IP, interfaces et chemins à votre environnement.

Contexte et définitions rapides

OpenVPN est un logiciel open source qui crée un réseau privé virtuel (VPN) sur Internet public en chiffrant le trafic. Il utilise la bibliothèque OpenSSL pour le chiffrement et propose plusieurs mécanismes d’authentification : certificats, clés pré-partagées ou couple identifiant/mot de passe. PKI (Infrastructure à clé publique) : ensemble d’éléments (CA, certificats, clés privées et listes de révocation) pour gérer l’authentification basée sur certificats.

Prérequis

  • FreeBSD 12.0 installé (minimum recommandé 512 Mo de RAM et 1 CPU) — 512 Mo → 512 Mo
  • Accès root (ou sudo)
  • paquet openvpn disponible via pkg
  • pare-feu pf (installation et configuration de pf expliquées ci-dessous)
  • connaissance de base des concepts réseau (interfaces, NAT, routes)

Ce que nous allons faire

  • Installer OpenVPN sur FreeBSD 12.0
  • Préparer les variables pour easy-rsa
  • Générer la PKI : CA, serveur, client, DH et CRL
  • Configurer OpenVPN côté serveur
  • Ajuster pf pour la NAT et le filtrage
  • Activer le routage / forwarding
  • Créer et préparer la configuration client
  • Tester la connexion et vérifier le routage

Étape 1 — Installer OpenVPN

Mettez à jour le dépôt de paquets et installez OpenVPN :

pkg update
pkg install openvpn

Après l’installation, activez le service OpenVPN au démarrage et définissez l’interface tunnel “tun” :

sysrc openvpn_enable="YES"
sysrc openvpn_if="tun"

Maintenant, le paquet OpenVPN est installé sur votre système FreeBSD 12.0.

capture d'écran de l'installation d'OpenVPN sur FreeBSD

Étape 2 — Préparer les variables pour easy-rsa

Nous allons utiliser easy-rsa fourni avec le paquet pour générer la PKI. Créez le répertoire OpenVPN et copiez easy-rsa :

mkdir -p /usr/local/etc/openvpn/
cp -R /usr/local/share/easy-rsa /usr/local/etc/openvpn/

Positionnez-vous dans le répertoire easy-rsa et éditez le fichier vars :

cd /usr/local/etc/openvpn/easy-rsa/
vim vars

Remplacez et adaptez les valeurs ci-dessous selon votre organisation ; conservez la structure. Exemple :

set_var EASYRSA             "$PWD"
set_var EASYRSA_PKI         "$EASYRSA/pki"
set_var EASYRSA_DN          "cn_only"
set_var EASYRSA_REQ_COUNTRY "DE"
set_var EASYRSA_REQ_PROVINCE "Frankfurt"
set_var EASYRSA_REQ_CITY    "Frankfurt"
set_var EASYRSA_REQ_ORG     "hakase-labs CERTIFICATE AUTHORITY"
set_var EASYRSA_REQ_EMAIL   "[email protected]"
set_var EASYRSA_REQ_OU      "HAKASE-LABS EASY CA"
set_var EASYRSA_KEY_SIZE    2048
set_var EASYRSA_ALGO        rsa
set_var EASYRSA_CA_EXPIRE   7500
set_var EASYRSA_CERT_EXPIRE 365
set_var EASYRSA_NS_SUPPORT  "no"
set_var EASYRSA_NS_COMMENT  "HAKASE-LABS CERTIFICATE AUTHORITY"
set_var EASYRSA_EXT_DIR     "$EASYRSA/x509-types"
set_var EASYRSA_SSL_CONF    "$EASYRSA/openssl-1.0.cnf"
set_var EASYRSA_DIGEST      "sha256"

Rendez le fichier exécutable :

chmod +x vars

capture d'écran : préparation des variables easy-rsa

Étape 3 — Générer les certificats (PKI)

Initialisez la PKI, puis créez la CA, les certificats serveur et client, le DH et la CRL.

cd /usr/local/etc/openvpn/easy-rsa/
./easyrsa.real init-pki

Générer la CA :

./easyrsa.real build-ca

Vous serez invité à entrer une phrase secrète pour la clé CA. Conservez-la dans un coffre-fort.

capture d'écran : génération de la CA

Générer et signer la clé serveur :

./easyrsa.real gen-req openvpn-bsd nopass
./easyrsa.real sign-req server openvpn-bsd

Saisissez la passphrase de la CA pour signer. Vérifiez la signature :

openssl verify -CAfile pki/ca.crt pki/issued/openvpn-bsd.crt

capture d'écran : génération et vérification du certificat serveur

Générer et signer le certificat client (exemple client01) :

./easyrsa.real gen-req client01 nopass
./easyrsa.real sign-req client client01
openssl verify -CAfile pki/ca.crt pki/issued/client01.crt

capture d'écran : génération et signature du certificat client

Générez la CRL et les paramètres Diffie-Hellman :

./easyrsa.real gen-crl
./easyrsa.real gen-dh

Copiez ensuite les certificats et clés vers la structure de configuration OpenVPN :

mkdir -p /usr/local/etc/openvpn/{server,client}
cp pki/ca.crt /usr/local/etc/openvpn/server/
cp pki/issued/openvpn-bsd.crt /usr/local/etc/openvpn/server/
cp pki/private/openvpn-bsd.key /usr/local/etc/openvpn/server/
cp pki/dh.pem /usr/local/etc/openvpn/server/
cp pki/crl.pem /usr/local/etc/openvpn/server/

cp pki/ca.crt /usr/local/etc/openvpn/client/
cp pki/issued/client01.crt /usr/local/etc/openvpn/client/
cp pki/private/client01.key /usr/local/etc/openvpn/client/

capture d'écran : certificats copiés vers /usr/local/etc/openvpn

capture d'écran : certificats client

Étape 4 — Configurer le serveur OpenVPN

Créez le fichier de configuration serveur :

cd /usr/local/etc/openvpn/
vim openvpn.conf

Exemple de configuration serveur recommandée :

# OpenVPN Port, Protocol, and the Tun
port 1194
proto udp
dev tun

# OpenVPN Server Certificate - CA, server key and certificate
ca /usr/local/etc/openvpn/server/ca.crt
cert /usr/local/etc/openvpn/server/openvpn-bsd.crt
key /usr/local/etc/openvpn/server/openvpn-bsd.key

#DH and CRL key
dh /usr/local/etc/openvpn/server/dh.pem
crl-verify /usr/local/etc/openvpn/server/crl.pem

# Network Configuration - Internal network
# Redirect all Connection through OpenVPN Server
server 10.5.5.0 255.255.255.0
push "redirect-gateway def1"

# Using the DNS from https://dns.watch
push "dhcp-option DNS 84.200.69.80"
push "dhcp-option DNS 84.200.70.40"

#Enable multiple clients to connect with the same certificate key
duplicate-cn

# TLS Security
cipher AES-256-CBC
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256
auth SHA512
auth-nocache

# Other Configuration
keepalive 20 60
explicit-exit-notify 1
persist-key
persist-tun
comp-lzo yes
daemon
user nobody
group nobody

# OpenVPN Log
log-append /var/log/openvpn.log
verb 3

Démarrez et vérifiez le service :

service openvpn start
service openvpn status

Vérifiez le port d’écoute :

sockstat -l4

capture d'écran : service OpenVPN en écoute sur le port 1194 UDP

Étape 5 — Configurer pf (pare-feu)

Nous allons créer des règles pf qui font la NAT (masquerading) des adresses VPN et autorisent le trafic UDP vers le port OpenVPN. Éditez /usr/local/etc/pf.conf :

cd /usr/local/etc/
vim pf.conf

Définissez les variables d’interface. Remplacez $ext_if et $ext_ip par vos valeurs réelles :

# vpn interface
vpn_if="tun0"
vpn_net = "10.5.5.0/24"

Réassemblez les fragments sur l’interface externe :

# reassemble all fragmented packets before filtering them
scrub in on $ext_if all fragment reassemble

Définissez la NAT pour le trafic sortant du VPN :

# route traffic from VPN interface out to the internet
nat on ! $vpn_if from $vpn_net to any -> $ext_ip

Autorisez l’accès UDP vers le port 1194 et le trafic interne du tunnel :

# Allow Connection to VPN Server
pass in on $ext_if proto udp from any to ($ext_if) port 1194 keep state

# Pass all connection on the VPN Interface
pass in on $vpn_if from any to any

Vérifiez et rechargez pf :

service pf check
service pf reload
pfctl -sr
pfctl -sn

capture d'écran : pf rechargé et règles appliquées

Conseil d’exploitation : conservez une session SSH active avant de recharger pf pour éviter de vous verrouiller hors du serveur.

Étape 6 — Activer le routage et le forwarding

Autorisez le routage IPv4 et IPv6 en modifiant /etc/sysctl.conf :

vim /etc/sysctl.conf

Ajoutez :

net.inet.ip.forwarding=1
net.inet6.ip6.forwarding=1

Appliquez la configuration :

sysctl -f /etc/sysctl.conf

Activez la fonctionnalité de gateway au démarrage :

sysrc gateway_enable="YES"

Puis redémarrez si nécessaire :

reboot

capture d'écran : routage IP activé

Étape 7 — Préparer le client

Créez le fichier client .ovpn et rapatriez-y le certificat, la clé et la CA :

cd /usr/local/etc/openvpn/client/
vim client01.ovpn

Exemple de configuration client :

client
dev tun
proto udp

remote xxx.xxx.xxx.xxx 1194

ca ca.crt
cert client01.crt
key client01.key

cipher AES-256-CBC
auth SHA512
auth-nocache
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256

resolv-retry infinite
compress lzo
nobind
persist-key
persist-tun
mute-replay-warnings
verb 3

Téléchargez sur la machine cliente : ca.crt, client01.crt, client01.key et client01.ovpn.

capture d'écran : dossier client contenant .ovpn et certificats

Étape 8 — Tests de connexion

Sur la machine cliente, lancez :

openvpn --config client01.ovpn

En parallèle, vérifiez l’interface tun côté client :

ifconfig tun0

Pinger le serveur interne :

ping -c3 10.5.5.1

Contrôlez l’adresse IP publique vue depuis le client via le tunnel :

curl ipinfo.io

capture d'écran : adresse IP publique via VPN

Si tout fonctionne, vous devez pouvoir atteindre des ressources internes et naviguer sur Internet via l’IP publique du serveur.

Sécurité et durcissement recommandés

  • Désactiver duplicate-cn en production pour lier un certificat à un seul client.
  • Utiliser au minimum RSA 2048 ou préférer des clés ECC si votre version d’OpenSSL et d’OpenVPN les supporte.
  • Stocker les clés CA dans un coffre (Vault, HSM, ou clé USB sécurisée hors ligne).
  • Activer tls-auth ou tls-crypt pour protéger la phase TLS contre certaines attaques et réduire l’empreinte des scans.
  • Surveiller /var/log/openvpn.log et configurer une rotation des logs.
  • Restreindre les règles pf au minimum requis et limiter les sources autorisées si possible.
  • Renouveler les certificats selon un cycle (ex : 1 an) et automatiser la révocation dans la CRL.

Playbook rapide : révoquer un client et mettre à jour la CRL

  1. Sur le serveur PKI :
cd /usr/local/etc/openvpn/easy-rsa/
./easyrsa.real revoke client01
./easyrsa.real gen-crl
cp pki/crl.pem /usr/local/etc/openvpn/server/crl.pem
service openvpn restart
  1. Vérifiez que client01 ne peut plus se connecter. Gardez la CRL sauvegardée et horodatée.

Checklist d’administration (rôles)

Admin système — avant déploiement :

  • Vérifier accès console et SSH
  • Sauvegarder configuration pf et openvpn
  • Préparer coffre pour la CA
  • Planifier fenêtres de maintenance

Opérateur réseau — mise en service :

  • Valider routage et NAT
  • Tester latence et bande passante via VPN
  • Vérifier logs et métriques

Utilisateur final — client :

  • Disposer de ca.crt, client.crt, client.key et client.ovpn
  • Vérifier heure système et DNS
  • Tester accès aux ressources internes

Dépannage courant

Symptômes et vérifications :

  • Pas d’établissement de connexion TLS : vérifier l’heure système, la correspondance CN et les chemins des certificats.
  • Pas de routage internet via VPN : vérifier sysctl net.inet.ip.forwarding, règles pf et NAT.
  • Erreurs CRL : s’assurer que crl-verify pointe vers le bon fichier et que la CRL est lisible par l’utilisateur openvpn.
  • Port occupé : utiliser sockstat -l4 pour voir quel service écoute et ajuster.

Commandes utiles :

service openvpn status
tail -f /var/log/openvpn.log
pfctl -s all
sockstat -l4
ifconfig tun0
tcpdump -i tun0

Alternatives et choix d’architecture

  • WireGuard : protocole moderne, plus simple et souvent plus performant, mais attention au modèle de clés différent et à la maturité en production selon les besoins.
  • OpenVPN over TCP : utile si UDP est bloqué par des proxys, mais plus de latence.
  • Authentification multi-facteurs : intégration possible via scripts ou plugins pour renforcer l’authentification.

Modèle mental rapide

Pensez à votre VPN comme à un tunnel sécurisé :

  • Authentification = qui peut ouvrir le tunnel (certificats)
  • Chiffrement = confidentialité du contenu (OpenSSL)
  • Routage/NAT = comment le trafic traverse le réseau (pf + sysctl)
  • Revocation = liste noire des certificats compromis (CRL)

Critères de réussite (tests d’acceptation)

  • Le service OpenVPN démarre sans erreur et écoute sur le port configuré.
  • Un client authentifié obtient une IP 10.5.5.x et peut ping 10.5.5.1.
  • Le client passe le trafic internet via l’IP publique du serveur (vérifié avec ipinfo.io).
  • Un certificat révoqué est refusé après mise à jour de la CRL.

Petite boîte de faits utiles

  • Port par défaut OpenVPN : 1194/UDP
  • Sous-réseau d’exemple utilisé : 10.5.5.0/24
  • Taille de clé recommandée : 2048 bits (RSA) minimum
  • Algorithme de hachage montré : SHA-512

Glossaire en une ligne

  • CA : Autorité de certification qui signe les certificats.
  • PKI : Infrastructure de gestion des certificats (CA, certificats, CRL).
  • CRL : Liste de révocation de certificats.
  • DH : Paramètres Diffie-Hellman pour l’échange de clé.

FAQ

Puis-je utiliser le même certificat pour plusieurs appareils ?

Non recommandé en production. duplicate-cn permet plusieurs connexions avec la même paire clé/certificat, mais réduit l’auditabilité et la sécurité.

Que faire si je perds la clé CA ?

Si la clé privée de la CA est compromise ou perdue, la seule option sûre est de créer une nouvelle CA et de réémettre tous les certificats.

OpenVPN fonctionne-t-il sur IPv6 ?

Oui, OpenVPN supporte IPv6 mais la configuration pf et le routage doivent être adaptés pour IPv6.

Résumé

Ce guide vous a montré comment installer et configurer un serveur OpenVPN sur FreeBSD 12.0 en utilisant easy-rsa pour une authentification par certificats. Il couvre la préparation de la PKI, la configuration serveur et client, la configuration du pare-feu pf, l’activation du routage, les tests, ainsi que des recommandations de sécurité et des procédures d’exploitation et de révocation.

Notes importantes

  • Adaptez tous les exemples d’IP et d’interfaces à votre infrastructure.
  • Sauvegardez la clé privée de la CA hors ligne.

Références

Auteur
Édition

Matériaux similaires

Réparer YouTube Vanced : l'app s'arrête
Applications

Réparer YouTube Vanced : l'app s'arrête

Donner la puissance de votre PC avec BOINC
Open Source

Donner la puissance de votre PC avec BOINC

Partager mot de passe Wi‑Fi par QR code
Wi-Fi

Partager mot de passe Wi‑Fi par QR code

Désactiver User OOBE Broker sur Windows
Windows

Désactiver User OOBE Broker sur Windows

5G absente du réseau préféré sur Android — Corriger
Réseaux Mobiles

5G absente du réseau préféré sur Android — Corriger

Restaurer l’onglet App & Browser control
Windows

Restaurer l’onglet App & Browser control