Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
linux:openvpn [26-03-2010 10:33] edmc73 créée |
linux:openvpn [25-02-2012 22:37] edmc73 Page moved from linux:edmc73:linux:openvpn to linux:edmc73:linux:edmc73:openvpn |
||
---|---|---|---|
Ligne 6: | Ligne 6: | ||
http:// | http:// | ||
+ | |||
+ | http:// | ||
===== But ===== | ===== But ===== | ||
- | Un serveur Debian avec un serveur OpenVPN | + | Un serveur Debian avec un serveur OpenVPN |
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: | ||
</ | </ | ||
+ | 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' | ||
+ | dev tun | ||
+ | |||
+ | ;Nom des fichiers servant à l' | ||
+ | ca ca.crt | ||
+ | cert LeServeurVPN.crt | ||
+ | key LeServeurVPN.key | ||
+ | dh dh1024.pem | ||
+ | |||
+ | ;Adresse du réseau virtuel (Le serveur aura l' | ||
+ | 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' | ||
+ | push " | ||
+ | push " | ||
+ | push " | ||
+ | |||
+ | # Cette ligne permet aux clients de voire les autres clients | ||
+ | ; | ||
+ | |||
+ | 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 / | ||
+ | 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 / | ||
+ | status openvpn-status.log | ||
+ | |||
+ | ;on définit le nom du fichier de log dans /var/log | ||
+ | log openvpn.log | ||
+ | |||
+ | ;Cette ligne permet d' | ||
+ | verb 3 | ||
+ | </ | ||
+ | |||
+ | **ATTENTION**, | ||
+ | |||
+ | Pour cela, il suffit de créer le fichier / | ||
+ | |||
+ | < | ||
+ | rotate 4 | ||
+ | daily | ||
+ | copytruncate | ||
+ | compress | ||
+ | missingok | ||
+ | notifempty | ||
+ | }</ | ||
+ | |||
+ | 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 | ||
+ | / | ||
+ | | ||
+ | Dans l' | ||
+ | |||
+ | 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 / | ||
+ | | ||
+ | Si vous avez **1**, la fonction est activé, sinon vous avez **0**, vous pouvez changer cela grace à cette commande | ||
+ | echo 1 > / | ||
+ | | ||
+ | Afin que ce paramètre reste en place lors du redémarrage du serveur, il convient de modifier le fichier **/ | ||
+ | |||
+ | 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' | ||
+ | / | ||
+ | | ||
+ | ===== 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' | ||
+ | |||
+ | A l' | ||
+ | |||
+ | Vous pouvez télécharger la francisation du programme http:// | ||
+ | |||
+ | Lancez donc l' | ||
+ | |||
+ | Allez dans le répertoire **C: | ||
+ | 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: | ||
+ | |||
+ | 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: | ||
+ | |||
+ | Dans notre cas, voici ce que contient mon fichier de config | ||
+ | |||
+ | < | ||
+ | #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</ | ||
+ | |||
+ | ==== Sous Linux ==== | ||
+ | |||
+ | Installez le paquet **openvpn** | ||
+ | |||
+ | Copiez les fichiers **ca.crt**, **Client01.crt** et **Client01.key** dans le répertoire **/ | ||
+ | |||
+ | Créons le fichier de config nommé par exemple **client.conf** toujours dans le répertoire **/ | ||
+ | |||
+ | Dans notre cas, voici ce que contient mon fichier de config | ||
+ | |||
+ | < | ||
+ | #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</ | ||
+ | |||
+ | Y'a plus qu'a lancer la connexion, même commande que pour lancer le serveur. | ||
+ | / | ||
+ | | ||
+ | ===== Problème MTU ===== | ||
+ | |||
+ | Après utilisation, | ||
+ | |||
+ | 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' | ||
+ | |||
+ | 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. | ||
+ | |||
+ | < | ||
+ | Thu Apr 8 13:54:54 2010 client-distant/ | ||
+ | Thu Apr 8 13:54:54 2010 client-distant/ | ||
+ | </ | ||
+ | |||
+ | On constate que les chiffres de MTU sont différent sur la fin de la 1ère ligne **local-> | ||
+ | |||
+ | 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 | ||
+ | |||
+ | < | ||
+ | Thu Apr 8 14:31:35 2010 client-distant/ | ||
+ | Thu Apr 8 14:34:40 2010 client-distant/ | ||
+ | </ | ||
+ | On retrouve des valeurs cohérentes et pas de message d' | ||
+ | Au final, ma connexion VNC est instantanée ! |