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
- seule la partie "head" est lue par resolvonf :la partie "base" est en quelque sorte contrôlée par dnsmasq
- 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
- 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