Openvpn
| Fiche express | |
|---|---|
| Type | VPN SSL/TLS, logiciel libre |
| Port par défaut | 1194/UDP (souvent basculé sur 443/TCP pour traverser les proxys) |
| Config | /etc/openvpn/
|
| Voir aussi | Openvpn centos7 · Shorewall |
OpenVPN est une solution libre de VPN reposant sur SSL/TLS, permettant de monter un
tunnel chiffré entre un serveur et des clients (ou entre deux sites). Elle s'appuie sur
OpenSSL pour la cryptographie et sur une infrastructure à clés publiques (PKI)
générée avec l'outil easy-rsa.
Installation (Debian/Ubuntu)
aptitude install openvpn
mkdir /etc/openvpn/easy-rsa
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/
chown -R $USER /etc/openvpn/easy-rsa/
(la version 2.0 d'easy-rsa fournie dans l'exemple ci-dessus est ancienne ; les distributions récentes livrent easy-rsa 3.x, dont la syntaxe des commandes diffère légèrement — à vérifier selon la version installée.)
Génération de la PKI (autorité, serveur, clés)
cd /etc/openvpn/easy-rsa/
# éditer le fichier vars pour renseigner les champs du certificat (pays, org, etc.)
source vars
./clean-all
./build-dh
./pkitool --initca
./pkitool --server server
openvpn --genkey --secret keys/ta.key
Fichiers produits dans /etc/openvpn/easy-rsa/keys : server.crt,
server.key, ta.key, dh1024.pem, ca.key,
ca.crt.
cp keys/ca.crt keys/ta.key keys/server.crt keys/server.key keys/dh1024.pem /etc/openvpn
# préparation du chroot
mkdir /etc/openvpn/jail
mkdir /etc/openvpn/clientconf
Configuration serveur
# server TCP/443
mode server
dev tun
proto tcp
port 443
# clé et certificats
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh1024.pem
tls-auth ta.key 0
cipher AES-256-CBC
# réseau
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
# sécurité : abandon des privilèges + chroot après démarrage
user nobody
group nogroup
chroot /etc/openvpn/jail
persist-key
persist-tun
comp-lzo
# journalisation
verb 3
mute 20
status openvpn-status.log
log-append /var/log/openvpn.log
(coquille corrigée : la directive key pointait par erreur sur
server.key ré-assignée à cert dans une version antérieure du
document — cert doit référencer server.crt, pas server.key.)
openvpn /etc/openvpn/server.conf
systemctl enable --now openvpn@server
tun vs tap
Ce sont des périphériques réseau virtuels utilisés par OpenVPN :
- tap simule un lien de niveau liaison (couche 2 OSI), pont Ethernet complet ;
- tun simule un tunnel réseau de niveau 3 (routage IP uniquement, plus léger et plus
courant pour un VPN classique).
Routage et NAT
echo 1 > /proc/sys/net/ipv4/ip_forward
# et pour persister au reboot, dans /etc/sysctl.conf :
# net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables-save > /etc/iptables.rules
Client
cd /etc/openvpn/easy-rsa
source vars
./build-key nom_client
Alternatives
- SoftEther VPN — autre solution VPN libre multi-protocoles.