Voila ce que j'ai fait sous Debian Jessie, je viens de tester l'ensemble à l'instant, tout fonctionne bien. J'ai rajouté tout ce que je connais pour améliorer la sécurité de la configuration d'openvpn. Je laisse les modérateurs editer le tuto principal.
apt-get install openvpn easy-rsa openssl iptables-persistent
Fichier de configuration côté serveur :
# /etc/openvpn/server.conf
port 1194
proto tcp
dev tun
tcp-queue-limit 131072
bcast-buffers 131072
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
cipher AES-256-CBC
keysize 256
auth SHA512
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 10.8.0.1"
keepalive 10 120
tls-auth ta.key 0
user nobody
group nogroup
persist-key
persist-tun
max-clients 100
comp-lzo
status openvpn-status.log
log-append openvpn.log
verb 3
client-config-dir ccd
route 10.10.1.0 255.255.255.0
-
tcp-queue-limit &
bcast-buffers :
permet d'améliorer les performances en augmentant la taille des buffers et de la queue-tcp, sans ces directives j'avais des erreurs dans les logs quand je naviguais sur youtube par exemple.
-
dhcp-option DNS 10.8.0.1 :
pensez à changer l'adresse du serveur DNS, dans mon cas j'ai mis le serveur local comme j'ai installé mon propre résolveur.
-
client-config-dir ccd &
route 10.10.1.0 255.255.255.0 :
Permet d’éviter certaines erreurs de routage dans certains cas spécifiques
Configuration du fowarding :
echo 1 > /proc/sys/net/ipv4/ip_forward
# /etc/sysctl.d/99-sysctl.conf
net.ipv4.ip_forward=1
Configuration du NAT :
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables-save > /etc/iptables/rules.v4
systemctl enable netfilter-persistent
Remplacer eth0 par le nom de votre interface réseau principale avec la commande
ip a (choisir celle configurée dans /etc/network/interfaces).
Configuration de la PKI :
cp -r /usr/share/easy-rsa/ /etc/openvpn
mkdir /etc/openvpn/easy-rsa/keys
# vim /etc/openvpn/easy-rsa/vars
export KEY_COUNTRY="FR"
export KEY_PROVINCE="France"
export KEY_CITY="Paris"
export KEY_ORG="Mon entreprise"
export KEY_EMAIL="bob@monsupersite.com"
export KEY_OU="IT"
export KEY_NAME="server"
openssl dhparam -out /etc/openvpn/dh2048.pem 2048
cd /etc/openvpn/easy-rsa
. ./vars
./build-ca
./build-key-server server
./build-key client1
cp /etc/openvpn/easy-rsa/keys/{server.crt,server.key,ca.crt} /etc/openvpn
cp /etc/openvpn/easy-rsa/keys/{client1.crt,client1.key} /etc/openvpn
Génération de la clé statique et du routage individuel :
cd /etc/openvpn
openvpn --genkey --secret ta.key
mkdir ccd
cat "iroute 10.10.1.0 255.255.255.0" > ccd/client1
chmod -R 777 ccd
Démarrage du service :
systemctl start openvpn@server.service
Fichier de configuration côté client :
client
dev tun
persist-tun
proto tcp
remote IP_SERVEUR 1194
resolv-retry infinite
nobind
user nobody
group nobody
persist-key
persist-tun
tls-auth ta.key 1
redirect-gateway def1
remote-cert-tls server
cipher AES-256-CBC
keysize 256
auth SHA512
comp-lzo
verb 4
<ca>
contenu du fichier ca.crt
</ca>
<cert>
contenu du fichier client1.crt
</cert>
<key>
contenu du fichier client1.key
</key>