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 !