Christophe T.

Ingénieur système Linux

Expérience et méthodes en infrastructure Linux ou hébergements Web stables et fonctionnels.

Le marchand de sable n’a pas réussi à vous endormir ? 😩

Ne cherchez plus pendant des heures des bouts de tutoriels hasardeux ou de l’aide dans des forums pour débutants, je vous apporte une expérience (plus de 25 ans) et des méthodes en infogérance de serveurs d’hébergement web.

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

Les conseils privés de Christophe Ti

(réservé aux personnes intéressées)

Quelles sont les mystérieuses techniques que j’utilise pour mettre en œuvre un serveur Linux Debian (ou hébergement web), fiable, performant et sécurisé, sans devoir monter la garde jour et nuit ?
(pour le savoir, inscris-toi dans le formulaire ci-contre)

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 ?