Vous êtes sur la page 1sur 4

Installer/Configurer OpenVPN (Linux, OS X)

Cela est trs basique: on met juste en place le VPN et des clients et on fait passer tout le trafic des clients par le VPN. Les paths peuvent tre diffrent vu que ce tuto a t ralis avec le serveur sous Gentoo, un autre client sur Gentoo, et un client sur OS X.

Installer le serveur
Donc, dj sur le serveur il vous faut installer OpenVPN (sisi). Je vous laisse faire ce que vous voulez ici, faites le avec merge, les sources ou apt-get ou autre. Ensuite, on doit gnrer les clefs (pour le serveur et les clients) :

Cration des clefs


1. On passe dans le rpertoire deasy-rsa : $ cd /usr/share/openvpn/easy-rsa/ 2. On dite dans le fichier vars ceci : export export export export export KEY_COUNTRY="FR" KEY_PROVINCE="France" KEY_CITY="Paris" KEY_ORG="eloas" KEY_EMAIL="vpn@eloas.net"

Il faut bien videmment changer les valeurs par ce qui va bien pour vous. 3. On charge vars : $ ./vars $ ./clean-all Ceci va charger le contenu de vars, qui va initialiser les variables denvironnement et supprimer les traces danciennes clefs, on va pouvoir commencer .. 4. Gnration des clefs de Master CA (CA = CERTIFICATE AUTHORITY, Autorit de certificat) $ ./build-ca Et rpondez aux diffrentes questions. Une fois la gnration termine, vos clefs seront cres dans le rpertoire keys/ : ca.crt et ca.key. 5. Gnration des clefs pour le serveur. Maintenant que votre VPN a les clefs de CA, vous devez gnrer les clefs du serveur : $ ./build-key-server nom-de-votre-serveur Noubliez pas de remplacer nom-de-votre-serveur par le nom de votre serveur.

Et voil, votre serveur a ses clefs, toujours dans le rpertoire keys/ : nom-de-votre-serveur.crt et nomde-votre-serveur.key. 6. Gnration de clefs pour le(s) client(s). Vous pouvez rpter cette action plusieurs fois, pour chaque client que vous souhaiter ajouter au VPN. $ ./build-key nom-du-client Encore une fois vous devez rpondre aux questions, et : Sign the certificate? [y/n] : rpondez y, 1 out of 1 certificate requests certified, commit? [y/n] : rpondez encore y. Noubliez pas que commonName doit tre votre nom/nom du client et non celui du serveur sinon vous vous retrouverez avec un .crt vide. 7. Gnration des paramtres Diffie Hellman (utile pour SSL/TLS) Il suffit de faire : $ ./build-dh

Installer les clefs


Le dernier paragraphe vous a cr plusieurs fichiers. Passons les en revue : ca.crt : cest le certificat du Master CA. Il doit tre install sur chaque client et sur le serveur. ca.key : cest la clef du Master CA. Elle doit rester secrte et tre sur chaque machine qui doit gnrer des clefs, dans note cas : le serveur. dh1024.pem : cest les paramtres Diffie Hellman. Ils doivent rester sur le serveur. nom-de-votre-serveur.crt : cest le certificat du serveur et doit tre sur le serveur. nom-de-votre-serveur.key : cest les clefs de votre serveur, doit tre sur le serveur et rester secret. nom-de-votre-client.crt : cest le certificat dun de vos clients, mettre sur le client. nom-de-votre-client.key : cest les clefs dun de vos clients, mettre sur le client et rester secret. Donc, en rsumer : Les .key doivent tre secret. Vous devez donc les garder en scurit. ca.crt doit tre install sur chaque client ainsi que sur le serveur, dans /etc/openvpn. nom-de-votre-client(.crt|.key) est a installer sur le client, dans /etc/openvpn. nom-de-votre-serveur(.crt|.key) est a installer sur le serveur, dans /etc/openvn.

Une fois cette tape effectue, il faut configurer le serveur.

Configuration du serveur (/etc/openvpn/openvpn.conf (sur le serveur))


Crez le fichier et ajoutez : proto udp dev tun ca ca.crt cert Nom-du-serveur.crt key Nom-du-serveur.key dh dh1024.pem server 10.8.0.0 255.255.255.0 push "route 192.168.0.0 255.255.255.0" push "redirect-gateway def1" client-to-client keepalive 10 120 comp-lzo user openvpn group openvpn persist-key persist-tun status openvpn-status.log verb 1 Explication : La ligne proto udp dfini quel protocole utiliser (udp ou tcp). La ligne dev tun dfini le type dinterface virtuelle crer. Les lignes ca, cert, key, dh dfini les noms de fichier utiliser pour lauthentification (noubliez pas de changer Nom-du-serveur), La ligne server 10.8.0.0 255.255.255.0 dfini ladresse du rseau virtuel. Le serveur aura lIP 10.8.0.1. La ligne push "route 192.168.0.0 255.255.255.0" installe sur le client la route du rseau sur le serveur. La ligne push "redirect-gateway def1" dfini que tout la nouvelle gateway sera le serveur VPN : en gros, tout faire passer par le serveur VPN. La ligne client-to-client permet aux clients de voir les autres clients. Vous pouvez la supprimer. La ligne comp-lzo active la compression. Les lignes user openvpn et group openvpn indiquent quel user et groupe utiliser pour le processus OpenVPN. Les lignes persist-key et persist-tun permet de rendre la connexion permanente, La ligne status openvpn-status.log permet de dfinir dans quel fichier mettre les logs. Et la ligne verb 1 indique le niveau de log souhait (de 1 9).

Rgles iptables sur le serveur


Pour que tout marche bien, vous devez installer deux rgles iptables sur votre serveur : # iptables -t nat -A POSTROUTING -s 10.8.0.0/255.255.255.0 -d ! 10.8.0.1 -j SNAT -to-source IP_SERVEUR_VPN # iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE Vous devez changer IP_SERVEUR_VPN par lIP de votre serveur.

Autoriser le forward IPv4


Pour que tout marche bien (encore) vous devez autoriser le forward IPv4. # echo 1 > /proc/sys/net/ipv4/ip_forward

Configuration du(des) client(s)


La configuration est semblable : client dev tun proto udp remote 63.97.251.68 1194 resolv-retry infinite nobind user openvpn group openvpn persist-key persist-tun ca ca.crt cert Nom-du-client.crt key Nom-du-client.key comp-lzo verb 1 Noubliez pas de changer remote 63.97.251.68 1194 : 63.97.251.68 par lIP de votre serveur (1194 est le port), et Nom-du-client par le nom de votre client.

Et pour OS X ?
Cest aussi simple. La configuration est la mme. Je vous conseille dutiliser lexcellent Tunnelblick, qui est une sorte de GUI pour OpenVPN.

On dmarre le VPN
Voil, maintenant vous pouvez dmarrer le VPN via cette commande : /etc/init.d/openvpn start, faire sur le serveur et le(s) client(s) (en premier sur le serveur de prfrence).

Tester Pour tester si tout marche, essayez tout simplement de pinguer le serveur : ping 10.8.0.1