Configuration OpenVPN sur EdgeRouter-X

Bonjour à tous, aujourd’hui nous allons voir comment configurer un tunnel VPN client to site via OpenVPN sur le routeur EdgeRouter-X de Ubiquiti.

Ce petit routeur d’une cinquantaine d’euros permet de gérer son (ou plutôt ses) LAN(s) de manière optimale. Vous pouvez le trouver sur amazon.

Création utilisateur OpenVPN

Tout d’abord, il faut créer le compte utilisateur que vous allez utiliser pour vous connecter au VPN. Pour cela, direction d’interface CLI du routeur :

ssh admin@192.168.5.1

Puis, il faut entrer en mode configuration :

configure
set system login user utilisateurOpenVPN authentication plaintext-password MotDePasse_UtilisateurOpenVPN
set system login user utilisateurOpenVPN level operator
commit

Votre utilisateur est désormais créé, vous pouvez vérifier en saisissant la commande suivante :

show system login user

Création des certificats

Nous pouvons passer désormais à la création des ceritifcats. Pour ce faire, vous devez vous connecter en root sur le routeur :

sudo -i

Puis, nous allons dans le dossier de configuration OpenVPN que nous créons au préalable :

mkdir /config/openvpn
cd /config/openvpn

Nous commençons par créer l’autorité de certification qui nous permettra d’approuver nos certificats serveur et utilisateur.

/usr/lib/ssl/misc/CA.sh -newca

Vous devez répondre aux questions posées.

Si vous avez laissé le nom par défaut de la CA, le certificat se trouve dans le répertoire /config/openvpn/demoCA et se nomme cacert.pem

Puis, il faut créer le certificat serveur pour OpenVPN. Pour cela, nous allons créer un CSR (une demande de certificat) :

/usr/lib/ssl/misc/CA.sh -newreq

Vous devez là encore répondre aux questions.

Vous avez normalement deux fichiers qui ont été générés :

  • newkey.pem : clé privé du CSR
  • newreq.pem : CSR généré

Nous devons désormais signer le certificat serveur via la CA générée précédement :

/usr/lib/ssl/misc/CA.sh -sign

Après avoir saisie le mot de passe de la CA, votre certificat est signé et un nouveau fichier a été créé :

  • newcert.pem : certificat du serveur signé par la CA

Pour une meilleure gestion des certificats, je vous recommande de renommer vos certificats :

mv newcert.pem server.pem
mv newkey.pem server.key

Et de supprimer votre CSR qui ne sert plus à rien :

rm newreq.pem

Nous allons désormais utiliser openssl qui va déchiffrer la clé privée afin qu’OpenVPN puisse utiliser la clé sans saisir la passphrase :

openssl rsa -in server.key -out server-decrypted.key

Pour effectuer les échanges des clés de manière sécurisé, nous utilisons Diffie Hellman avec la commande suivante :

openssl dhparam -out dh2048.pem -2 2048

La génération des paramètres va prendre environs 30 minutes.

Nous allons maintenant créer le certificat de l’utilisateur qui va se connecter au VPN :

/usr/lib/ssl/misc/CA.sh -newreq

NB : Dans la partie « Common Name », saisissez le nom de l’utilisateur.

/usr/lib/ssl/misc/CA.sh -sign
mv newcert.pem utilisateurOpenVPN.pem
mv newkey.pem utilisateurOpenVPN.key
rm newreq.pem
openssl rsa -in utilisateurOpenVPN.key -out utilisateurOpenVPN-decrypted.key

Configuration routeur

Nous allons maintenant pouvoir faire la configuration du routeur pour initialiser OpenVPN.

Tout d’abord, vous devez revenir en mode « admin » pour commencer la configuration :

exit
configure

Puis, nous commençons par déclarer l’interface vtun0 en lui ajoutant une description, le mode de chiffrement :

set interfaces openvpn vtun0
set interfaces openvpn vtun0 description "OpenVPN server"
set interfaces openvpn vtun0 mode server
set interfaces openvpn vtun0 encryption aes256
set interfaces openvpn vtun0 hash sha256

On crée un réseau pour le VPN, on ajoute les routes si on souhaite inter-connecter le réseau du VPN et d’autres réseaux, et le dns du réseau :

set interfaces openvpn vtun0 server subnet 192.168.200.0/24
set interfaces openvpn vtun0 server push-route 192.168.10.0/24
set interfaces openvpn vtun0 server name-server 192.168.200.1

Les différents fichiers de configuration pour les certificats :

set interfaces openvpn vtun0 tls ca-cert-file /config/openvpn/demoCA/cacert.pem
set interfaces openvpn vtun0 tls cert-file /config/openvpn/server.pem
set interfaces openvpn vtun0 tls key-file /config/openvpn/server-decrypted.key
set interfaces openvpn vtun0 tls dh-file /config/openvpn/dh2048.pem

Enfin, les options d’OpenVPN pour son bon fonctionnement :

set interfaces openvpn vtun0 openvpn-option "--port 1194"
set interfaces openvpn vtun0 openvpn-option --tls-server
set interfaces openvpn vtun0 openvpn-option "--comp-lzo yes"
set interfaces openvpn vtun0 openvpn-option --persist-key
set interfaces openvpn vtun0 openvpn-option --persist-tun
set interfaces openvpn vtun0 openvpn-option "--keepalive 10 120"
set interfaces openvpn vtun0 openvpn-option "--user nobody"
set interfaces openvpn vtun0 openvpn-option "--group nogroup"

Il faut autoriser les flux dans le firewall, pour cela on ajoute les commandes suivantes :

set firewall name WAN_LOCAL rule 20 action accept
set firewall name WAN_LOCAL rule 20 description 'Allow OpenVPN'
set firewall name WAN_LOCAL rule 20 destination port 1194
set firewall name WAN_LOCAL rule 20 protocol udp

On active l’écoute des requêtes DNS sur l’interface OpenVPN :

set service dns forwarding listen-on vtun0

Le fichier OVPN pour le client

Pour la connexion du client, il suffit de créer le fichier .ovpn avec les infos ci-dessous :

client
dev tun
proto udp
remote  1194
cipher AES-256-CBC
auth SHA256
resolv-retry infinite
redirect-gateway def1
nobind
comp-lzo yes
persist-key
persist-tun
user nobody
group nogroup
verb 3
setenv ALLOW_PASSWORD_SAVE 0 
auth-user-pass


-----BEGIN CERTIFICATE-----

-----END CERTIFICATE-----



-----BEGIN CERTIFICATE-----

-----END CERTIFICATE-----



-----BEGIN RSA PRIVATE KEY-----

-----END RSA PRIVATE KEY-----

Pour rappel, les différents fichier que vous avez besoin pour compléter votre fichier .ovpn :

  • /config/openvpn/demoCA/cacert.pem
  • /config/openvpn/utilisateurOpenVPN.pem
  • /config/openvpn/utilisateurOpenVPN-decrypted.key

Si vous souahitez récupérer votre IP public, vous pouvez éxécuter la commade suivante :

curl http://ipconfig.io/ip

Vous pouvez vérifier votre configuration en éxécutant la commande suivante :

show interfaces openvpn

Vous pouvez désormais importer le fichier .ovpn dans votre client OpenVPN, et tester la connexion.

J’espère que l’article vous aura plu. N’hésitez pas à commenter si vous avez la moindre remarque.

A bientôt,

Fabio Pace.

2 Replies to “Configuration OpenVPN sur EdgeRouter-X”

  1. Bonjour,

    Quel débit pouvez vous atteindre avec cet équipement et cette config ?

    J’ai un vpn entre un serveur debian et un edgerouter 3 et les perfs sont déplorables (<1Mb/s)

    Merci

    1. Bonjour,

      Le débit que nous pouvons atteindre dépend bien évidement des lignes internet des deux cotés. J’ai fait quelque tests de débits :
      ADLS : Download 8,77 Mb/s | Upload : 0,83 Mb/s
      ADLS vers Fibre (200 Mb/s max) via VPN OpenVPN : Download : 7,84 Mb/s | Upload : 0,74 Mb/s

      4G : Downlaod : 25,87 Mb/s | Upload : 2,19 Mb/s
      4G vers Fibre (200 Mb/s max) via VPN OpenVPN : Download : 12,31 Mb/s | Upload : 1,26 Mb/s

      Fibre (1 Gb/s) en utilisation : Download : 182,10 Mb/s | Upload : 184,87 Mb/s
      Fibre (1 Gb/s) en utilisation vers Fibre (200 Mb/s max) via VPN OpenVPN : Download : 14,63 Mb/s | Upload : 7,07 Mb/s

      Avec toutes ces valeurs, on peut voir une moyenne entre 8 Mb/s et 15 Mb/s en fonction de la source internet. Il est vrai que l’on perd beacuoup avec deux connexions fibre (CF troisième test), mais il ne faut pas oublier que la connexion VPN permet de chiffrer les flux entre deux points. Donc il est logique que la bande passante diminue.
      Je vais essayer de mettre en place un VPN IPSEC entre deux sites pour tester les performances. Mais attention aux parametrès de ton tunnel, par exemple, vaut mieux priviégier un chiffrement avec AES en 128 bits, que 256 bits… AES128 étant encore très sécurisé et plus performant car la longueur de clé est inférieure. Pour le hashage à l’interieur du tunnel, tu peux utiliser SHA1 même s’il est déprécié du fait de sa sécurité, mais le tunnel étant déjà monté, tu peux utiliser cette fonction de hashage en toute sécurité.

      J’espère avoir répondu à tes questions, je reste disponible pour échanger davantage.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.