Installation et configuration du serveur et du client OpenVPN sur Debian 7
Cet article explique comment obtenir la connectivité IPv6 sur OpenVPN à l'aide de Debian Linux. Le processus a été testé sur Debian 7 sur un VPS KVM avec une connectivité IPv6 comme serveur et un bureau Debian 7. Les commandes doivent être exécutées en tant que root.
Qu’est-ce qu’OpenVPN ?
OpenVPN est un programme VPN qui utilise SSL/TLS pour créer des connexions VPN sécurisées et cryptées, afin d'acheminer votre trafic Internet, empêchant ainsi la surveillance. Open VPN est hautement capable de traverser de manière transparente les pare-feu. En fait, si la situation l'exige, vous pouvez l'exécuter sur le même port TCP que HTTPS (443), rendant le trafic indiscernable et donc pratiquement impossible à bloquer.
OpenVPN peut utiliser diverses méthodes telles que des clés secrètes pré-partagées, des certificats ou des noms d'utilisateur/mots de passe, pour permettre aux clients de s'authentifier auprès du serveur. OpenVPN utilise le protocole OpenSSL et implémente de nombreuses fonctionnalités de sécurité et de contrôle telles que l'authentification par défi-réponse, la capacité d'authentification unique, les fonctionnalités d'équilibrage de charge et de basculement et la prise en charge de plusieurs démons.
Pourquoi utiliser OpenVPN ?
Pensez aux communications sécurisées – pensez à OpenVPN. Si vous ne voulez pas que quiconque espionne votre trafic Internet, utilisez OpenVPN pour acheminer tout votre trafic via un tunnel sécurisé hautement crypté.
Ceci est particulièrement important lors de la connexion aux réseaux WIFI publics dans les aéroports et autres lieux. Vous ne pouvez jamais être sûr de savoir qui espionne votre trafic. Vous pouvez canaliser votre trafic via votre propre serveur OpenVPN pour empêcher la surveillance.
Si vous résidez dans l'un des pays qui surveillent régulièrement tout votre trafic et bloquent les sites Web à volonté, vous pouvez utiliser OpenVPN sur le port TCP 443, pour le rendre impossible à distinguer du trafic HTTPS. Vous pouvez même combiner OpenVPN avec d'autres stratégies de sécurité, comme le tunneling de votre trafic OpenVPN via un tunnel SSL, pour vaincre les techniques d'inspection approfondie des paquets qui pourraient identifier les signatures OpenVPN.
Configuration système requise
OpenVPN nécessite des exigences très minimales pour fonctionner. Un système avec 64 Mo de RAM et 1 Go d'espace disque dur est suffisant pour exécuter OpenVPN. OpenVPN fonctionne sur presque tous les systèmes d'exploitation courants.
Installation et configuration d'OpenVPN sur Debian 7
Installer OpenVPN sur le serveur maître
Exécutez la commande suivante pour installer OpenVPN.
# apt-get install openvpn
Par défaut, les scripts easy-rsa sont installés dans le répertoire « /usr/share/easy-rsa/ ». Nous devons donc copier ces scripts à l'emplacement souhaité, c'est-à-dire /root/easy-rsa.
# mkdir /root/easy-rsa
cp -prv /usr/share/doc/openvpn/examples/easy-rsa/2.0 /root/easy-rsa
Générer un certificat CA et une clé CA
Ouvrez le fichier 'vars' et apportez les modifications suivantes, mais avant d'apporter des modifications, je vous suggère de faire une sauvegarde du fichier d'origine.
# cp vars{,.orig}
À l’aide de votre éditeur de texte, configurez les valeurs par défaut pour easy-rsa. Par exemple.
KEY_SIZE=4096
KEY_COUNTRY="IN"
KEY_PROVINCE="UP"
KEY_CITY="Noida"
KEY_ORG="Home"
KEY_EMAIL="[email "
Ici, j'utilise une clé 4096 bits. Vous pouvez utiliser une clé à bits 1024, 2048,4096 ou 8192 selon vos besoins.
Exportez les valeurs par défaut en exécutant la commande.
# source ./vars
Nettoyez tous les certificats générés précédemment.
./clean-all
Ensuite, exécutez la commande suivante pour générer le certificat CA et la clé CA.
# ./build-ca
Générez le certificat du serveur en exécutant la commande. Remplacez le « nom du serveur » par votre nom de serveur.
# ./build-key-server server-name
Générez le certificat Diffie Hellman PEM.
# ./build-dh
Générez le certificat client. Remplacez le « nom du client » par votre nom de client.
# ./build-key client-name
Générez le code HMAC.
# openvpn --genkey --secret /root/easy-rsa/keys/ta.key
Copiez les certificats sur les machines client et serveur comme suit.
- Assurez-vous que le ca.crt est présent à la fois sur le client et sur le serveur.
- La clé ca.key doit se trouver sur le client.
- Le serveur nécessite server.crt, dh4096.pem, server.key et ta.key.
- client.crt, client.key et ta.key doivent être sur le client.
Pour configurer les clés et les certificats sur le serveur, exécutez les commandes.
# mkdir -p /etc/openvpn/certs
cp -pv /root/easy-rsa/keys/{ca.{crt,key},server-name.{crt,key},ta.key,dh4096.pem} /etc/openvpn/certs/
Configuration du serveur OpenVPN
Vous devez maintenant configurer le serveur OpenVPN. Ouvrez le fichier « /etc/openvpn/server.conf ». Veuillez apporter les modifications comme décrit ci-dessous.
script security 3 system
port 1194
proto udp
dev tap
ca /etc/openvpn/certs/ca.crt
cert /etc/openvpn/certs/server-name.crt
key /etc/openvpn/certs/server-name.key
dh /etc/openvpn/certs/dh4096.pem
tls-auth /etc/openvpn/certs/ta.key 0
server 192.168.88.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 1800 4000
cipher DES-EDE3-CBC # Triple-DES
comp-lzo
max-clients 10
user nobody
group nogroup
persist-key
persist-tun
#log openvpn.log
#status openvpn-status.log
verb 5
mute 20
Activez le transfert IP sur le serveur.
# echo 1 > /proc/sys/net/ipv4/ip_forward
Exécutez la commande suivante pour configurer OpenVPN pour qu'il démarre au démarrage.
# update-rc.d -f openvpn defaults
Démarrez le service OpenVPN.
# service openvpn restart
Installer OpenVPN sur le client
Exécutez la commande suivante pour installer OpenVPN sur la machine client.
# apt-get install openvpn
À l'aide d'un éditeur de texte, configurez la configuration du client OpenVPN dans « /etc/openvpn/client.conf », sur le client. Un exemple de configuration est le suivant :
script security 3 system
client
remote vpn_server_ip
ca /etc/openvpn/certs/ca.crt
cert /etc/openvpn/certs/client.crt
key /etc/openvpn/certs/client.key
cipher DES-EDE3-CBC
comp-lzo yes
dev tap
proto udp
tls-auth /etc/openvpn/certs/ta.key 1
nobind
auth-nocache
persist-key
persist-tun
user nobody
group nogroup
Exécutez la commande suivante pour configurer OpenVPN pour qu'il démarre au démarrage.
# update-rc.d -f openvpn defaults
Démarrez le service OpenVPN sur le client.
# service openvpn restart
Une fois que vous êtes convaincu qu'OpenVPN fonctionne bien sur IPv4, voici comment faire fonctionner IPv6 sur OpenVPN.
Faire fonctionner IPv6 avec OpenVPN sur le serveur
Ajoutez les lignes suivantes à la fin du fichier de configuration du serveur « /etc/openvpn/server.conf ».
client-connect /etc/openvpn/client-connect.sh
client-disconnect /etc/openvpn/client-disconnect.sh
Ces deux scripts construisent/détruisent le tunnel IPv6 à chaque fois qu'un client se connecte/déconnecte.
Voici le contenu de client-connect.sh.
#!/bin/bash
BASERANGE="2a00:dd80:003d:000c"
ifconfig $dev up
ifconfig $dev add ${BASERANGE}:1001::1/64
ip -6 neigh add proxy 2a00:dd80:003d:000c:1001::2 dev eth0
exit 0
Mon hébergeur m'attribue des adresses IPV6 du bloc 2a00:dd80:003d:000c::/64. Par conséquent, j'utilise
2a00:dd80:003d:000c comme BASERANGE. Modifiez cette valeur selon ce que votre hébergeur vous a attribué.
Chaque fois qu'un client se connecte à OpenVPN, ce script attribue l'adresse 2a00:dd80:003d:000c:1001::1 comme adresse IPV6 du tap0< interface du serveur.
La dernière ligne configure Neighbour Discovery pour notre tunnel. J'ai ajouté l'adresse IPv6 de la connexion tap0 côté client comme adresse proxy.
Voici le contenu de client-disconnect.sh.
#!/bin/bash
BASERANGE="2a00:dd80:003d:000c"
/sbin/ip -6 addr del ${BASERANGE}::1/64 dev $dev
exit 0
Cela supprime simplement l'adresse du tunnel IPv6 du serveur, lorsque le client se déconnecte. Modifiez la valeur de BASERANGE selon vos besoins.
Rendre les scripts exécutables.
# chmod 700 /etc/openvpn/client-connect.sh
chmod 700 /etc/openvpn/client-disconnect.sh
Ajoutez les entrées suivantes à « /etc/rc.local » (vous pouvez également modifier les sysctls appropriés dans /etc/sysctl.conf).
echo 1 >/proc/sys/net/ipv6/conf/all/proxy_ndp
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
/etc/init.d/firewall stop && /etc/init.d/firewall start
Ces entrées activent la découverte et le transfert de voisin. J'ai également ajouté un pare-feu.
Créez « /etc/init.d/firewall » et insérez le contenu suivant.
#!/bin/sh
description: Firewall
IPT=/sbin/iptables
IPT6=/sbin/ip6tables
case "$1" in
start)
$IPT -F INPUT
$IPT -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
$IPT -A INPUT -i eth0 -p icmp -j ACCEPT
$IPT -A INPUT -i eth0 -p udp --dport 1194 -j ACCEPT
$IPT -A INPUT -i tap+ -j ACCEPT
$IPT -A FORWARD -i tap+ -j ACCEPT
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -t nat -F POSTROUTING
$IPT -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
$IPT -A INPUT -i eth0 -j DROP
$IPT6 -F INPUT
$IPT6 -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT6 -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
$IPT6 -A INPUT -i eth0 -p icmpv6 -j ACCEPT
$IPT6 -A FORWARD -s 2a00:dd80:003d:000c::/64 -i tap0 -o eth0 -j ACCEPT
$IPT6 -A INPUT -i eth0 -j DROP
exit 0
;;
stop)
$IPT -F
$IPT6 -F
exit 0
;;
*)
echo "Usage: /etc/init.d/firewall {start|stop}"
exit 1
;;
esac
Exécutez '/etc/rc.local' et démarrez le pare-feu.
# sh /etc/rc.local
Ceci termine les modifications côté serveur.
Faire fonctionner IPv6 avec OpenVPN sur le client
Ajoutez ce qui suit comme dernières lignes de votre fichier de configuration client « /etc/openvpn/client.conf ».
# create the ipv6 tunnel
up /etc/openvpn/up.sh
down /etc/openvpn/down.sh
need this so when the client disconnects it tells the server
explicit-exit-notify
Les scripts up et down construisent/détruisent les points de terminaison du client IPV6 de la connexion client tap0 chaque fois qu'un client se connecte/se déconnecte du serveur OpenVPN.
Voici le contenu de up.sh.
#!/bin/bash
IPV6BASE="2a00:dd80:3d:c"
ifconfig $dev up
ifconfig $dev add ${IPV6BASE}:1001::2/64
ip -6 route add default via ${IPV6BASE}:1001::1
exit 0
Le script attribue l'adresse IPV6 2a00:dd80:3d:c:1001::2 comme adresse IPV6 du client et définit la route IPV6 par défaut via le serveur.
Modifiez IPV6BASE pour qu'il soit identique à BASERANGE dans la configuration du serveur.
Voici le contenu de down.sh.
#!/bin/bash
IPV6BASE="2a00:dd80:3d:c"
/sbin/ip -6 addr del ${IPV6BASE}::2/64 dev $dev
/sbin/ip link set dev $dev down
/sbin/ip route del ::/0 via ${IPV6BASE}::1
exit 0
Cela supprime simplement l'adresse IPV6 du client et détruit la route IPV6 lorsque le client se déconnecte du serveur.
Modifiez IPV6BASE pour qu'il soit identique à BASERANGE dans la configuration du serveur et rendez le script exécutable.
# chmod 700 /etc/openvpn/up.sh
chmod 700 /etc/openvpn/down.sh
Facultativement, modifiez « /etc/resolv.conf » et ajoutez les serveurs de noms IPV6 de Google pour la résolution DNS.
nameserver 2001:4860:4860::8888
nameserver 2001:4860:4860::8844
Redémarrez openvpn sur le serveur, puis connectez-vous à celui-ci depuis le client. Vous devriez être connecté. Visitez test-ipv6.com pour voir que votre connectivité IPV6 sur OpenVPN fonctionne.
Liens de référence
Page d'accueil d'OpenVPN
Source : Stavrovski