Il y a une différence entre « utilisés » et « configurés ».
Des serveurs DNS peuvent être configurés à de multiples endroits, notamment :
- dans les gestionnaires de connexion réseau comme NetworkManager, connman, ifupdown (/etc/network/interfaces), systemd-networkd… qui se retrouvent généralement dans /etc/resolv.conf mais pas toujours
- dans la configuration des clients DHCP pour compléter ou remplacer les serveurs DNS fournis par le serveur DHCP (cf. option
prepend/supersede domain-name-servers
dans /etc/dhcp/dhclient.conf pour le paquet isc-dhcp-client)
- dans les fichier de configuration du paquet resolvconf (qui affecte /etc/resolv.conf)
- dans les fichiers de configuration des sources de résolution de nom de la libc définies dans la ligne
hosts:
de /etc/ nsswitch.conf :
- dns → /etc/resolv.conf
- tls (DNS over HTTPS, paquet libnss-tls) → /etc/nss-tls.conf
- resolve (paquet libnss-resolve) → /etc/systemd/resolved.conf, /{etc,run,usr/lib}/systemd/resolved.conf.d/*.conf
- directement dans les logiciels comme firefox (paramètres réseau > activer le DNS via HTTPS).
Quant aux serveurs DNS effectivement utilisés, ça dépend.
La plupart des programmes font appel aux fonctions de résolution de nom de la libc (getaddrinfo, gethostbyname) qui utilisent les sources définies dans /etc/nsswitch.conf, dont la plus courante est /etc/resolv.conf.
Les outils de test de résolution DNS comme dig
, host
ou nslookup
utilisent directement le fichier /etc/resolv.conf.
Les DNS configurés dans connman (qui embarque son propre relais DNS local) ne sont utilisés que si /etc/resolv.conf pointe vers 127.0.0.1 ou ::1.
Le navigateur firefox utilise les DNS over HTTPS (DoH) définis dans l’option correspondante si elle est activée.
Comme il a été dit, le serveur DNS utilisé par les programmes peut être un relais qui interroge à son tour d’autres serveurs DNS.