VPN
Aller à la navigation
Aller à la recherche
| Fiche express | |
|---|---|
| Domaine | Tunnel réseau chiffré |
| Protocoles | IPsec · L2TP/IPsec · SSL/TLS (OpenVPN) · WireGuard |
| Voir aussi | IP · Iptables · I2P |
Un VPN (Virtual Private Network) interconnecte deux réseaux, ou un poste isolé et un réseau, via un tunnel chiffré établi sur une infrastructure non maîtrisée (typiquement Internet). Les données transitent chiffrées de bout en bout du tunnel — seuls les deux extrémités (client VPN et serveur/passerelle VPN) peuvent les lire en clair.
Types d'interface
- tap — tunnel de niveau 2 (pont Ethernet), transporte des trames complètes ; plus rare,
utile pour étendre un même segment L2 (broadcast compris) entre deux sites.
- tun — tunnel de niveau 3 (routé), ne transporte que des paquets IP ; plus répandu, plus
simple à administrer et à sécuriser.
Principaux protocoles
| Protocole | Niveau | Remarques |
|---|---|---|
| PPTP | 2 | Historique (Microsoft), chiffrement cassé depuis longtemps — à éviter |
| L2TP/IPsec | 2+3 | L2TP seul ne chiffre rien, toujours combiné à IPsec ; encore présent en client natif sur de nombreux OS |
| IPsec | 3 | Standard IETF, très utilisé site-à-site (passerelle à passerelle) et intégré dans du matériel réseau |
| SSL/TLS (OpenVPN) | 4/7 | Logiciel libre, portable, un simple client suffit ; longtemps le standard de facto en dehors des solutions matérielles |
| WireGuard | 3 | Plus récent, code très réduit, performances et simplicité de configuration supérieures — de plus en plus le choix par défaut pour du nouveau déploiement |
Exemple : serveur OpenVPN (tun, routé)
yum install openssl openssl-devel pam-devel
# ou apt-get install openvpn easy-rsa
Génération de la PKI (autorité, certificat serveur) avec easy-rsa, puis fichier de configuration serveur :
port 1194
proto udp
dev tun
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh2048.pem
# réseau virtuel du VPN
server 10.8.0.0 255.255.255.0
# route poussée aux clients vers le réseau interne
push "route 198.51.100.0 255.255.255.0"
keepalive 10 120
cipher AES-256-GCM
comp-lzo
persist-key
persist-tun
status /var/log/openvpn-status.log
verb 3
systemctl enable --now openvpn-server@server
Exemple : configuration client
client
dev tun
proto udp
remote vpn.exemple.fr 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
cipher AES-256-GCM
verb 3
NAT/firewall côté serveur
Pour que le trafic des clients VPN sorte vers Internet via le serveur (passerelle par défaut) :
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE