VyOS et OpenVPN client mobile

Short Tips

VyOS et OpenVPN client mobile

Vous aimez utiliser OpenVPN pour vos tunnels ? Mais vous avez un routeur/pare-feu VyOS, vers lequel vous voulez monter des tunnels depuis vos clients mobiles (ordinateur ou smartphone) ?

A l’époque j’utilisais OPNSense, qui permet de gérer assez automagiquement la PKI, ainsi que les configurations .ovpn des clients. Lorsque l’on utilise VyOS, c’est un peu plus tricky.

La configuration que je vous propose se base sur la mise en place d’un serveur OpenVPN client/serveur depuis VyOS, avec authentification TLS.

La mise en place se fait en trois étapes :

  • Générer la PKI
  • Configurer VyOS
  • Configurer OpenVPN sur votre client

Générer la PKI

La génération de la PKI est assez simple. Sur votre serveur VyOS, voici les différentes étapes (que vous pouvez retrouver ici) :

Copier le script easy-rsa où vous le souhaitez :

# mkdir /config/pki-my-custom 
# cp -r /usr/share/easy-rsa/ /config/pki-my-custom 
# cd /config/pki-my-custom

Ensuite, renommer le fichier vars.example en vars

/config/pki-my-custom # mv vars.example vars

Décommenter la ligne set_var EASYRSA_REQ_CN et mettez ce que vous souhaitez comme CommonName à votre PKI, par exemple "MyCustomPKI"

Une fois cela réalisé, vous pouvez construire votre pki avec les différentes commandes :

/config/pki-my-custom #./easyrsa init-pki 
/config/pki-my-custom #./easyrsa build-ca 
/config/pki-my-custom #./easyrsa gen-req central nopass 
/config/pki-my-custom #./easyrsa sign-req server central 
/config/pki-my-custom #./easyrsa gen-dh 
/config/pki-my-custom #./easyrsa build-client-full branch1 nopass
/config/pki-my-custom #./easyrsa revoke client1 
/config/pki-my-custom #./easyrsa gen-crl

Vous constatez alors que le CommonName de votre serveur est central, et le CommonName de votre premier client est branch1

Une fois que la PKI est entièrement construite, vous pouvez copier, ou utiliser des liens symboliques pour rendre accessible les différents fichiers à partir du dossier /config/auth, comme par exemple :

# ln -s /config/pki-my-custom/pki/ca.crt /config/auth/my-custom/ca.crt
# ln -s /config/pki-my-custom/pki/issued/central.crt /config/auth/my-custom/central.crt
# ln -s /config/pki-my-custom/pki/crl.pem /config/auth/my-custom/crl.key
# ln -s /config/pki-my-custom/pki/dh.pem /config/auth/my-custom/dh.pem
# ln -s /config/pki-my-custom/pki/private/central.key /config/auth/my-custom/central.key

Voilà, vous avez normalement fini de configuration votre PKI !

Configurer VyOS

Il vous suffit d’ajouter cette configuration dans la section interfaces :

[edit interfaces openvpn vtun1]
description MyVPN
  device-type tun
  encryption {
      cipher aes256gcm
  }
  hash sha1
  local-host MY_PUBLIC_IP
  local-port 443
  mode server
  openvpn-option "verb 4"
  persistent-tunnel
  protocol tcp-passive
  server {
      client branch1 {
          ip 10.0.200.10
      }
      push-route 192.168.10.0/24
      subnet 10.0.200.0/24
      topology subnet
  }
  tls {
      ca-cert-file /config/auth/my-custom/ca.crt
      cert-file /config/auth/my-custom/central.crt
      crl-file /config/auth/my-custom/crl.key
      dh-file /config/auth/my-custom/dh.pem
      key-file /config/auth/my-custom/central.key
  }
  use-lzo-compression

La configuration est assez simple, on peut constater l’assignation d’une IP fixe au client branch1. Le client est directement identifié grâce à son CommonName précédemment généré.

Configurer OpenVPN sur votre client

Côté client, il est nécessaire de créer un fichier .ovpn de configuration. Voici la configuration client correspondante au serveur que vous venez de déployer :

 client
 dev tun
 proto tcp-client
 remote 151.80.67.1 5224
 remote-random
 reneg-sec 0
 comp-lzo yes
 tls-client
 remote-cert-tls server
 cipher AES-256-GCM
 auth SHA1
 topology subnet
 pull
<ca>
-----BEGIN CERTIFICATE-----
PUT HERE CONTENT OF /config/auth/my-custom/ca.crt
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
PUT HERE CONTENT OF /config/pki-my-custom/pki/issued/branch1.crt
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
PUT HERE CONTENT OF /config/pki-my-custom/pki/private/branch1.crt 
-----END PRIVATE KEY-----
</key>

Vous n’avez plus qu’à importer ce profil OpenVPN dans votre client préféré OpenVPN.

Pour ma part, sous Windows :

Une fois l’import réalisé, la connexion peut être établie :

Have fun !

Laisser un commentaire

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