Outils pour utilisateurs

Outils du site


linux:openvpn (lu 46703 fois)

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

linux:openvpn [25-02-2012 22:39]
edmc73 Page moved from linux:edmc73:linux:edmc73:openvpn to edmc73:linux:openvpn
linux:openvpn [04-04-2013 22:06]
Ligne 1: Ligne 1:
-====== OpenVPN ====== 
  
-===== Source ===== 
- 
-http://www.coagul.org/spip.php?article422 
- 
-http://howto.landure.fr/gnu-linux/debian-4-0-etch/installer-et-configurer-openvpn-sur-debian-4-0-etch 
- 
-http://www.vogelweith.com/debian_server/10_openvpn.php 
- 
-===== But ===== 
- 
-Un serveur Debian avec un serveur OpenVPN sur un reseau en 172.16.43.0 
- 
-Un client sous windows qui veut accéder au serveur debian et tous les pc qui se trouvent sur son LAN 
- 
-===== Installation ===== 
- 
-  apt-get install openvpn 
-   
-On crée un utilisateur openvpn pour plus de sécurité 
-   
-  groupadd openvpn 
-  useradd -d /dev/null -g openvpn -s /bin/false openvpn 
-   
-Tous les fichiers nécessaires se trouvent dans 
-  cd /usr/share/doc/openvpn/examples/ 
-   
-On va copier le fichier de config par défaut et l'ajuster ensuite 
- 
-  cd /usr/share/doc/openvpn/examples/sample-config-files/ 
-  gunzip server.conf.gz 
-  cp server.conf /etc/openvpn/ 
-   
-Avant de se lancer dans la config, nous allons générer les clé et certificat dont nous avons besoin. 
- 
-===== Génération de certificat et clé privé/public ===== 
- 
-Allons dans le répertoire adéquate 
-  cd /usr/share/doc/openvpn/examples/easy-rsa/2.0/ 
-   
-Nous llons éditer le fichier vars afin de donner quelques info sur nous. 
-  vi vars 
-   
-Tout à la fin du fichier, modifiez les infos en fonction de vous 
- 
-  export KEY_COUNTRY=FR 
-  export KEY_PROVINCE=France 
-  export KEY_CITY=Dijon 
-  export KEY_ORG="MonEntreprise" 
-  export KEY_EMAIL="contact@monentreprise.fr" 
- 
-Ensuite, on va initialiser le fichier vars 
-  source vars 
-   
-Faire un nettoyage au préalable 
-  ./clean-all 
-   
-On crée le certificat principal du serveur **ca.crt** et la clé correspondante **ca.key** 
-  ./build-ca 
-   
-On crée maintenant le certificat et clé pour le serveur openvpn 
-  ./build-key-server NomServeurVPN 
-   
-Ensuite on crée un certification et clé pour le client openvpn 
-  ./build-key Client01 
-   
-Répétez la commande précédente autant de fois qu'il y a de poste client avec un nom différent biensur. 
- 
-Création du paramètre Diffie Hellman 
-  ./build-dh 
-   
-Voila, tout est créé dans le répertoire keys, il n'y a plus qu'a copier les fichiers concernant le serveur sur le serveur et le client sur le client ;) 
- 
-  cp ./keys/ca.crt /etc/openvpn/ 
-  cp ./keys/LeServeurVPN.crt /etc/openvpn/ 
-  cp ./keys/LeServeurVPN.key /etc/openvpn/ 
-  cp ./keys/dh1024.pem /etc/openvpn/ 
-   
-Pour le client, copier le **ca.crt**, le **Client01.crt** et le **Client01.key** à copier dans **c:\Program Files\OpenVPN\config** mais nous y reviendrons dans la partie client. 
- 
-===== Configuration du serveur ===== 
- 
-<note tips> 
-Astuce pour lire votre fichier de conf sans tous les commentaires. 
-   grep -E -v '^(#|;|[ ]*#|[ ]*;)' /etc/openvpn/server.conf 
-</note> 
- 
-exemple du fichier de conf 
-<code conf> 
-;Port en écoute utilisé pour la connexion VPN 
-port 1194 
- 
-;Protocole utilisé (Le protocole udp est plus sécurisé que le tcp) 
-proto udp 
- 
-;Type d'interface réseau virtuelle créée 
-dev tun 
- 
-;Nom des fichiers servant à l'authentification des clients via OpenSSL 
-ca ca.crt 
-cert LeServeurVPN.crt 
-key LeServeurVPN.key   
-dh dh1024.pem 
- 
-;Adresse du réseau virtuel (Le serveur aura l'adresse 10.8.0.1) 
-server 10.8.0.0 255.255.255.0 
- 
-;Cette ligne ajoute sur le client la route du réseau du serveur 
-push "route 172.16.43.0 255.255.255.0" 
- 
-;Ces lignes indiquent aux clients l'adresse des serveur DNS et WINS 
-push "dhcp-option DNS 172.16.43.2" 
-push "dhcp-option DOMAIN MonDomaine.com" 
-push "dhcp-option WINS 172.16.43.3" 
- 
-# Cette ligne permet aux clients de voire les autres clients 
-;client-to-client 
- 
-keepalive 10 120 
- 
-;Cette ligne active la compression 
-comp-lzo 
- 
-;Ces lignes indiquent un user et un group particulier pour le processus et on ajoute un chroot pour plus de sécurité 
-chroot /etc/openvpn 
-user openvpn 
-group openvpn 
- 
-;Ces lignes permettent de rendre persistante la connexion 
-persist-key 
-persist-tun 
- 
-;Cette ligne permet de voir le status du serveur dans le fichier /etc/openvpn/openvpn-status.log 
-status openvpn-status.log 
- 
-;on définit le nom du fichier de log dans /var/log 
-log openvpn.log 
- 
-;Cette ligne permet d'indiquer le niveau de log souhaité (de 1 à 9) 
-verb 3 
-</code> 
- 
-**ATTENTION**, si les journaux sont écrits dans un fichier dédié comme c’est le cas dans la configuration ci-dessus, il faut absolument mettre en place une rotation des ces journaux. Dans le cas contraire, OpenVPN tombe lorsque le fichier atteint 2Go. 
- 
-Pour cela, il suffit de créer le fichier /etc/logrotate.d/openvpn et d’y ajouter les directives suivantes : 
- 
-<code>/var/log/openvpn.log {  
-    rotate 4  
-    daily  
-    copytruncate  
-    compress  
-    missingok  
-    notifempty  
-}</code> 
- 
-Ainsi, une rotation des journaux d’OpenVPN sera effectuée chaque jour et les 4 derniers fichiers seront conservés. Bien sur ces valeurs doivent être adaptées en fonction de l’utilisation du serveur : si les journaux sont trop importants il est possible de diminuer le niveau de verbosité d’OpenVPN ou de modifier les paramètres de la rotation. 
- 
-Vous pouvez maintenant redémarrer le serveur openvpn pour qu'il prenne en compte son nouveau fichier de config 
-  /etc/init.d/openvpn restart 
-   
-Dans l'état actuel, si un client se connecte sur le serveur openvpn, il n'aura accès uniquement au serveur mais pas au reste du LAN. 
- 
-Pour cela il faut configurer le reseau et le firewall. 
- 
-Vérifions que le port_forwarding est activé sur votre serveur avec la commande 
-  cat /proc/sys/net/ipv4/ip_forward 
-   
-Si vous avez **1**, la fonction est activé, sinon vous avez **0**, vous pouvez changer cela grace à cette commande 
-  echo 1 > /proc/sys/net/ipv4/ip_forward 
-   
-Afin que ce paramètre reste en place lors du redémarrage du serveur, il convient de modifier le fichier **/etc/sysctl.conf** 
- 
-Trouver la ligne 
-  # Uncomment the next line to enable packet forwarding for IPv4 
-  # net.ipv4.ip_forward=1 
-   
-et décommenté la 2eme en vous assurant que la variable est bien définie sur la valeur **1** 
-  net.ipv4.ip_forward=1 
-   
-Créons maintenant notre règle firewall pour rediriger les paquets venant du réseau virtuel VPN vers notre LAN 
-  iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE 
-   
-Pour que cette règle s'exécute au redémarrage du serveur, il convient de créer un fichier contenant cette règle dans le répertoire 
-  /etc/network/if-up.d/ 
-   
-===== Configuration du routeur ===== 
- 
-Pour un serveur OpenVPN, par défaut (si vous n'avez pas modifier le fichier de conf) il faut ouvrir **le port 1194 en UDP** sur votre routeur. 
- 
- 
-===== Configuration du client ===== 
- 
-==== Sous Windows ==== 
- 
-Comme je le disais, le poste client est sous windows. 
- 
-Nous allons télécharger l'application sur le site http://openvpn.se/download.html 
- 
-A l'heure actuel le client est en version 2.0.9 http://openvpn.se/files/install_packages/openvpn-2.0.9-gui-1.0.3-install.exe 
- 
-Vous pouvez télécharger la francisation du programme http://openvpn.se/files/localized/binary/1.0.3/openvpn-gui-1.0.3-fr.exe 
- 
-Lancez donc l'installation du client, une fois l'installation fini, une icone avec 2 petit écran rouge apparait à coté de l'heure, faite un clic droit puis **Exit** 
- 
-Allez dans le répertoire **C:\Program Files\OpenVPN\bin**\\ 
-Copiez le fichier **openvpn-gui-1.0.3-fr.exe**\\ 
-Supprimez le fichier **openvpn.exe**\\ 
-Renommez le fichier **openvpn-gui-1.0.3-fr.exe** en **openvpn.exe**. 
- 
-Vous pouvez maintenant relancer openvpn : Menu Démarrer / Tous les programmes / OpenVPN / OpenVPN GUI 
- 
-Nous allons préparer la config du client, allez dans le répertoire **C:\Program Files\OpenVPN\config** 
- 
-Copiez les fichiers **ca.crt**, **Client01.crt** et **Client01.key** 
- 
-Créons le fichier de config nommé par exemple **MonServeur.ovpn** 
- 
-Vous pouvez trouver des exemples de fichiers de config dans le répertoire **C:\Program Files\OpenVPN\sample-config** 
- 
-Dans notre cas, voici ce que contient mon fichier de config 
- 
-<code> 
-#On spécifie qu'on est le client 
-client 
- 
-#Même parametre que le serveur 
-dev tun 
-proto udp 
- 
-remote adresse_du_serveur_openvpn 1194 
- 
-#Tente de résoudre le nom de la machine indéfiniment 
-resolv-retry infinite 
- 
-nobind 
- 
-# essaie de préserver le même état lorsque la connexion redémarre 
-persist-key 
-persist-tun 
- 
-#Définit les fichiers que vous avez copier 
-ca ca.crt 
-cert Client01.crt 
-key Client01.key 
- 
-#permet la compression des données 
-comp-lzo 
- 
-#détails des logs 
-verb 3</code> 
- 
-==== Sous Linux ==== 
- 
-Installez le paquet **openvpn** 
- 
-Copiez les fichiers **ca.crt**, **Client01.crt** et **Client01.key** dans le répertoire **/etc/openvpn/** 
- 
-Créons le fichier de config nommé par exemple **client.conf** toujours dans le répertoire **/etc/openvpn/** 
- 
-Dans notre cas, voici ce que contient mon fichier de config 
- 
-<code> 
-#On spécifie qu'on est le client 
-client 
- 
-#Même parametre que le serveur 
-dev tun 
-proto udp 
- 
-remote adresse_du_serveur_openvpn 1194 
- 
-#Tente de résoudre le nom de la machine indéfiniment 
-resolv-retry infinite 
- 
-nobind 
- 
-# essaie de préserver le même état lorsque la connexion redémarre 
-persist-key 
-persist-tun 
- 
-#Définit les fichiers que vous avez copier 
-ca ca.crt 
-cert Client01.crt 
-key Client01.key 
- 
-#permet la compression des données 
-comp-lzo 
- 
-#détails des logs 
-verb 3</code> 
- 
-Y'a plus qu'a lancer la connexion, même commande que pour lancer le serveur. 
-  /etc/init.d/openvpn restart 
-   
-===== Problème MTU ===== 
- 
-Après utilisation, j'ai constaté qu'un accès au bureau distant d'une machine via VNC ramait beaucoup trop à en perdre même la connexion... 
- 
-Le problème venait du réglage MTU. 
- 
-La machine distante passe par une freebox, j'ai donc ajusté le MTU à **1492** 
-  ifconfig eth0 mtu 1492 
-   
-Pour le serveur, il existe une ligne à mettre dans le fichier de config d'openvpn pour faire un test de MTU 
- 
-Rajoutez **mtu-test** quelque part dans votre fichier de config. 
- 
-Relancer le serveur openvpn puis le client openvpn sur la machine distante. 
- 
-Regardons à présent les log. 
- 
-<code> 
-Thu Apr  8 13:54:54 2010 client-distant/88.88.88.88:49018 NOTE: Empirical MTU test completed [Tried,Actual] local->remote=[1541,1541] remote->local=[1541,1437] 
-Thu Apr  8 13:54:54 2010 client-distant/88.88.88.88:49018 NOTE: This connection is unable to accomodate a UDP packet size of 1541. Consider using --fragment or --mssfix options as a workaround. 
-</code> 
- 
-On constate que les chiffres de MTU sont différent sur la fin de la 1ère ligne **local->remote=[1541,1541] remote->local=[1541,1437]** 
- 
-Cette différence va engendrer un problème de fragmentation des paquets et à causé chez moi des pertes de connexion à VNC. 
- 
-J'ai donc rajouté ces 2 lignes dans le fichier de config du __**serveur et du client**__ openvpn  
-  fragment 1437 
-  mssfix 
- 
-Après redémarrage du serveur puis du client, on retrouve dans les logs 
- 
-<code> 
-Thu Apr  8 14:31:35 2010 client-distant/88.88.88.88:41551 NOTE: Beginning empirical MTU test -- results should be available in 3 to 4 minutes. 
-Thu Apr  8 14:34:40 2010 client-distant/88.88.88.88:41551 NOTE: Empirical MTU test completed [Tried,Actual] local->remote=[1389,1389] remote->local=[1437,1437] 
-</code> 
- 
-On retrouve des valeurs cohérentes et pas de message d'erreur ;) 
- 
-Au final, ma connexion VNC est instantanée !  
linux/openvpn.txt · Dernière modification: 04-04-2013 22:06 (modification externe)