= OpenVPN = == Installation == === Dépôt dag === L'installation d''''OpenVPN''' nécessite le dépôt '''dag'''. Il faut l'ajouter dans '''/etc/yum.repos.d'''. '''/etc/yum.repos.d/dag.repo''' {{{ [dag] name=Dag RPM Repository for Red Hat Enterprise Linux baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag gpgcheck=1 enabled=1 }}} === Installation === Tout simplement {{{ yum install openvpn }}} == Création des clés et certificats == === Copie des scripts de génération === {{{ cp -R /usr/share/doc/openvpn-2.1.4/easy-rsa/ /etc/openvpn/ cp /usr/share/doc/openvpn-2.1.4/sample-config-files/server.conf /etc/openvpn/ }}} === Dossiers et droits === {{{ cd /etc/openvpn/easy-rsa/2.0/ chmod +x clean-all build-ca build-key-server build-dh build-key whichopensslcnf pkitool }}} === Édition du fichier vars === Il faut éditer ce fichier et remplir les champs qui nous serviront à générer les clés. {{{ cd /etc/openvpn/easy-rsa/2.0/ vim vars }}} Tout à la fin du fichier, par exemple {{{ export KEY_COUNTRY="UK" export KEY_PROVINCE="Greater London" export KEY_CITY="London" export KEY_ORG="Core2" export KEY_EMAIL="root@core2.co.uk" }}} === Génération === L'argument passé à au script '''build-key-server''' détermine le nom des fichiers généré. Le '''.''' avant le '''./''' n'est pas un erreur. Il permet d'exécuter le script dans le même shell sans créer un fork. C'est utile pour ce script pour que tous les ''export''s qu'il contient soit fait dans l'environnement de l'utilisateur. {{{ . ./vars ./clean-all ./build-ca ./build-key-server server ./build-dh }}} === Copie de clés et certificats === {{{ mkdir /etc/openvpn/keys keys/ca.crt /etc/openvpn/keys/ cp keys/dh1024.pem /etc/openvpn/keys/ cp keys/server.key /etc/openvpn/keys/ }}} == Configuration du serveur OpenVPN == On va configurer le serveur pour écouter sur le port '''1987''', en utilisant les certificats et clés générés. On va également lui faire propager un route vers tout le réseau '''10.30.0.0/16''' au client. Pour faire passer le VPN à travers le tunnel SSH, il faut le configurer comme un VPN '''TCP'''. Enfin la plage d'IP qu'on va utiliser '''dans''' le VPN sera '''192.168.100.0'''. {{{ vim /etc/openvpn/server.conf }}} Exemple de '''/etc/openvpn/server/conf''' (ne sont affichées que les parties intéressantes) {{{ proto tcp dev tun ca keys/ca.crt cert keys/server.crt key keys/server.key dh keys/dh1024.pem server 192.168.100.0 255.255.255.0 push "route 10.30.0.0 255.255.0.0" user nobody group nobody }}} On peut également l'ajouter aux scripts de démarrage {{{ chkconfig openvpn start }}} == Configuration d'iptables == La configuration du serveur VPN seule ne suffit pas, il faut également faire un NAT pour tous les requêtes provenant du tunnel. Pour plus d'information sur iptables : [wiki:Documentation/Iptables Documentation » iptables] {{{ iptables -t nat -A POSTROUTING -s 192.168.100.0/255.255.255.0 -d 10.30.130.0/255.255.255.0 -o eth0 -j SNAT --to-source 10.30.130.1 iptables -t nat -A POSTROUTING -s 192.168.100.0/255.255.255.0 -o eth1 -j SNAT --to-source 10.30.1.1 }}} == Démarrage du serveur OpenVPN == Ne pas oublier de le démarrer {{{ /etc/init.d/openvpn start }}} == Configuration du client ==