Comme dans beaucoup d'entreprise il n'est pas rare de voir des liens VPN dans tous les sens ou même pour nous adminsys afin de nous connecter aux différents serveurs. Je n'expliquerais pas l'utilité d'utiliser des liaisons VPN mais comment nous allons mettre tout ceci en place.
Architecture:
Serveur : eth0 connecté au net
Client VPN : eth0 connecté au web , eth1 connecté au LAN 10.10.1.254 eth1.10 : 10.10.10.254
Client dérriere le client VPN : 10.10.10.0/24
Installation de openvpn sur le serveur
- /*
- apt-get install openvpn liblzo2-2 lzop
- */
On copie
- /*
- cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0/ /etc/openvpn/keys #si le répertoire keys n'existe pas le crée .
- */
On clen les certificats et les clés existantes (si nécessaire)
- /*
- ./clean-all
- */
On crée la clée et le certificat master
- /*
- ./build-ca
- */
Il faut maintenant créer une clée et un certificat pour notre serveur VPN
- /*
- ./build-key-server server-vpn #Mettre le même common-name que vous avez mis précedemment. , le mot de passe n'est pas obligatoire.
- */
Deux fichiers ont été crées server-vpn.crt et un server-vpn.key
Passons maintenant à la configuration des clées pour le client.
- ./build-key client-vpn # Garder votre common name il sera utile plus tard (client-vpn)
On génére les paramètres Diffie-Hellman
- /*
- ./build-dh
- */
Maintenant que tout cela ets fait il faut maintenant copier les fichiers que nous venons de générer sur notre client VPN
- /*
- cp fichiers/générés clientvpn:/etc/openvpn/
- */
Ah enfin notre fichier de configuration
- /*
- cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
- gunzip server.conf.gz
- */
Configuration Serveur:
- /*
- # Serveur TCP/1194
- mode server
- proto udp
- port 1194
- dev tun
- # Cles et certificats
- ca ca.crt
- cert server-vpn.crt
- key server-vpn.key
- dh dh1024.pem
- tls-auth server-vpn.key 0
- cipher AES-256-CBC
- # Reseau
- client-to-client
- server 10.8.0.0 255.255.255.0
- keepalive 10 120
- # Securite
- user openvpn
- group openvpn
- chroot /etc/openvpn/
- persist-key
- persist-tun
- comp-lzo
- # Log
- verb 4
- mute 20
- status openvpn-status.log
- log-append /var/log/openvpn/openvpn.log
- __client-config-dir ccd
- route 10.10.0.0 255.255.255.0__
- */
La partie en gras nous permets de dire à notre serveur VPN comment atteindre le réseau distant . Pour cela il faut créer un répertoire ccd dans /etc/openvpn/ et créer un fichier avec le nom de votre common-name .
Ce fichier contient
- /*
- iroute 10.10.10.0 255.255.255.0
- */
Configuration Client
- /*
- #Configuration client
- client
- dev tun
- proto udp
- remote ip_publique_serveur 1194
- resolv-retry infinite
- nobind
- persist-key
- persist-tun
- #Clefs
- ca ca.crt
- cert client-vpn.crt
- key remote-server.key
- tls-auth client-vpn.key 1
- cipher AES-256-CBC
- pull
- comp-lzo
- verb 3
- mute 20
- */
Test de ping depuis le serveur
- /*
- # ping 10.8.0.6
- PING 10.8.0.6 (10.8.0.6) 56(84) bytes of data.
- 64 bytes from 10.8.0.6: icmp_seq=1 ttl=64 time=22.7 ms
- 64 bytes from 10.8.0.6: icmp_seq=2 ttl=64 time=23.0 ms
- ^C
- --- 10.8.0.6 ping statistics ---
- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms
- rtt min/avg/max/mdev = 22.720/22.904/23.088/0.184 ms
- # ping 10.10.10.53
- PING 10.10.10.53 (10.10.10.53) 56(84) bytes of data.
- 64 bytes from 10.10.10.53: icmp_seq=1 ttl=63 time=25.5 ms
- 64 bytes from 10.10.10.53: icmp_seq=2 ttl=63 time=23.4 ms
- ^C
- --- 10.10.10.53 ping statistics ---
- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms
- rtt min/avg/max/mdev = 23.403/24.456/25.510/1.065 ms
- */
On voit bien que nous pouvons joindre notre client VPN ainsi que les machines qui se trouvent derrière elles
![Installation openvpn :)](http://media.paperblog.fr/i/407/4074290/installation-openvpn-L-zAXBQF.jpeg)
Si vous avez ce genre d'erreur
- /*
- MULTI: bad source address from client [10.10.10.53], packet dropped
- MULTI: bad source address from client [10.10.10.53], packet dropped
- */
C'est que votre configuration au niveau des ccd n'est pas correct. Ou que le nom du fichier dans le répertoire ccd ne correspond pas au common-name.