GNU/Linux >> Tutoriels Linux >  >> Linux

Comment configurer mon DNS lorsque resolv.conf est écrasé ?

Je crois que si vous voulez remplacer le serveur de noms DNS, vous ajoutez simplement une ligne similaire à celle-ci dans votre base fichier sous resolv.conf.d .

Exemple

$ sudo vim /etc/resolvconf/resolv.conf.d/base

Ensuite, mettez votre liste de serveurs de noms comme suit :

nameserver 8.8.8.8
nameserver 8.8.4.4

Enfin mettre à jour resolvconf :

$ sudo resolvconf -u

Si vous jetez un oeil à la page de manuel pour resolvconf il décrit les différents fichiers sous /etc/resolvconf/resolv.conf.d/ .

   /etc/resolvconf/resolv.conf.d/base
          File  containing  basic  resolver  information.  The lines in this 
          file are included in the resolver configuration file even when no
          interfaces are configured.

   /etc/resolvconf/resolv.conf.d/head
          File to be prepended to the dynamically generated resolver 
          configuration file.  Normally this is just a comment line.

   /etc/resolvconf/resolv.conf.d/tail
          File to be appended to the dynamically generated resolver 
          configuration file.  To append nothing, make this  an  empty  
          file.   This file is a good place to put a resolver options line 
          if one is needed, e.g.,

              options inet6

Même s'il y a un avertissement en haut du head fichier :

$ cat /etc/resolvconf/resolv.conf.d/head
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

cet avertissement est là pour que lorsque ces fichiers sont construits, l'avertissement finira par se frayer un chemin dans le résultat resolv.conf fichier que ces fichiers seront utilisés pour créer. Vous auriez donc tout aussi bien pu ajouter le nameserver lignes décrites ci-dessus pour le base fichier, au head fichier aussi.

Références

  • Persistez le serveur de noms DNS pour Ubuntu 14.04
  • Comment ajouter un serveur DNS via resolv.conf ?

Je suis également intéressé par cette question et j'ai essayé la solution proposée par @sim.

Pour le tester, j'ai mis

nameserver 8.8.8.8

en /etc/resolvconf/resolv.conf.d/base et

nameserver 8.8.4.4

en /etc/resolvconf/resolv.conf.d/head

Puis j'ai redémarré le réseau avec

sudo service network-manager restart

Le résultat est que /etc/resolv.conf ressemble

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.4.4
nameserver 127.0.1.1

et nm-tool indique que le serveur DNS est

DNS:             208.67.222.222
DNS:             208.67.220.220

qui sont celles fournies par mon routeur. Par contre creuser une adresse indique que

;; Query time: 28 msec
;; SERVER: 8.8.4.4#53(8.8.4.4)

Si j'ai raison, je conclus de tout cela que

  1. seule la partie "head" est lue par resolvonf :la partie "base" est en quelque sorte contrôlée par dnsmasq
  2. le serveur dns est en fait forcé à 8.8.4.4 quel que soit le serveur fourni par dhcp, MAIS vous perdez la mise en cache fournie par dnsmasq, puisque la requête est toujours envoyée à 8.8.4.4
  3. dnsmasq utilise toujours UNIQUEMENT le serveur DNS fourni par dhcp.

Dans l'ensemble, cela fonctionne mais je ne pense pas que ce soit le résultat recherché. Une solution plus proche, je pense, est la suivante. Modifier

sudo vim /etc/dhcp/dhclient.conf

puis ajoutez

supersede domain-name-servers 8.8.8.8;

Le résultat est le suivant :resolv.conf ne contient que 127.0.0.1, ce qui signifie que le cache dnsmasq est appelé et que nm-tool indique

DNS:             8.8.8.8

ce qui signifie que si le nom recherché n'est pas dans le cache, alors il est demandé en 8.8.8.8 et non sur le serveur fourni par dhcp.

Une autre option (peut-être meilleure) consiste à utiliser "prepend" au lieu de "supersede":de cette façon, si le nom n'est pas résolu par 8.8.8.8, la requête retombe sur l'autre serveur. En fait, nm-tool dit

DNS:             8.8.8.8    
DNS:             208.67.222.222
DNS:             208.67.220.220

J'ai découvert que vous pouvez changer les serveurs de noms qui dnsmasq utilise en ajoutant les lignes suivantes à /etc/dnsmasq.conf :

server=8.8.8.8
server=8.8.4.4

Je n'avais pas de /etc/dnsmasq.conf fichier cependant, puisqu'il est installé par le paquet dnsmasq, mais Ubuntu n'est livré qu'avec dnsmasq-base. J'ai couru sudo apt-get install dnsmasq , puis modifié /etc/dnsmasq.conf , puis sudo service dnsmasq restart et sudo service network-manager restart .

J'ai exécuté sudo tail -n 200 /var/log/syslog pour vérifier mon syslog et vérifier que dnsmasq utilisait les serveurs de noms que j'ai spécifié :

Oct 21 23:00:54 mylaptop dnsmasq[8611]: using nameserver 8.8.8.8#53
Oct 21 23:00:54 mylaptop dnsmasq[8611]: using nameserver 8.8.4.4#53

Linux
  1. Comment savoir si un fichier est téléchargé par Wget ?

  2. Comment définir les paramètres lorsque Pipe Bash Script to Bash ?

  3. Linux - Comment remplacer un serveur Vm DNS ?

  4. Comment utiliser le type de fichier dans Vim ?

  5. Comment configurer un résolveur DNS non lié sur Ubuntu 20.04

Comment configurer Raspberry Pi en tant que serveur DNS

Comment définir des serveurs de noms DNS sur Ubuntu 18.04

Comment configurer le serveur Web Lighttpd sur Ubuntu 18.04

Comment modifier resolv.conf ?

resolv.conf continue d'être écrasé lorsque dnsmasq est redémarré, ce qui interrompt dnsmasq

Comment configurer le résolveur DNS dans Fedora à l'aide du gestionnaire de réseau ?