====== 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**