====== Serveur OpenVPN ======
===== Setup du serveur =====
==== Pré-requis ====
* Installation de la version 3 Easy-RSA
* Créer une paire de clé pour le CA
* Créer une paire de clé pour le CA intermédiaire (optionnel)
* Créer une paire de clé pour le serveur
[[documentation:technique:openvpn:easy-rsa|Voir la procédure]]
==== Installation ====
apt-get install openvpn
==== Configuration ====
Créer un fichier ''server.conf'' dans le répertoire dédié aux profils serveurs dans ''/etc/openvpn/server''. Dans ce même répertoire il doit y avoir les différentes clés:
* ''ca.crt'' - la clé publique du CA racine ou intermédiaire de Mycélium
* ''nomduserveur.key'' - la clé privée du serveur VPN
* ''nomduserveur.crt'' - la clé publique du serveur VPN, signée par le CA
* ''dh.pem'' - la clé pour les paramètres Diffie Hellman
* ''ta.key'' - la clé de sécurisation du Handshake SSL/TLS (commun sur tous les serveurs)
=== Génération des clés DH et TA ===
**DH**
cd /etc/openvpn/server
openssl dhparam -out dh.pem 2048
La génération peut prendre un certain temps (ex. ~10min sur russule, avec une taille de 2048).
**TA**
cd /etc/openvpn/server
openvpn --genkey --secret ta.key
Ce fichier généré devra aussi être présent sur tous les clients.
=== Fichier de configuration serveur ===
# port et mode
mode server
port 1194
proto udp
dev tun
explicit-exit-notify 1
# certificats et cles
ca ca.crt
cert nomduserveur.crt
key nomduserveur.key
dh dh.pem
tls-auth ta.key 0
cipher AES-256-CBC
# reseau
server 10.8.0.0 255.255.255.0
topology subnet
#push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 80.67.169.12"
push "dhcp-option DNS 80.67.169.40"
keepalive 10 120
# clients
client-config-dir ccd
client-to-client
ifconfig-pool-persist ipp.txt
# securite
user nobody
group nogroup
persist-key
persist-tun
comp-lzo
# journaux
verb 3
mute 20
status openvpn-status.log
log-append /var/log/openvpn.log
==== Répertoire des configurations des clients ====
Pour que chaque client dispose par exemple d'une IP fixe associée à sa clé, il faut créer un répertoire et créer un fichier avec les paramètres nécessaires.
mkdir /etc/openvpn/server/ccd
Exemple pour le client **champipi** (il se présente avec sa clé signée par le CA Mycélium avec le CN (Common Name) **champipi**), le fichier ''/etc/openvpn/server/ccd/champipi''
push ifconfig-push 10.8.0.10 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 80.67.169.12"
push "dhcp-option DNS 80.67.169.40"
==== Démarrage du service OpenVPN ====
Une fois configurée, démarrage du service.
systemctl start openvpn-server@server
8-O il existe aussi ''openvpn-server@client''
Un petit ''status'' pour voir si tous va bien
systemctl status openvpn-server@server
Le fichier de log se trouve dans ''/var/log/openvpn.log''
Démarrage automatique au boot du serveur
systemctl enable openvpn-server@server
==== Voir l'état du tunnel et le routage ====
ip a
ip r
==== Configuration réseau ====
=== Activer l'IP Forwarding ===
Activer la ligne suivante dans le fichier ''/etc/sysctl.conf'':
net.ipv4.ip_forward=1
Recharger le fichier de configuration pour la prise en compte
sysctl -p --system
=== Activer le routage et NAT ===
TODO configuration de **ferm**