Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:reseau:vpn:openvpn [22/12/2016 18:20] kawer |
doc:reseau:vpn:openvpn [29/07/2017 15:53] cemoi [Création du fichier de configuration pour le serveur] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | |||
====== OPENVPN Serveur et Client ====== | ====== OPENVPN Serveur et Client ====== | ||
Ligne 4: | Ligne 5: | ||
* Niveau requis : {{tag>avisé}} | * Niveau requis : {{tag>avisé}} | ||
* Commentaires : //serveur, nat.. // | * Commentaires : //serveur, nat.. // | ||
- | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | + | * Suivi : |
- | * Suivi : {{tag>à-placer}} | + | |
* Création par [[user>kawer]] 27/05/2016 | * Création par [[user>kawer]] 27/05/2016 | ||
- | * Testé par <...> le <...> | + | * Testé par Tsukasa le 22/01/2017 |
* Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?id=15701 | Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | * Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?id=15701 | Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | ||
- | **Nota :** | + | ===== Présentation ===== |
- | + | ||
- | Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! | + | |
- | + | ||
- | ==== Présentation ==== | + | |
Cette technique permet la création d'une liaison chiffrée entre votre machine et un serveur hébergé sur Internet (par exemple chez un fournisseur d’accès se trouvant en France ou à l'étranger). \\ | Cette technique permet la création d'une liaison chiffrée entre votre machine et un serveur hébergé sur Internet (par exemple chez un fournisseur d’accès se trouvant en France ou à l'étranger). \\ | ||
Ligne 27: | Ligne 23: | ||
- | ==== Installation ==== | + | ===== Installation ===== |
=== On commence par installer OpenVPN à partir des dépôts officiels : === | === On commence par installer OpenVPN à partir des dépôts officiels : === | ||
Ligne 33: | Ligne 29: | ||
<code root>apt-get update && apt-get install openvpn</code> | <code root>apt-get update && apt-get install openvpn</code> | ||
- | cp -a /usr/share/easy-rsa /etc/openvpn/ | + | === On se prépare à installer les certificats === |
- | cd /etc/openvpn/easy-rsa | + | <code root>cp -a /usr/share/easy-rsa /etc/openvpn/</code> |
- | source vars | + | <code user>cd /etc/openvpn/easy-rsa</code> |
- | ./clean-all | + | <code root>source vars</code> |
+ | <code root>./clean-all</code> | ||
=== Création des certificats de l'autorité de certification : === | === Création des certificats de l'autorité de certification : === | ||
Ligne 128: | Ligne 125: | ||
- | === Création du fichier de configuration : === | + | ===== Création du fichier de configuration pour le serveur ===== |
<code root>gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf</code> | <code root>gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf</code> | ||
Ligne 136: | Ligne 133: | ||
<code root>nano /etc/openvpn/server.conf</code> **décommentez ou ajoutez les lignes suivantes :** | <code root>nano /etc/openvpn/server.conf</code> **décommentez ou ajoutez les lignes suivantes :** | ||
<code> | <code> | ||
+ | #On limite les droits à l'utilisateur nobody et au groupe nogroup | ||
user nobody | user nobody | ||
group nogroup | group nogroup | ||
+ | --- | ||
+ | #On limite le nombres de client simultanées | ||
+ | max-clients 5 | ||
+ | --- | ||
+ | #On active la compression ça permet de gagner de la bande passante et la vitesse pour tout ce qui est binaire. | ||
+ | #Attention il faut aussi que cette ligne soit dans le fichier de configuration du client openvpn | ||
+ | comp-lzo | ||
--- | --- | ||
ca /etc/openvpn/easy-rsa/keys/ca.crt | ca /etc/openvpn/easy-rsa/keys/ca.crt | ||
Ligne 154: | Ligne 159: | ||
- | === On test la configuration openvpn : === | + | === On test la configuration openvpn pour le serveur: === |
<code root>service openvpn stop</code> | <code root>service openvpn stop</code> | ||
Ligne 160: | Ligne 165: | ||
Vous devriez obtenir quelque chose comme suit : | Vous devriez obtenir quelque chose comme suit : | ||
- | |||
<code> | <code> | ||
- | Fri May 27 15:41:06 2016 OpenVPN 2.3.4 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [MH] [IPv6] built on Nov 12 2015 | + | Thu Dec 22 18:27:00 2016 OpenVPN 2.3.4 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [MH] [IPv6] built on Nov 12 2015 |
- | Fri May 27 15:41:06 2016 library versions: OpenSSL 1.0.1k 8 Jan 2015, LZO 2.08 | + | Thu Dec 22 18:27:00 2016 library versions: OpenSSL 1.0.1t 3 May 2016, LZO 2.08 |
- | Fri May 27 15:41:06 2016 NOTE: the current --script-security setting may allow this configuration to call user-defined scripts | + | Thu Dec 22 18:27:00 2016 Diffie-Hellman initialized with 2048 bit key |
- | Fri May 27 15:41:06 2016 Diffie-Hellman initialized with 2048 bit key | + | Thu Dec 22 18:27:00 2016 Socket Buffers: R=[212992->131072] S=[212992->131072] |
- | Fri May 27 15:41:06 2016 Socket Buffers: R=[229376->131072] S=[229376->131072] | + | Thu Dec 22 18:27:00 2016 ROUTE_GATEWAY 213.32.16.1 |
- | Fri May 27 15:41:06 2016 ROUTE_GATEWAY 92.222.64.1 | + | Thu Dec 22 18:27:00 2016 TUN/TAP device tun0 opened |
- | Fri May 27 15:41:06 2016 TUN/TAP device tun0 opened | + | Thu Dec 22 18:27:00 2016 TUN/TAP TX queue length set to 100 |
- | Fri May 27 15:41:06 2016 TUN/TAP TX queue length set to 100 | + | Thu Dec 22 18:27:00 2016 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0 |
- | Fri May 27 15:41:06 2016 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0 | + | Thu Dec 22 18:27:00 2016 /sbin/ip link set dev tun0 up mtu 1500 |
- | Fri May 27 15:41:06 2016 /sbin/ip link set dev tun0 up mtu 1500 | + | Thu Dec 22 18:27:00 2016 /sbin/ip addr add dev tun0 local 10.8.0.1 peer 10.8.0.2 |
- | Fri May 27 15:41:06 2016 /sbin/ip addr add dev tun0 local 10.8.0.1 peer 10.8.0.2 | + | Thu Dec 22 18:27:00 2016 /sbin/ip route add 10.8.0.0/24 via 10.8.0.2 |
- | Fri May 27 15:41:06 2016 /etc/openvpn/update-resolv-conf tun0 1500 1542 10.8.0.1 10.8.0.2 init | + | Thu Dec 22 18:27:00 2016 GID set to nogroup |
- | Fri May 27 15:41:06 2016 /sbin/ip route add 10.8.0.0/24 via 10.8.0.2 | + | Thu Dec 22 18:27:00 2016 UID set to nobody |
- | Fri May 27 15:41:06 2016 GID set to nogroup | + | Thu Dec 22 18:27:00 2016 UDPv4 link local (bound): [undef] |
- | Fri May 27 15:41:06 2016 UID set to nobody | + | Thu Dec 22 18:27:00 2016 UDPv4 link remote: [undef] |
- | Fri May 27 15:41:06 2016 UDPv4 link local (bound): [undef] | + | Thu Dec 22 18:27:00 2016 MULTI: multi_init called, r=256 v=256 |
- | Fri May 27 15:41:06 2016 UDPv4 link remote: [undef] | + | Thu Dec 22 18:27:00 2016 IFCONFIG POOL: base=10.8.0.4 size=62, ipv6=0 |
- | Fri May 27 15:41:06 2016 MULTI: multi_init called, r=256 v=256 | + | Thu Dec 22 18:27:00 2016 IFCONFIG POOL LIST |
- | Fri May 27 15:41:06 2016 IFCONFIG POOL: base=10.8.0.4 size=62, ipv6=0 | + | Thu Dec 22 18:27:00 2016 Initialization Sequence Completed |
- | Fri May 27 15:41:06 2016 IFCONFIG POOL LIST | + | |
- | Fri May 27 15:41:06 2016 Initialization Sequence Completed | + | |
</code> | </code> | ||
<code user>ifconfig tun0</code> | <code user>ifconfig tun0</code> | ||
Ligne 200: | Ligne 202: | ||
<code root>service openvpn start</code> | <code root>service openvpn start</code> | ||
- | === Activation de l'ip forwarding : === | + | ===== Configuration reseau ===== |
- | <code root>nano /etc/sysctl.conf</code> | + | === Activation de l'ip forwarding pour le NAT : === |
+ | |||
+ | <code root>echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/NAT.conf</code> | ||
- | **[[doc:programmation:commenter|Décommentez la ligne]]** | ||
- | <code>net.ipv4.ip_forward=1</code> | ||
**Activez le nouveau jeux de règle :** | **Activez le nouveau jeux de règle :** | ||
- | <code root>sysctl -p /etc/sysctl.conf</code> | + | <code root>sysctl -p /etc/sysctl.d/NAT.conf</code> |
+ | |||
+ | Quelques explications concernant la configuration du NAT sur le [[https://debian-facile.org/viewtopic.php?pid=232793#p232793|forum ici]] merci à raleur pour ces explications :) | ||
== Ajouts des règles dans iptables : == | == Ajouts des règles dans iptables : == | ||
Ligne 220: | Ligne 224: | ||
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE | iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE | ||
</code> | </code> | ||
+ | Pour rendre ces règles persistantes après un reboot de votre serveur, il faut commencer par créer un script de chargement de règles de Firewall (ou utiliser un script existant) : | ||
+ | |||
+ | <code root>iptables-save > /etc/iptables.rules</code> | ||
- | == On génère les certificats pour le client == | + | ===== Génération des certificats pour le client (oui nous sommes toujours sur le serveur) ===== |
<code=root>cd /etc/openvpn/easy-rsa/</code> | <code=root>cd /etc/openvpn/easy-rsa/</code> | ||
Ligne 273: | Ligne 280: | ||
</code> | </code> | ||
- | === Sur le poste client === | ||
- | == On récupère les certificats sur le serveur : == | ||
- | |||
- | scp root@serveur:/etc/openvpn/easy-rsa/keys/ca.crt /tmp | ||
- | scp root@serveur:/etc/openvpn/easy-rsa/keys/clientCert.crt /tmp | ||
- | scp root@serveur:/etc/openvpn/easy-rsa/keys/clientCert.key /tmp | ||
+ | ===== openvpn comme client sur le poste client ===== | ||
==On installe openvpn :== | ==On installe openvpn :== | ||
Ligne 286: | Ligne 288: | ||
<code root>sudo apt-get update</code> | <code root>sudo apt-get update</code> | ||
<code root>sudo apt-get install openvpn</code> | <code root>sudo apt-get install openvpn</code> | ||
+ | |||
+ | === On récupère les certificats sur le serveur : === | ||
+ | **Récupérer les fichiers suivant dans /etc/openvpn/easy-rsa/keys/:** | ||
+ | [[doc:reseau:scp|scp : transfert de fichiers sécurisé entre machines]] | ||
+ | <note warning>Déconseillé d'utiliser root sur internet</note> | ||
+ | |||
+ | <code>scp root@ip_du_serveur:/etc/openvpn/easy-rsa/keys/ca.crt /tmp/</code> | ||
+ | <code>scp root@ip_du_serveur:/etc/openvpn/easy-rsa/keys/clientCert.key /tmp/</code> | ||
+ | <code>scp root@ip_du_serveur:/etc/openvpn/easy-rsa/keys/clientCert.crt /tmp/</code> | ||
==On copie le le fichier de configuration et certificats == | ==On copie le le fichier de configuration et certificats == | ||
Ligne 293: | Ligne 304: | ||
<code root>mkdir -p keys</code> | <code root>mkdir -p keys</code> | ||
<code root>cd keys</code> | <code root>cd keys</code> | ||
- | <code root>cp /tmp/ca.crt .</code> | ||
- | <code root>cp /tmp/clientCert.key .</code> | ||
- | <code root>cp /tmp/clientCert.crt .</code> | ||
- | == Modification du fichier de configuration == | + | **Coller dans le dossiers en cours (keys) les fichiers suivants :** |
+ | |||
+ | <code>mv /tmp/ca.crt /etc/openvpn/keys/</code> | ||
+ | <code>mv /tmp/clientCert.key /etc/openvpn/keys/</code> | ||
+ | <code>mv /tmp/clientCert.crt /etc/openvpn/keys/</code> | ||
+ | |||
+ | == Modification du fichier de configuration sur le client == | ||
**Changer le chemin du serveur et des certificats dans /etc/openvpn/client.conf** | **Changer le chemin du serveur et des certificats dans /etc/openvpn/client.conf** | ||
Ligne 307: | Ligne 321: | ||
</code> | </code> | ||
+ | Pour que toutes les connexions passent par votre vpn il faut également ajouter: | ||
+ | <code>redirect-gateway def1</code> | ||
+ | |||
+ | |||
+ | |||
+ | <note important>Changez les DNS de votre client, ceux de votre FAI sont fermé! Vous pouvez utiliser ceux de [[https://wiki.opennic.org/doku.php|opennic]] par exemple</note> | ||
+ | <note tip>Si vous utilisez [[doc:reseau:network-manager|Network-Manager]] c'est dans ces options que vous devez définir les nouveaux DNS à utiliser.Vous pouvez également le faire en ligne de commande: | ||
+ | <code user>nmcli con mod lenom-de-votre-connexion ipv4.dns "169.239.202.202 185.121.177.177"</code> | ||
+ | </note> | ||
== Test de connection == | == Test de connection == | ||