Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
openvpn [Le 06/05/2018, 19:14] – [Liens externes] Suppression d'un lien mort spnux | openvpn [Le 20/08/2020, 13:42] (Version actuelle) – [Webmin : Interface d'administration web] 129.175.152.220 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
+ | ---- | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | ====== OpenVPN ====== | ||
+ | |||
+ | **OpenVPN** est un logiciel libre permettant de créer un réseau privé virtuel [[: | ||
+ | [[: | ||
+ | Il peut être utilisé pour simplement accéder à un serveur VPN existant ou pour mettre en place un serveur… et y accéder. | ||
+ | |||
+ | Que ce soit en configuration client ou serveur, il est possible de tout configurer en [[: | ||
+ | |||
+ | ===== Installation ===== | ||
+ | |||
+ | Il faut aussi installer le support pour gnome : | ||
+ | < | ||
+ | |||
+ | Dans le cas contraire, cela affiche une erreur dans la gestion de l' | ||
+ | " | ||
+ | |||
+ | ==== Par paquet ==== | ||
+ | |||
+ | [[: | ||
+ | |||
+ | * Pour le serveur openvpn : | ||
+ | * **[[apt> | ||
+ | * (vivement recommandé) [[fail2ban]] : le seul risque de sécurité subsistant sur votre serveur vpn sera une attaque de type force brute, et ddos, il est donc nécessaire de limiter le nombre d' | ||
+ | * (facultatif selon le choix de l' | ||
+ | * Pour le [[client openvpn]] : | ||
+ | * **[[apt> | ||
+ | * **[[apt> | ||
+ | * (facultatif selon le choix de l' | ||
+ | |||
+ | <note help>Les ports par défaut pour OpenVPN sont : | ||
+ | * 1194 TCP | ||
+ | * 1194 UDP | ||
+ | </ | ||
+ | ==== Webmin : Interface d' | ||
+ | |||
+ | Un module [[:Webmin]] est disponible pour faciliter le paramétrage d' | ||
+ | |||
+ | <note tips> | ||
+ | Bien sur, l' | ||
+ | |||
+ | Certains diraient même que c'est a déconseiller. | ||
+ | </ | ||
+ | ===== Configuration des VPN ===== | ||
+ | |||
+ | ==== Cas d'un fournisseur de VPN ==== | ||
+ | |||
+ | Vous avez un accès VPN de type OpenVPN et vous souhaitez configurer cet accès ? Voici la procédure. | ||
+ | |||
+ | - Téléchargez le fichier de configuration de votre fournisseur VPN. | ||
+ | - Placez ce fichier ***.ovpn** dans le dossier **/ | ||
+ | - Faites un clic droit sur l’icône réseau et choisis de modifier les connexions. | ||
+ | - Ajoutez une nouvelle connexion. | ||
+ | - Sélectionnez **Importer une configuration VPN enregistrée**. | ||
+ | - Sélectionnez votre fichier ***.ovpn** | ||
+ | - Vérifiez ou indiquez l’adresse du serveur VPN, choisissez le type **Mot de passe**, tapez le login du VPN et son mot de passe. | ||
+ | - Enregistrez, | ||
+ | |||
+ | Retrouvez ces étapes en images ci-dessous (cliquez pour agrandir), issu d'un fournisseur de VPN (ce n'est pas de la pub mais un exemple) : | ||
+ | |||
+ | {{:: | ||
+ | {{:: | ||
+ | {{:: | ||
+ | {{:: | ||
+ | {{:: | ||
+ | {{:: | ||
+ | {{:: | ||
+ | |||
+ | ==== Certificats de sécurité ==== | ||
+ | |||
+ | === Principe === | ||
+ | |||
+ | La première étape dans la construction d'une configuration OpenVPN 2.0 est d' | ||
+ | |||
+ | * Une clé publique pour le serveur et une clé privée pour chacun des clients | ||
+ | * Un certificat de l' | ||
+ | |||
+ | OpenVPN supporte une authentification bidirectionnelle basée sur les certificats, | ||
+ | |||
+ | Ce modèle de sécurité a un nombre de possibilités intéressante pour une utilisation en VPN : | ||
+ | |||
+ | * Le serveur n'a besoin que de ses propres certificats/ | ||
+ | * Le serveur n' | ||
+ | * Si une clé privée est compromise, il est possible de la désactiver en ajoutant son certificat à une Liste de Révocation de Certificat (LRC ou CRL en anglais). La LRC permet aux certificats compromis d' | ||
+ | |||
+ | Nous allons générer successivement un certificat/ | ||
+ | |||
+ | === Générer le certificat et la clé de l' | ||
+ | |||
+ | Pour la gestion de l'ICP, nous utiliserons un jeu de scripts livrés avec OpenVPN. | ||
+ | |||
+ | |||
+ | Il faut tout d' | ||
+ | |||
+ | < | ||
+ | <note important> | ||
+ | <note important> | ||
+ | Il se peut que easy-rsa ne soit pas installé d' | ||
+ | make-cadir my_ca | ||
+ | cd my_ca/</ | ||
+ | </ | ||
+ | |||
+ | Se connecter en root : | ||
+ | |||
+ | sudo -i | ||
+ | |||
+ | Maintenant [[: | ||
+ | Ne laisser surtout pas un seul champ vide. | ||
+ | |||
+ | Il faut modifier les dernières lignes à sa convenance. Dans notre cas : | ||
+ | |||
+ | < | ||
+ | export KEY_COUNTRY=FR | ||
+ | export KEY_PROVINCE=drome | ||
+ | export KEY_CITY=valence | ||
+ | export KEY_ORG=boiteinformatique | ||
+ | export KEY_EMAIL=xxxxxxxxx@xxx.com | ||
+ | </ | ||
+ | |||
+ | <note important> | ||
+ | < | ||
+ | |||
+ | On initialise les variables : | ||
+ | <note important> | ||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | openssl dhparam -out dh2048.pem 2048</ | ||
+ | | ||
+ | < | ||
+ | |||
+ | |||
+ | On nettoie toutes les clés et certificats existants : | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | Puis, nous créons le certificat et la clé de l' | ||
+ | |||
+ | < | ||
+ | |||
+ | La dernière commande ('' | ||
+ | < | ||
+ | '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | "Name : " | ||
+ | |||
+ | '' | ||
+ | |||
+ | </ | ||
+ | |||
+ | < | ||
+ | |||
+ | Le certificat et la clé de l' | ||
+ | |||
+ | |||
+ | === Générer un certificat et une clé pour le serveur === | ||
+ | |||
+ | Nous allons générer un certificat et une clé privée pour le serveur : | ||
+ | |||
+ | Dans cet exemple, le nom de notre serveur est : **server** | ||
+ | < | ||
+ | |||
+ | |||
+ | Quand le **Common Name** est demandé, il faut entrer « server » comme le dernier paramètre entré dans la commande précédente. Puis il faut mettre un mot de passe et un nom d' | ||
+ | |||
+ | Suivent deux dernières questions qui requièrent des réponses positives : | ||
+ | |||
+ | < | ||
+ | | ||
+ | Sign the certificate ? [y/n] :y | ||
+ | 1 out of 1 certificate requests certified, commit ? [y/n] y | ||
+ | </ | ||
+ | Le certificat et la clé du serveur sont à présent créés : server.crt et server.key. | ||
+ | |||
+ | |||
+ | === Générer les certificats et les clés pour 3 clients === | ||
+ | |||
+ | Générer des certificats et des clés pour les clients est une étape similaire à l' | ||
+ | |||
+ | <note important> | ||
+ | * Pour protéger la clé avec un mot de passe, il faut utiliser '' | ||
+ | * Si possible faire un couple " | ||
+ | Ce qui élèvera le niveau de sécurité, dans le cadre de perte de données, de matériel, ou tout simplement à cause d'une erreur humaine(( le plus grand risque )). | ||
+ | |||
+ | </ | ||
+ | <note important> | ||
+ | < | ||
+ | ./easyrsa sign-req client client01 | ||
+ | </ | ||
+ | </ | ||
+ | Exemple avec un client nommé **client1** : | ||
+ | |||
+ | < | ||
+ | |||
+ | Quand le **Common Name** est demandé, il faudra donc entrer « client1 » | ||
+ | |||
+ | |||
+ | < | ||
+ | |||
+ | < | ||
+ | |||
+ | Il faut toujours se rappeler que pour chaque client, le champ **Common Name** doit être renseigné et unique. | ||
+ | |||
+ | Les certificats et les clés des clients sont créés. | ||
+ | |||
+ | < | ||
+ | </ | ||
+ | |||
+ | ==== Générer des paramètres Diffie-Hellman(¹) ==== | ||
+ | |||
+ | Les paramètres Diffie Hellman doivent être générés pour le serveur OpenVPN : | ||
+ | |||
+ | <note important> | ||
+ | < | ||
+ | ./easyrsa gen-crl</ | ||
+ | |||
+ | < | ||
+ | |||
+ | Ce qui donne : | ||
+ | < | ||
+ | Generating DH parameters, 1024 bit long safe prime, generator 2 | ||
+ | This is going to take a long time | ||
+ | .................+........................................... | ||
+ | ...................+.............+.................+......... | ||
+ | ...................................... | ||
+ | |||
+ | etc... | ||
+ | </ | ||
+ | |||
+ | Les paramètres Diffie Hellman sont copiés dans le répertoire keys : dh1024.pem | ||
+ | ===== Les fichiers clés ===== | ||
+ | |||
+ | Maintenant, nous pouvons trouver les clés et les certificats fraichement générés dans le dossier **keys**. Suit une explication de ce que contiennent les fichiers du dossier **keys**. | ||
+ | |||
+ | |||
+ | ^ Nom de fichier ^ Utile à ^ Utilité ^ Secret ? ^ | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | |||
+ | L' | ||
+ | |||
+ | Au lieu de générer les certificats et les clés clients sur le serveur, le client aurait pu générer sa propre clé privée localement, et ensuite, soumettre un CSR (Certificat Signing Request ou Demande de Signature de Certificat) à la machine qui signe les clés. A son tour, la machine signant les clés peut procéder au CSR et retourner un certificat signé au client. Tout ceci peut se faire sans avoir besoin qu'un fichier secret '' | ||
+ | |||
+ | Copie des fichiers serveur : | ||
+ | <note important> | ||
+ | < | ||
+ | cp pki/ | ||
+ | cp pki/ | ||
+ | cp pki/dh.pem / | ||
+ | cp pki/crl.pem / | ||
+ | < | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Création des fichiers de configuration pour le serveur et les clients ==== | ||
+ | |||
+ | === Obtenir les fichiers d' | ||
+ | |||
+ | Dans le répertoire **/ | ||
+ | Si vous devez travailler avec des machines sous Windows l' | ||
+ | |||
+ | === Configuration du serveur === | ||
+ | |||
+ | Le fichier d' | ||
+ | |||
+ | < | ||
+ | |||
+ | Il faut donc [[: | ||
+ | |||
+ | Le fichier d' | ||
+ | |||
+ | À présent, le fichier de configuration serveur est utilisable. Néanmoins, il est toujours possible de modifier le fichier plus en détail : | ||
+ | |||
+ | * En cas d' | ||
+ | * Si le serveur doit écouter sur un port TCP au lieu d'UDP, il faut mettre **proto tcp** au lieu de **proto udp** (si OpenVPN doit écouter sur les deux, il faut créer deux instances séparées d' | ||
+ | * Si l' | ||
+ | * Pour que les clients soient capables de s' | ||
+ | * Pour augmenter la sécurité, il est possible de décommenter les directives **user nobody** et **group nobody**. Diverses options de cryptage et de sécurité peuvent aussi être modifiées. (Le groupe nobody n' | ||
+ | |||
+ | Pour faire fonctionner plusieurs instances d' | ||
+ | |||
+ | * Utiliser un port différent pour chaque instances (les protocoles UDP et TCP utilisent différent espaces de port, donc un processus peut écouter le port UDP-1194 et un autre le port TCP-1194) | ||
+ | * Faire attention, lorsque les instances d' | ||
+ | |||
+ | |||
+ | === Configuration du client === | ||
+ | <note important> | ||
+ | < | ||
+ | cp pki/ | ||
+ | cp pki/ | ||
+ | </ | ||
+ | </ | ||
+ | Le fichier d' | ||
+ | |||
+ | * Comme le fichier de configuration du serveur, éditez d' | ||
+ | * Editez ensuite la directive **remote** pour indiquer l' | ||
+ | |||
+ | * Pour terminer, il faut vérifier que la configuration client correspond bien à la configuration serveur. Les directives principales à vérifier sont : | ||
+ | |||
+ | **dev (tun ou tap)** | ||
+ | |||
+ | **proto (udp ou tcp)** | ||
+ | |||
+ | **comp-lzo** | ||
+ | |||
+ | **fragment** | ||
+ | |||
+ | ===== Démarrage automatique d' | ||
+ | |||
+ | Pour qu' | ||
+ | |||
+ | * Pour le serveur, copiez le fichier **server.conf** dans le répertoire **/ | ||
+ | * Pour les clients, copiez le fichier **client.conf** dans **/ | ||
+ | |||
+ | Il faut également déplacer les clés et certificats dans le dossier **/ | ||
+ | |||
+ | * pour le serveur : | ||
+ | * ca.crt | ||
+ | * server.crt | ||
+ | * server.key | ||
+ | * dh1024.pem | ||
+ | |||
+ | * Pour le client : | ||
+ | * ca.crt | ||
+ | * client.crt | ||
+ | * client.key | ||
+ | |||
+ | |||
+ | ===== Démarrage du VPN et tests de la connectivité ===== | ||
+ | |||
+ | ==== Démarrage du serveur ==== | ||
+ | |||
+ | Premièrement, | ||
+ | |||
+ | * le port 1194 UDP (ou celui configuré) est bien ouvert sur le pare-feu | ||
+ | * une règle de transfert pour transférer le port 1194 UDP depuis le firewall vers le serveur OpenVPN est bien établie | ||
+ | |||
+ | Ensuite, il faut vérifier que l' | ||
+ | |||
+ | Pour simplifier la recherche de problèmes, il est préférable de démarrer le serveur OpenVPN depuis la ligne de commande plutôt que de démarrer le démon. Dans un [[: | ||
+ | |||
+ | < | ||
+ | sudo openvpn server.conf | ||
+ | </ | ||
+ | |||
+ | Un démarrage normal ressemble à ça : | ||
+ | |||
+ | < | ||
+ | Tue Oct 30 05:22:17 2007 Diffie-Hellman initialized with 1024 bit key | ||
+ | Tue Oct 30 05:22:17 2007 TLS-Auth MTU parms [ L:1542 D:138 EF:38 EB:0 ET:0 EL:0 ] | ||
+ | Tue Oct 30 05:22:17 2007 TUN/TAP device tun0 opened | ||
+ | Tue Oct 30 05:22:17 2007 ifconfig tun0 10.8.0.1 pointopoint 10.8.0.2 mtu 1500 | ||
+ | Tue Oct 30 05:22:17 2007 route add -net 10.8.0.0 netmask 255.255.255.0 gw 10.8.0.2 | ||
+ | Tue Oct 30 05:22:17 2007 Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:23 ET:0 EL:0 AF:3/1 ] | ||
+ | Tue Oct 30 05:22:17 2007 UDPv4 link local (bound): [undef]: | ||
+ | Tue Oct 30 05:22:17 2007 UDPv4 link remote: [undef] | ||
+ | Tue Oct 30 05:22:17 2007 MULTI: multi_init called, r=256 v=256 | ||
+ | Tue Oct 30 05:22:17 2007 IFCONFIG POOL: base=10.8.0.4 size=62 | ||
+ | Tue Oct 30 05:22:17 2007 IFCONFIG POOL LIST | ||
+ | Tue Oct 30 05:22:17 2007 Initialization Sequence Completed | ||
+ | </ | ||
+ | |||
+ | ==== Démarrage du client ==== | ||
+ | |||
+ | Comme dans la configuration serveur, il est préférable de démarrer le client OpenVPN depuis une ligne de commande. Exemple pour le client1 configuré plus haut : | ||
+ | < | ||
+ | |||
+ | Un démarrage normal d'un client doit se terminer comme sur un démarrage de serveur : | ||
+ | < | ||
+ | Tue Oct 30 05:22:17 2007 Initialization Sequence Completed | ||
+ | </ | ||
+ | |||
+ | Une fois que vous êtes sûr que votre configuration fonctionne, vous pouvez choisir de démarrer le daemon automatiquement au démarrage du système: | ||
+ | < | ||
+ | < | ||
+ | Si votre fichier de configuration s' | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Test ==== | ||
+ | |||
+ | Maintenant, essayons de pinguer à travers le VPN depuis le client. | ||
+ | |||
+ | Dans une configuration bridgée (c' | ||
+ | |||
+ | < | ||
+ | |||
+ | Si le ping a fonctionné, | ||
+ | |||
+ | <note important> | ||
+ | </ | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | * route-method exe | ||
+ | * route-delay 2 | ||
+ | |||
+ | **Attention** : pour que Windows soit d’accord d’ajouter des routes il faut impérativement qu’OpenVPN soit lancé en **mode administrateur** (en tout cas pour Windows 7) | ||
+ | </ | ||
+ | |||
+ | puis exécuter une fenetre MS-DOS en " | ||
+ | |||
+ | < | ||
+ | |||
+ | Pour Windows 7, la commande à exécuter est la suivante : | ||
+ | |||
+ | < | ||
+ | |||
+ | cette commande permet d' | ||
+ | |||
+ | pour désactiver le ping ensuite, il faut exécuter cette commande : | ||
+ | |||
+ | < | ||
+ | |||
+ | Pour Windows 7, la commande à exécuter est la suivante : | ||
+ | |||
+ | < | ||
+ | ==== En cas d' | ||
+ | |||
+ | FIXME La méthode suivante a été testée pour une machine cliente en mode route. A tester pour le mode bridge ou un serveur. | ||
+ | |||
+ | Il faut configurer FireStarter pour permettre le passage du VPN au travers du firewall : | ||
+ | |||
+ | [[: | ||
+ | |||
+ | |||
+ | Ecrire ou Ajouter les lignes suivantes : | ||
+ | |||
+ | < | ||
+ | $IPT -A INPUT -i tun+ -j ACCEPT | ||
+ | $IPT -A OUTPUT -o tun+ -j ACCEPT | ||
+ | </ | ||
+ | Redémarrez Firestarter | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | ===== Accéder à internet par votre VPN ===== | ||
+ | |||
+ | < | ||
+ | Si vous suivez les explications ici présentes cela sera vos dernières manipulations pour que les clients accèdent à internet par le biais du serveur VPN</ | ||
+ | |||
+ | Pour une utilisation simple de votre VPN, et obtenir facilement l' | ||
+ | |||
+ | Avant toute chose, on s' | ||
+ | |||
+ | < | ||
+ | echo " | ||
+ | </ | ||
+ | |||
+ | Si vous rencontrez l' | ||
+ | |||
+ | Ensuite, indiquer au serveur que l'on souhaite qui redirige le traffic des clients vers internet, en ajoutant à / | ||
+ | |||
+ | < | ||
+ | push " | ||
+ | </ | ||
+ | |||
+ | Il peut être utile de préciser quel DNS utiliser, ici nous choisissons OpenDNS : | ||
+ | |||
+ | < | ||
+ | push " | ||
+ | push " | ||
+ | </ | ||
+ | |||
+ | Enfin, ajouter cette règle à iptables avec la commande suivante sur le serveur : | ||
+ | |||
+ | < | ||
+ | iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE | ||
+ | </ | ||
+ | Attention, cette commande n' | ||
+ | |||
+ | |||
+ | Rédemarrez le serveur, et vous devez avoir un accès complet à internet au travers de votre VPN. | ||
+ | |||
+ | < | ||
+ | sudo service openvpn restart | ||
+ | </ | ||
+ | |||
+ | Vous pouvez à présent vous connecter à l'aide du [[client OpenVPN]] (network-manager-openvpn). Il gère automatiquement les règles de routage en local pour avoir un accès complet à internet. Sinon, vous devrez le faire à la main. | ||
+ | |||
+ | Problèmes connus : | ||
+ | * Par défaut le serveur utilise la compression LZO, il faut donc l' | ||
+ | * Selon ce que vous avez fait précédemment, | ||
+ | * Pensez à lancer le serveur en ligne de commande pour pouvoir voir les éventuels messages d' | ||
+ | ===== Administration du serveur VPN ===== | ||
+ | ==== Par telnet ==== | ||
+ | |||
+ | Il faut au préalable modifier le fichier de configuration du serveur. | ||
+ | |||
+ | [[: | ||
+ | |||
+ | et ajoutez-y : | ||
+ | < | ||
+ | management localhost <un numéro de port> | ||
+ | </ | ||
+ | |||
+ | Le numéro de port est libre pour peu qu'il ne soit pas utilisé par un autre service ou application. | ||
+ | |||
+ | Une fois la configuration modifiée, recharger ou redémarrez OpenVPN. | ||
+ | |||
+ | Un **telnet localhost <le numéro de port>** vous confirmera que tout s'est bien passé. | ||
+ | |||
+ | La commande //help// vous affichera la liste de commandes disponibles. | ||
+ | |||
+ | ==== Utilisation de Webmin ==== | ||
+ | |||
+ | Si vous avez installé cet outil et le module d' | ||
+ | |||
+ | Ainsi, depuis Webmin, il est possible : | ||
+ | |||
+ | * de créer et/ou gérer les Autorités de Certification | ||
+ | * de créer et/ou gérer les VPN | ||
+ | * de lister les connexions actives | ||
+ | |||
+ | |||
+ | |||
+ | ==== Informations complémentaires ==== | ||
+ | |||
+ | === Inclure des machines côté serveur avec un VPN routé === | ||
+ | |||
+ | Une fois que le VPN est opérationel entre le client et le serveur, il peut être utile d' | ||
+ | |||
+ | Pour l' | ||
+ | |||
+ | La première chose à faire, c'est indiquer au client que le réseau '' | ||
+ | |||
+ | < | ||
+ | |||
+ | Puis, il faut créer une route sur la passerelle réseau côté serveur pour router le sous-réseau VPN du client vers le serveur OpenVPN (seulement si le serveur OpenVPN n'est pas aussi la passerelle). Pour ceci, il faut voir la documentation de votre passerelle et lui dire que tout le trafic venant de l' | ||
+ | |||
+ | < | ||
+ | |||
+ | Pour le vérifier, il est possible de tester chaque interface ou le système en général : | ||
+ | |||
+ | Vérification de l' | ||
+ | |||
+ | < | ||
+ | |||
+ | Vérification de l' | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | Vérification de toutes les interfaces : | ||
+ | |||
+ | < | ||
+ | |||
+ | Vérification de l'IP forwarding en général : | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | === Inclure des machines côté serveur avec un VPN bridgé === | ||
+ | |||
+ | Dans cette configuration, | ||
+ | |||
+ | |||
+ | === Inclure des machines avec un VPN routé === | ||
+ | |||
+ | Dans un scénario typique d' | ||
+ | |||
+ | Pour l' | ||
+ | |||
+ | Avant de commencer, il y a des prérequis qui doivent être suivis : | ||
+ | |||
+ | * Le sous-réseau client (192.168.4.0/ | ||
+ | * Le client doit avoir un «common name» unique dans son certificat et le marqueur «duplicate-cn» (ce marqueur permet d' | ||
+ | < | ||
+ | L'IP forwarding et le TUN/TAP forwarding doivent être activés sur le client OpenVPN qui servira de passerelle.</ | ||
+ | |||
+ | Puis, il faut modifier des configurations côté serveur. Si le fichier de configuration du serveur ne fait pas référence à un dossier de configuration client, il faut en créer un : | ||
+ | |||
+ | < | ||
+ | (il peut être créé ailleurs mais il faudra penser à modifier à chaque fois son chemin) | ||
+ | |||
+ | Puis, dans le fichier **server.conf**, | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | Dans cette directive, «ccd» fait référence au répertoire qui vient d' | ||
+ | |||
+ | Quand un nouveau client se connecte au serveur OpenVPN, le processus OpenVPN va vérifier ce dossier pour y trouver un fichier qui porte le même nom que le «common name» du certificat du client. | ||
+ | Si un fichier correspondant est trouvé, il sera lu et utilisé pour appliquer des directives supplémentaires au client. | ||
+ | |||
+ | L' | ||
+ | |||
+ | < | ||
+ | iroute 192.168.4.0 255.255.255.0 | ||
+ | </ | ||
+ | |||
+ | |||
+ | Ceci permet d' | ||
+ | |||
+ | Dans le fichier de configuration du serveur **/ | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | Pourquoi mettre des informations redondantes ? | ||
+ | « route » contrôle le routage dans le noyau vers le serveur OpenVPN (via l' | ||
+ | |||
+ | Maitenant, la question est : Est-ce que l'on veut permettre aux différents clients du VPN de dialoguer ensemble. Si c'est le cas, il faut ajouter dans le fichier de configuration du serveur **/ | ||
+ | |||
+ | < | ||
+ | push "route 192.168.4.0 255.255.255.0"</ | ||
+ | |||
+ | Ceci permet au serveur OpenVPN d' | ||
+ | |||
+ | La dernière étape, celle qui est souvent oubliée, est d' | ||
+ | |||
+ | Pour ceci, il faut voir la documentation de votre passerelle et lui indiquer que tout le trafic allant vers 192.168.4.0/ | ||
+ | |||
+ | Si cette étape n'est pas faite, et qu'il faille pinguer une machine sur le réseau côté serveur depuis le 192.168.4.8, | ||
+ | |||
+ | La règle empirique à utiliser est que le routage d'un réseau entier à travers un VPN (c' | ||
+ | |||
+ | De manière identique, si la machine client utilisant OpenVPN n'est pas la passerelle pour le réseau côté client, il faut que la passerelle côté client route tous les sous-réseaux atteignables à travers le VPN vers la machine client OpenVPN. | ||
+ | |||
+ | |||
+ | === Inclure des machines côté client avec un VPN bridgé === | ||
+ | |||
+ | Ceci requiert une installation plus complexe (mais peut-être moins complexe en pratique qu'à expliquer en détails), il faut : | ||
+ | |||
+ | * Faire un pont entre l' | ||
+ | * Fixer manuellement l' | ||
+ | * Configurer les machines côté client pour qu' | ||
+ | |||
+ | === Attribuer des options DHCP aux clients === | ||
+ | |||
+ | Le serveur OpenVPN peut attribuer une adresse automatique aux clients mais aussi toutes les options DHCP tels que les adresses des serveurs DNS ou WINS. Il faut que le client soit configuré de telle manière qu'il soit capable d' | ||
+ | |||
+ | Exemple : supposons que le client veuille utiliser un serveur DNS et un serveur WINS internes à son réseau. Pour ceci, il faut ajouter au fichier de configuration du serveur OpenVPN : | ||
+ | |||
+ | < | ||
+ | push " | ||
+ | push " | ||
+ | push " | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Créer un VPN avec une adresse IP dynamique ===== | ||
+ | |||
+ | Alors que les clients peuvent facilement accéder au serveur en ayant une adresse IP dynamique, ça devient plus intéressant quand le serveur lui-même a une adresse IP publique dynamique. Bien qu' | ||
+ | |||
+ | La première étape est d' | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | Il faudra toutefois s' | ||
+ | |||
+ | |||
+ | ===== Voir aussi ===== | ||
+ | |||
+ | ==== Liens externes ==== | ||
+ | |||
+ | * Le [[http:// | ||
+ | * Un [[http:// | ||
+ | * Un [[http:// | ||
+ | * [[wpfr> | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | |||
+ | |||
+ | |||
+ | ==== Notes ==== | ||
+ | |||
+ | - [[wpfr> | ||
+ | |||
+ | ---- | ||
+ | |||
+ | Pour plus d' | ||
+ | |||
+ | // |