Comment utiliser le DNS d’un VPN pour un nom de domaine interne avec systemd ?

Quelle est la mystérieuse ingénierie qui me permet d’obtenir un serveur Linux fiable et performant, sans devoir monter la garde jour et nuit ?

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
				
			

Quelle est la mystérieuse ingénierie qui me permet d'obtenir un serveur Linux fiable et performant, sans devoir monter la garde jour et nuit ?