Outils pour utilisateurs

Outils du site


linux:openvpn (lu 47184 fois)

Différences

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

Lien vers cette vue comparative

Prochaine révision
Révision précédente
linux:openvpn [26-03-2010 10:33]
edmc73 créée
linux:openvpn [04-04-2013 22:06] (Version actuelle)
Ligne 6: Ligne 6:
  
 http://howto.landure.fr/gnu-linux/debian-4-0-etch/installer-et-configurer-openvpn-sur-debian-4-0-etch 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 ===== ===== But =====
  
-Un serveur Debian avec un serveur OpenVPN+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 Un client sous windows qui veut accéder au serveur debian et tous les pc qui se trouvent sur son LAN
Ligne 85: Ligne 87:
 </note> </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.1269595986.txt.gz · Dernière modification: 04-04-2013 22:05 (modification externe)