Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| linux:openvpn [26-03-2010 09:33] – créée edmc73 | linux:openvpn [04-04-2013 20:06] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| 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 ! | ||