Pour travailler avec un client, j’ai besoin de me connecter à son VPN et d’utiliser des noms de serveurs internes à son entreprise.
Ces noms peuvent être fixés avec leur IP dans mon /etc/hosts mais c’est pénible à en ajouter un ou à maintenir la liste à jour.
Je cherche donc une autre solution.
J’utilise la distribution Linux Mint (comme Ubuntu mais en mieux) et mon système utilise systemd (qu’on aime ou pas).
Il y a un nouveau resolver de nom dans systemd qui s’appelle systemd-resolved.
Exemple pour tester le resolver en ligne de commande :
resolvectl query google.fr
il me donne en résultat avec le lien réseau utilisé pour la requête.
google.fr: 142.250.179.99 -- link: wlp9s0
2a00:1450:4007:81a::2003 -- link: wlp9s0
-- Information acquired via protocol DNS in 20.7ms.
-- Data is authenticated: no; Data was acquired via local or encrypted transport: no
-- Data from: cache network
Ma connexion VPN est lancée automatiquement au démarrage de mon PC via un fichier symbolique /etc/openvpn/pfs.conf pointant sur /etc/openvpn/client/pfs.ovpn (fichier fourni par le VPN et qui contient tout ce qu’il faut).
Je vérifie que j’ai bien un fichier /etc/default/openvpn qui doit contenir une ligne AUTOSTART=”all”
Pour être sûr que cette partie est en démarrage automatique, il faut rafraîchir les scripts de lancement des connexions VPN : systemctl daemon-reload
systemctl daemon-reload
Dans le fichier pfs.ovpn, j’indique un script à lancer quand la connexion est active :
script-security 2
up /etc/openvpn/update-resolv-conf-pfs
Ensuite, je corrige le nom du VPN indiqué dans pfs.ovpn car je veux avoir en nom tunpfs pour le répérer facilement et l’utiliser ensuite :
dev tunpfs
dev-type tun
Ensuite, voici le nouveau script magique à éditer (le rendre exécutable au passage) pour adapter et avoir le DNS spécifique (10.3.0.1 dans mon cas) à un nom de domaine interne au VPN (ne pas oublier le ~ devant le nom de domaine interne) :
#!/bin/bash
/usr/bin/resolvectl dns tunpfs 10.3.0.1
/usr/bin/resolvectl domain tunpfs "~ovh.netadm.ovh"
Et je relance les VPN :
systemctl restart openvpn
Je teste des requêtes :
resolvectl query wcf-drez-1.ovh.netadm.ovh
J’obtiens son IP interne obtenue via le DNS de la connexion VPN :
wcf-drez-1.ovh.netadm.ovh: 10.3.3.8 -- link: tunpfs
-- Information acquired via protocol DNS in 23.0ms.
-- Data is authenticated: no; Data was acquired via local or encrypted transport: no
-- Data from: network