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.
Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:reseau:vpn:openvpn [27/05/2016 16:11] kawer créée |
doc:reseau:vpn:openvpn [31/12/2016 08:16] smolski atelier:chantier:openvpn-serveur renommé en doc:reseau:vpn:openvpn |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Titre de Votre Tuto ====== | + | ====== OPENVPN Serveur et Client ====== |
* Objet : du tuto Configuration d'un serveur openvpn | * Objet : du tuto Configuration d'un serveur openvpn | ||
- | * Niveau requis : {{tag>débutant avisé}} | + | * Niveau requis : {{tag>avisé}} |
- | * Commentaires : //serveur, nat.. // FIXME | + | * Commentaires : //serveur, nat.. // |
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | ||
- | * Suivi : {{tag>en-chantier à-tester à-placer}} - FIXME Pour choisir, voir les autres Tags possibles dans [[:atelier:#tags|l'Atelier]]. | + | * Suivi : {{tag>à-placer}} |
* Création par [[user>kawer]] 27/05/2016 | * Création par [[user>kawer]] 27/05/2016 | ||
- | * Testé par <...> le <...> FIXME | + | * Testé par <...> le <...> |
- | * Commentaires sur le forum : [[:url-invalide | Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) FIXME | + | * 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 :** | **Nota :** | ||
Ligne 16: | Ligne 16: | ||
==== Présentation ==== | ==== 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). Tous vos accès à Internet seront alors vus à partir de l'adresse IP de ce serveur VPN et non plus par celle de votre machine. | + | 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). \\ |
+ | Tous vos accès à Internet seront alors vus à partir de l'adresse IP de ce serveur VPN et non plus par celle de votre machine. | ||
OpenVPN n'est pas un VPN IPSec. C'est un VPN SSL se basant sur la création d'un tunnel IP (UDP ou TCP au choix) authentifié et chiffré avec la bibliothèque OpenSSL. | OpenVPN n'est pas un VPN IPSec. C'est un VPN SSL se basant sur la création d'un tunnel IP (UDP ou TCP au choix) authentifié et chiffré avec la bibliothèque OpenSSL. | ||
Ligne 22: | Ligne 23: | ||
Quelques avantages des tunnels VPN SSL : | Quelques avantages des tunnels VPN SSL : | ||
- | Facilité pour passer les réseaux NATés (pas de configuration à faire) | + | * Facilité pour passer les réseaux NATés (pas de configuration à faire) |
- | Logiciel clients disponibles sur **GNU/Linux, BSD, Windows et Mac OS X** | + | * Logiciel clients disponibles sur **GNU/Linux, BSD, Windows et Mac OS X** |
Ligne 32: | Ligne 33: | ||
<code root>apt-get update && apt-get install openvpn</code> | <code root>apt-get update && apt-get install openvpn</code> | ||
+ | === On ce prépare à installer les certificats === | ||
+ | <code root>cp -a /usr/share/easy-rsa /etc/openvpn/</code> | ||
+ | <code user>cd /etc/openvpn/easy-rsa</code> | ||
+ | <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 : === | ||
<code root>./build-ca</code> | <code root>./build-ca</code> | ||
- | |||
- | |||
Vous devriez obtenir ce qui suit, libre à vous d'en changer le contenus : | Vous devriez obtenir ce qui suit, libre à vous d'en changer le contenus : | ||
- | |||
<code> | <code> | ||
Generating a 2048 bit RSA private key | Generating a 2048 bit RSA private key | ||
Ligne 67: | Ligne 70: | ||
<code root>./build-dh</code> | <code root>./build-dh</code> | ||
- | |||
Qui donne : | Qui donne : | ||
- | |||
<code> | <code> | ||
Generating DH parameters, 2048 bit long safe prime, generator 2 | Generating DH parameters, 2048 bit long safe prime, generator 2 | ||
Ligne 75: | Ligne 76: | ||
..............+...................................................................................... | ..............+...................................................................................... | ||
</code> | </code> | ||
- | |||
=== On génère les certificats du serveur : === | === On génère les certificats du serveur : === | ||
<code root>./build-key-server srvcert</code> | <code root>./build-key-server srvcert</code> | ||
- | |||
Qui donne ce qui suit : **(remplacez debian-facile par le nom de votre serveur)** | Qui donne ce qui suit : **(remplacez debian-facile par le nom de votre serveur)** | ||
- | |||
<code> | <code> | ||
Generating a 2048 bit RSA private key | Generating a 2048 bit RSA private key | ||
Ligne 134: | Ligne 132: | ||
<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> | ||
- | |||
=== On configure server.conf === | === On configure server.conf === | ||
<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> | ||
user nobody | user nobody | ||
Ligne 167: | Ligne 163: | ||
<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> | ||
- | + | Devrait vous retourner : | |
- | Devrais vous retourner : | + | |
<code> | <code> | ||
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 | tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 | ||
Ligne 203: | Ligne 194: | ||
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B | RX bytes:0 (0.0 B) TX bytes:0 (0.0 B | ||
</code> | </code> | ||
- | |||
== Le test s'est bien déroulé : == | == Le test s'est bien déroulé : == | ||
<code root>service openvpn start</code> | <code root>service openvpn start</code> | ||
- | |||
=== Activation de l'ip forwarding : === | === Activation de l'ip forwarding : === | ||
Ligne 214: | Ligne 203: | ||
<code root>nano /etc/sysctl.conf</code> | <code root>nano /etc/sysctl.conf</code> | ||
- | **Décommentez la ligne** | + | **[[doc:programmation:commenter|Décommentez la ligne]]** |
<code>net.ipv4.ip_forward=1</code> | <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.conf</code> | ||
== Ajouts des règles dans iptables : == | == Ajouts des règles dans iptables : == | ||
- | **se référer ici :** https://debian-facile.org/doc:reseau:iptables | + | |
+ | **se référer ici :** | ||
+ | [[doc:reseau:iptables|tuto Reseau iptable]] | ||
<code> | <code> | ||
Ligne 231: | Ligne 219: | ||
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> | ||
+ | |||
+ | == On génère les certificats pour le client == | ||
+ | |||
+ | <code=root>cd /etc/openvpn/easy-rsa/</code> | ||
+ | <code=root>source vars</code> | ||
+ | <code=root>./build-key clientCert</code> | ||
+ | Qui donne ce qui suit : **(remplacez [clientCert]:debianFacile par le nom de votre client)** | ||
+ | <code>Generating a 2048 bit RSA private key | ||
+ | ...........................................+++ | ||
+ | ......................................................+++ | ||
+ | writing new private key to 'monlaptopcert.key' | ||
+ | ----- | ||
+ | You are about to be asked to enter information that will be incorporated | ||
+ | into your certificate request. | ||
+ | What you are about to enter is what is called a Distinguished Name or a DN. | ||
+ | There are quite a few fields but you can leave some blank | ||
+ | For some fields there will be a default value, | ||
+ | If you enter '.', the field will be left blank. | ||
+ | ----- | ||
+ | Country Name (2 letter code) [US]: | ||
+ | State or Province Name (full name) [CA]: | ||
+ | Locality Name (eg, city) [SanFrancisco]: | ||
+ | Organization Name (eg, company) [Fort-Funston]: | ||
+ | Organizational Unit Name (eg, section) [MyOrganizationalUnit]: | ||
+ | Common Name (eg, your name or your server's hostname) [clientCert]:debianFacile | ||
+ | Name [EasyRSA]: | ||
+ | Email Address [me@myhost.mydomain]: | ||
+ | |||
+ | Please enter the following 'extra' attributes | ||
+ | to be sent with your certificate request | ||
+ | A challenge password []: | ||
+ | An optional company name []: | ||
+ | Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.0.cnf | ||
+ | Check that the request matches the signature | ||
+ | Signature ok | ||
+ | The Subject's Distinguished Name is as follows | ||
+ | countryName :PRINTABLE:'US' | ||
+ | stateOrProvinceName :PRINTABLE:'CA' | ||
+ | localityName :PRINTABLE:'SanFrancisco' | ||
+ | organizationName :PRINTABLE:'Fort-Funston' | ||
+ | organizationalUnitName:PRINTABLE:'MyOrganizationalUnit' | ||
+ | commonName :PRINTABLE:'debianFacile' | ||
+ | name :PRINTABLE:'EasyRSA' | ||
+ | emailAddress :IA5STRING:'me@myhost.mydomain' | ||
+ | Certificate is to be certified until Jun 19 20:05:45 2025 GMT (3650 days) | ||
+ | Sign the certificate? [y/n]:y | ||
+ | |||
+ | |||
+ | 1 out of 1 certificate requests certified, commit? [y/n]y | ||
+ | Write out database with 1 new entries | ||
+ | Data Base Updated | ||
+ | </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 | ||
+ | |||
+ | |||
+ | ==On installe openvpn :== | ||
+ | |||
+ | <code root>sudo apt-get update</code> | ||
+ | <code root>sudo apt-get install openvpn</code> | ||
+ | |||
+ | ==On copie le le fichier de configuration et certificats == | ||
+ | |||
+ | = Rapatriez les certificats ca.cert, clientCert.crt et clientCert.key dans votre dossier /tmp = | ||
+ | |||
+ | <code root>cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/</code> | ||
+ | <code root>cd /etc/openvpn</code> | ||
+ | <code root>mkdir -p 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 == | ||
+ | |||
+ | **Changer le chemin du serveur et des certificats dans /etc/openvpn/client.conf** | ||
+ | <code> | ||
+ | remote monServeurOpenVPN 1194 | ||
+ | ca /etc/openvpn/keys/ca.crt | ||
+ | cert /etc/openvpn/keys/clientCert.crt | ||
+ | key /etc/openvpn/keys/clientCert.key | ||
+ | </code> | ||
+ | |||
+ | == Test de connection == | ||
+ | |||
+ | <code=root>openvpn /etc/openvpn/client.conf</code> | ||
+ | |||
+ | **Vous devez obtenir en fin de séquence :** | ||
+ | <code>Initialization Sequence Completed</code> | ||
+ | |||
+ | Si tel est le cas, vérifiez que tun0 est bien listé avec **ifconfig**, puis vérifiez votre ip par exemple en allant sur [[http://ifconfig.me/]], si tout est ok, on ferme la console openvpn en pensant a faire un **Ctrl+C** | ||
+ | |||
+ | == on démarre openvpn== | ||
+ | |||
+ | <code=root>service openvpn start</code> | ||
+ | |||
+ | |||