Ceci est une ancienne révision du document !
DNS - Système des noms de domaine
Le Domain Name System (ou DNS, système de noms de domaine) est un service permettant d'établir une correspondance entre une adresse IP et un nom de domaine.
Les réseaux informatiques sont composés d'ordinateurs qui communiquent entre eux à l'aide d'adresses numériques uniques, appelées adresses IP. Chaque adresse IP identifie un ordinateur (clients et serveurs). L'adresse numérique facilite grandement le traitement pour l'ordinateur. Or, pour un être humain, il est beaucoup plus facile de se souvenir d'une série de lettres et de mots que d'une suite de chiffres.
Le système des noms de domaine a été inventé pour pallier ce problème : il fait correspondre une adresse alphanumérique (ex : www.ubuntu-fr.org) à une adresse IP numérique (ex : 88.191.119.240). Cette correspondance – appelée résolution – s'effectue à l'intérieur d'un serveur spécialisé dédié à résoudre des noms de domaine, dit serveur DNS.
Utiliser un serveur DNS
Choix d'un serveur DNS alternatif
Voici une liste de serveurs DNS que vous pouvez librement utiliser :
Centralisé :
- Résolveurs DNS ouverts du FDN : DNS français contre la censure de l'association French Data Network
- UncensoredDNS : DNS danois contre la censure
- OpenNIC Project est une organisation qui dirige un réseau alternatif de DNS. OpenNIC est détenu et exploité par la communauté OpenNIC. L'adhésion est ouverte à tous ceux qui partagent un intérêt à garder DNS gratuit pour tous les utilisateurs. L'objectif est de vous fournir des services DNS rapides, neutres et fiables et l'accès à des domaines qui ne sont pas administrés par l'ICANN. OpenNIC offre une résolution à tous les domaines de l'ICANN ainsi que les TLDs propres à OpenNIC comme : .bit, .chan, .geek, .parody, .oss, .null…
Décentralisé :
- CoDoNS Cooperative Domain Name System
Configuration d'un DNS alternatif graphiquement
La configuration d'un DNS se fait dans les paramètres système.
- Dans la section Réseau cliquez sur l'engrenage à droite de la connexion active (ou celle dont vous souhaitez personnaliser les DNS).
- Dans l'onglet IPv4, désélectionnez DNS Automatique et entrez les adresses des serveurs DNS IPv4 de votre choix, séparés par des virgules.
- Vous pouvez en faire de même avec l'onglet IPv6 si les serveurs DNS proposent aussi des résolveurs IPv6.
On définit ainsi des DNS personnalisés pour tous son réseau local (sauf pour les appareils Android qui utilisent par défaut les DNS de Google, et les appareils iOS qui utilisent ceux d'Apple, il faudra pour ceux-ci les changer manuellement et indépendamment).
Configuration d'un DNS alternatif avec le terminal
À partir d'Ubuntu 12.04 les versions serveurs et les versions desktop d'Ubuntu utilisent resolvconf1). Les méthodes en lignes de commande sont à effectuer sur les versions serveur d'Ubuntu, pour les versions desktop il est préférable de passer par l'utilitaire graphique (voir la section Par interface graphique).
A partir d'Ubuntu 18.04 (ligne de commande)
A PARTIR d'Ubuntu 12.04 (ligne de commande)
Il faut modifier les fichiers de configuration des interfaces réseau. La modification se reportera directement par l’intermédiaire de l'utilitaire resolvconf au redémarrage du service réseau.
il faut donc modifier le fichier /etc/network/interfaces
On crée au préalable une copie :
sudo cp /etc/network/interfaces /etc/network/interfaces.copie
Puis :
sudo nano /etc/network/interfaces
Vous devez avoir un contenu du type :
/etc/network/interfaces# This file describes the network interfaces available o$ # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 91.121.0.1 netmask 255.255.255.0 network 91.121.0.0 broadcast 91.121.0.255 gateway 91.121.0.254 dns-nameservers 8.8.8.8 8.8.4.4
La ligne importante dans notre cas est la dernière ligne. Si elle n'existe pas il suffit juste de la rajouter. Ici les adresses IP des serveurs DNS public de Google 8.8.8.8 et 8.8.4.4 sont utilisées.
Ne pas oublier ensuite de relancer le service réseau :
sudo service networking restart
Gérer son propre serveur DNS
Si vous avez la gestion d'une grosse infrastructure, vous pouvez être amené à installer et administrer vous-même un serveur DNS. Voici une liste de logiciels jouant le rôle de serveur DNS installables sur Ubuntu :
- Bind9 voir comme exemple Configurer un serveur DNS Bind9 pour son poste de travail
- Dnsmasq voir comme exemple Configurer un serveur DNS pour son poste de travail ou Configurer un serveur DNS avec un serveur DHCP
Problèmes connus
Utilisation d'un serveur DNS local
Depuis Ubuntu 12.04, Network-Manager intègre Dnsmasq, ce qui provoque des perturbations dans la résolution DNS pour un réseau local reposant sur Bind9 par exemple. Le symptôme est simple, parfois l'infrastructure DNS fonctionne, parfois non. La solution ici est de désactiver Dnsmasq dans Network-Manager:
sudo nano /etc/NetworkManager/NetworkManager.conf
Et de commenter la ligne "dns=dnsmasq" de cette façon:
#dns=dnsmasq
Il faut aussi désactiver le service dnsmasq au démarrage:
sudo update-rc.d -f dnsmasq remove
et redémarrer Network-manager
sudo service network-manager restart
Vider le cache
Même en tant qu'utilisateur, ubuntu mémorise un cache DNS pour accélérer les accès aux sites. Lors d'un changement de serveur d'un site (surtout si vous administrez des sites web), ce cache peut ne pas se mettre à jour aussi vite que vous en avez besoin.
Pour le vider manuellement, lancer cette commande avec les droits d'administration2):
systemd-resolve --flush-caches
A partir de la version 20.04, la commande3) serait:
resolvectl flush-caches
La commande:
systemd-resolve --statistics
ou
resolvectl statistics
avant et après le flush peut-être intéressante pour vérifier que le Current Cache Size est passé à 0.
Voir aussi
- (en) P2P DNS for Firefox
- (en) Google public DNS peut remplacer vos DNS actuels (lien mort).
- (en) Opennic project DNS
- DNS arrive à point nommé : présentation du service DNS sur zestedesavoir