====== systemd-resolved ====== La proposition ici est d'utiliser systemd-resolved. Si vous utilisez le VPN de Mycélium, nous verrons ci-dessous comment faire en sorte qu'OpenVPN fournisse à systemd-resolved le résolveur que nous préconisons. Nous verrons également comment faire en sorte que toutes les requêtes DNS effectuées sur votre système circulent vers le résolveur assigné au lien réseau VPN, et ne fuitent pas par d'autres liens réseau. Si vous souhaitez utiliser systemd-resolved, il est déconseillé de configurer vos interfaces réseau manuellement via ''/etc/network/interfaces''. En effet, ''ifup'' viendra écraser le contenu du fichier ''/etc/resolv.conf'', sans ordonner à ''systemd-resolved'' d'acquérir le résolveur DNS par DHCP. Il est donc conseillé d'utiliser [[systemd-networkd]] dans cette situation. ===== Mettre en place systemd-resolved ===== **Activer systemd-resolved :** sudo systemctl enable systemd-resolved sudo systemctl start systemd-resolved Pour que le système l'utilise, on peut faire l'une des deux manipulations qui suivent, ou bien les 2. **Faire en sorte que systemd-resolved soit utilisé en priorité, en éditant la politique de nsswitch, dans /etc/nsswitch.conf :** hosts: files resolve dns **Rediriger resolv.conf vers le résolveur local de systemd :** sudo ln -sf /run/systemd/resolve/stub-resolv.conf resolv.conf ===== OpenVPN et systemd-resolved (optionnel) ===== Si vous souhaitez acquérir les informations de résolveur DNS lors de la connexion au VPN. Pour que OpenVPN puisse interagir avec systemd-resolved via DBUS. **Installer le paquet ''openvpn-systemd-resolved'' :** sudo purge resolvconf sudo apt install openvpn-systemd-resolved **Section à insérer dans la configuration du client OpenVPN, avant la section des certificats :** ; https://github.com/jonathanio/update-systemd-resolved script-security 2 setenv PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin ; chemin correspondant au paquet debian up /etc/openvpn/update-systemd-resolved ; peut être utile en cas de déconnexion/reconnexion du VPN up-restart down /etc/openvpn/update-systemd-resolved down-pre ===== Tester ===== **Vérifier quels résolveurs sont utilisés :** resolvectl status Note : Le résolveur **doit** apparaître dans ''resolvectl status'' pour que ''resolvectl query mycelium-fai.org'' fonctionne. Démarrer le service OpenVPN, puis revérifier quel résolveur est alors utilisé. **Effectuer une requête de résolution :** resolvectl query mycelium-fai.org ===== Notes diverses ===== ''ifup'' et ''ifdown'', ou un redémarrage de l'ordinateur peuvent provoquer une réécriture du fichier ''/etc/resolv.conf'', mais le lien symbolique devrait être préservé si vous l'avez créé. Le contenu du fichier ne sera restauré par systemd-resolved que si celui-ci est sollicité via DBUS (c'est le cas si vous utilisez systemd-networkd, ou que vous utilisez le hook OpenVPN). ===== Annexe 1 : resolved.conf ===== Si systemd-resolved ne reçoit pas d'information sur les résolveurs DNS, il utilise la valeur de FallbackDNS par défaut, qui correspond à Cloudflare/Quad9/Google. Nous conseillons donc de toujours renseigner une valeur dans ''/etc/systemd/resolved.conf'', ci-dessous les résolveurs de FDN : FallbackDNS=80.67.169.12 80.67.169.40 2001:910:800::12 2001:910:800::40 systemd-resolved semble poser problème lorsque vous chercherez à résoudre des domaines appartenant à votre réseau local s'il ne s'agit pas de FQDN. Voir [[https://wiki.archlinux.org/index.php/Systemd-resolved#systemd-resolved_not_searching_the_local_domain|par ici]]. Une "solution" [[https://github.com/systemd/systemd/issues/13763#issuecomment-648645258|a été apportée]], dans le fichier de configuration de resolved, assurez-vous de la présence de la ligne suivante : ResolveUnicastSingleLabel=yes ===== Annexe 2 : fuite des requêtes DNS ===== Infos : https://github.com/jonathanio/update-systemd-resolved#dns-leakage Par défaut, les requêtes DNS fuitent et sont envoyées sur tous les liens réseau (wifi, ethernet, tun0...), la réponse acceptée étant la première reçue. Il est possible de forcer la résolution DNS du système à utiliser le résolveur préconisé par le VPN. Dans la configuration du client OpenVPN, on lui demande de router les requêtes DNS pour *tous* les domaines : dhcp-option DOMAIN-ROUTE . Dans le cas contraire où l'on a confiance dans le résolveur utilisé pour les autres liens, le comportement par défaut convient, mais il est aussi possible de forcer l'usage du résolveur assigné au lien de notre interface réseau (non VPN) en utilisant systemd-networkd : Dans la configuration de son interface réseau ''/etc/systemd/network/.network'', on ajoute à la section [Network] : [Network] Domains=. ===== Documentation complémentaire ===== * https://wiki.archlinux.org/index.php/Systemd-resolved * https://github.com/jonathanio/update-systemd-resolved : Hook pour faire utiliser systemd-resolved à OpenVPN