La plupart des informations que je vois en ligne demandent à être modifiées /etc/resolv.conf
, mais toutes les modifications que je fais sont simplement annulées.
$ cat /etc/resolv.conf
# 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 127.0.1.1
Il semble que 127.0.1.1 soit une instance locale de dnsmasq
. Les dnsmasq
docs disent d'éditer /etc/resolv.conf
. J'ai essayé de mettre des serveurs de noms personnalisés dans /etc/resolv.conf.d/base
, mais les modifications ne sont pas apparues /etc/resolv.conf
après l'exécution sudo resolvconf -u
.
Pour votre information, je ne souhaite pas modifier le DNS sur chaque connexion, je souhaite définir les paramètres DNS par défaut à utiliser pour toutes les connexions, sauf indication contraire.
MISE À JOUR:
J'ai répondu à cette question moi-même: https://unix.stackexchange.com/a/163506/67024
Je pense que c'est la meilleure solution depuis:
- Ça marche.
- Il nécessite le moins de changements possible et
- Il fonctionne toujours avec le cache DNS de Dnsmasq, plutôt que de le contourner.
dns=none
dans/etc/NetworkManager/NetworkManager.conf
(voir les détails dans ma réponse ci - dessous).Réponses:
Je crois que si vous souhaitez remplacer le serveur de noms DNS, vous ajoutez simplement une ligne similaire à celle-ci dans votre
base
fichier sousresolv.conf.d
.Exemple
Ensuite, mettez votre liste de serveurs de noms comme suit:
Enfin mettre à jour
resolvconf
:Si vous consultez la page de manuel, vous y trouverez une
resolvconf
description des différents fichiers/etc/resolvconf/resolv.conf.d/
.Même s'il y a un avertissement en haut du
head
fichier:cet avertissement existe afin que, lorsque ces fichiers sont créés, il finisse par se retrouver dans le
resolv.conf
fichier résultant que ces fichiers seront utilisés pour créer. Ainsi, vous auriez tout aussi bien pu ajouter lesnameserver
lignes décrites ci-dessus pour lebase
fichier, auhead
fichier également.Références
la source
base
et coururesolvconf -u
, les serveurs de noms n'ont pas été mis dans resolv.conf - quand j'ai mis les serveurs de noms danshead
, ils étaient/run/resolvconf/interface/NetworkManager
nslookup google.com
et la première adresse IP de la liste devrait être votre nouveau serveur de noms, sinon vous vous êtes trompé/etc/resolvconf/resolv.conf.d/head
uniquement, pas avecbase
. Confirmé avecnslookup google.com
.resolvconf
installé. Vous pouvez l'installer en le faisantsudo apt-get install resolvconf
.Je suis également intéressé par cette question et j'ai essayé la solution proposée par @sim.
Pour le tester, je mets
dans
/etc/resolvconf/resolv.conf.d/base
etdans
/etc/resolvconf/resolv.conf.d/head
Puis j'ai redémarré le réseau avec
Le résultat est que
/etc/resolv.conf
ressembleet
nm-tool
déclare que le serveur de dn sontquels sont ceux fournis par mon routeur. D'autre part, le fait de chercher une adresse indique que
Si j'ai raison, je conclus de tout cela que
Globalement, cela fonctionne, mais je ne pense pas que ce soit le résultat escompté. Je pense qu'une solution plus proche est la suivante. Modifier
puis ajouter
Le résultat est le suivant: resolv.conf contient uniquement 127.0.0.1, ce qui signifie que le cache Dnsmasq est appelé et que nm-tool indique
ce qui signifie que si le nom recherché n'est pas dans le cache, il est demandé à 8.8.8.8 et non au serveur fourni par dhcp.
Une autre option (peut-être meilleure) consiste à utiliser "prepend" au lieu de "Supersede": de cette manière, 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
la source
J'ai découvert que vous pouvez modifier les serveurs de noms
dnsmasq
utilisés en ajoutant les lignes suivantes/etc/dnsmasq.conf
:Je n'avais cependant pas de
/etc/dnsmasq.conf
fichier, puisqu'il est installé par le paquet dnsmasq, mais Ubuntu est uniquement fourni avec dnsmasq-base. J'ai courusudo apt-get install dnsmasq
, puis édité/etc/dnsmasq.conf
, puissudo service dnsmasq restart
etsudo service network-manager restart
.Je suis allé
sudo tail -n 200 /var/log/syslog
vérifier mon syslog et vérifier qu'ildnsmasq
utilisait les serveurs de noms que j'ai spécifiés:la source
sudo service network-manager restart
)Pour les situations IP statiques, le Guide du serveur Ubuntu vous invite à modifier le fichier / etc / network / interfaces, qui peut ressembler à ceci:
Vous modifiez les adresses IP 192.168.3.45 192.168.8.10 pour celles que vous voulez, comme 8.8.8.8
https://help.ubuntu.com/14.04/serverguide/serverguide.pdf Page 38
la source
ifdown eth0; ifup eth0
.L'ouvrir
Ensuite, sélectionnez soit WiFi, soit Ethernet, soit ce que vous utilisez, puis cliquez sur Modifier. Vous aurez ceci:
Sélectionnez ipv4 dans les onglets
Entrez votre nom DNS ci-dessous et enregistrez-le.
Vous avez terminé
la source
sudo service network-manager restart
, attendez un peu, vérifiez avecnmcli d list | grep 'DNS\|IP-IFACE'
. Et cinglez votre client interne par son nom.Une solution de contournement rapide et incorrecte qui n'a pas encore été mentionnée consiste à définir l'indicateur immuable sur le
resolv.conf
fichier juste après l'avoir modifié.Ajoutez ceci et enregistrez:
Ensuite:
Cela devrait faire l'affaire. Je le fais aussi sur mon système.
la source
Configuration DNS sous Linux
L' utilisation du DNS sur linux est fait sur un ensemble de routines dans la bibliothèque C qui donnent accès au nom de domaine Internet (DNS). Le fichier de configuration du résolveur (
resolv.conf
) contient des informations lues par les routines du résolveur lors de leur premier appel par un processus. En bref, chaque processus demandant au DNS lira/etc/resolv.conf
la bibliothèque. Le NSS est superposé à cela et est configuré par/etc/nsswitch.conf
.Les configurations Linux DNS sont situées dans le fichier
/etc/resolv.conf
MAIS il existe un certain nombre de programmes / services qui souhaitent gérer et gérer automatiquement le fichier de configuration DNS/etc/resolv.conf
. Dans certaines situations, vous souhaiterez peut-être gérer ce fichier vous-même. Chaque programme / service gérant le DNS a ses propres fichiers de configuration tels que/etc/dnsmasq.conf
(pour le service dnsmasq) et ajoute la configuration DNS à la modification de la connexion et / ou à d'autres événements ... une solution rapide consiste à verrouiller le fichier de configuration DNS,chattr +i /etc/resolv.conf
mais cela n'est pas recommandé. dans certains cas, une meilleure solution consiste à configurer correctement tous les programmes / services utilisant le DNS, comme (dnsmasq / network-manager / resolvconf / etc.)Reprendre le contrôle du DNS
Voici une liste exhaustive des configurations permettant de récupérer le contrôle de resolv.conf et d'éviter de l'écraser ( comment désactiver / configurer le DNS depuis un emplacement autre que resolv.conf ). Notez que resolvconf est un programme indépendant de resolv.conf, également En fonction de votre système / configuration, il est possible que vous n'ayez pas un ou plusieurs des programmes listés ici.
1. Resolvconf:
Fichiers de configuration
Mettre à jour la configuration
Désactiver resolvconf
2. Service Dnsmasq:
Fichiers de configuration
Mettre à jour la configuration
3. Gestionnaire de réseau:
Fichiers de configuration
Désactiver le DNS
Activer le DNS
Utiliser le service résolu
Utilisez resolvconf
Mettre à jour la configuration
4. Interfaces réseau:
Fichiers de configuration
Mettre à jour la configuration
5. Client DHCP:
Fichiers de configuration
Mettre à jour la configuration
6. Service Rdnssd:
Désactiver rdnssd
7. Service résolu:
Désactiver résolu
8. Netconfig:
Fichiers de configuration
Désactiver netconfig
Mettre à jour la configuration
Configuration du serveur DNS
Exemple de
/etc/resolv.conf
configurationla source
Mon problème était un peu différent, je voulais redéfinir les serveurs DNS de mes routeurs. J'ai trouvé ce lien sur Ubuntu: https://wiki.ubuntu.com/OverrideDNSServers
Il dit: Si vous souhaitez remplacer les paramètres DNS fournis par un serveur DHCP, ouvrez
et ajoutez la ligne suivante:
remplacer des
<dns_ip_address*>
éléments avec le contenu approprié.la source
dhcp3
dossier? J'ai Xubuntu 17.10, a-t-il été déplacé/etc/dhcp
simplement?Peut-être qu'il me manque quelque chose, mais selon les instructions de configuration disponibles à l' adresse https://help.ubuntu.com/14.04/serverguide/network-configuration.html, vous ne pouvez mettre à jour que ce qui suit. Je ne suis pas en train d'exécuter un proxy - juste une machine derrière un pare-feu et un DNS local (l'exemple montre Googles, mais réglez-le sur ce dont vous avez besoin).
Défaut:
MIS À JOUR:
Redémarrez, si vous le pouvez.
la source
Essayez d'ajouter
dns-nameservers XXX.XXX.XXX.X
dans votre/etc/networking/interfaces
fichier.la source
Certaines des réponses ici fonctionnent très bien. Cependant je ne suis pas heureux avec le fait que je dois effectuer manuellement les fichiers de configuration juste pour définir le « bon »
DNS
que je l' ai déjà je reçois plusDHCP
avecNetworkManager
.J'ai creusé un peu et j'ai remarqué que le
/etc/resolv.conf
fichier était en fait un lien pointant vers/run/systemd/resolve/stub-resolv.conf
. Après quelques essais, il apparaît que ce/run/systemd/resolve/
répertoire contient un autre fichier nomméresolv.conf
contenant déjà les paramètres que vous avez reçusDHCP
. Ainsi, au lieu d'avoir à écraser / créer manuellement les fichiers de configuration/etc/
, vous pouvez simplement créer un nouveau lien/etc/resolv.conf
pour pointer vers le/run/systemd/resolve/resolv.conf
fichier et tout devrait bien se passer:Vous devriez maintenant pouvoir modifier les paramètres, même à partir du gestionnaire de réseau dans Gnome. :)
Vous ne savez pas si cela fonctionnera sur les versions antérieures d'ubuntu, mais sur Ubuntu 17.10.
la source
systemd-resolve --flush-cache
le fichier lié d'origine est apparemment coupé, la réponse ci-dessus rétablit la fonctionnalité d'origineEDIT MAI 6,2016
J'ai écrit un script pour mettre à jour tous les paramètres des connexions système du
/etc/Network-Manager/system-connections/
répertoire. L'interface graphique que vous utilisez pour modifier des connexions individuelles modifie un fichier particulier de ce répertoire. Le script met à jour tous les fichiers - il recherche simplement ceux qui n'ont pas défini DNS avec grep et le définit avec awk.Puisque l'accès à ces fichiers nécessite un
sudo
accès, exécutez ce script avecsudo
puis - redémarrez le gestionnaire de réseauScript en action:
POSTE ORIGINAL Certains utilisateurs ont souligné ici que le DNS est contrôlé par
dnsmasq
. C'est vraiment vrai. Je l' ai fait face à un problème un peu plus petite, où peu importe comment je changéhead
oubody
dans/etc/resolvconf/resolv.conf.d
, mon ordinateur n'a pas pu accéder réellement interné par nom de domaine - ne travaillant qu'avec des adresses IP.Ce que j'ai fait est d'éditer le
/etc/NetworkManager/NetworkManager.conf
fichier. A l' origine, il a dit ,dns=dnsmasq
mais je l' ai changé:dns=208.67.222.222
. Bien que cette façon,nm-tool
ne mentionne pas 208.67.222.222, j'étais toujours en mesure d'utiliser des noms de domaine, et pas seulement les adresses IP.Voici à quoi
NetworkManager.conf
ressemble mon fichier:REMARQUE: pour plus de détails sur mon problème et cette solution, reportez-vous à mon message sur askubuntu.com .
MISE À JOUR # 1
À mon retour de l'université aujourd'hui, j'ai découvert que je ne pouvais pas me connecter à mon réseau WiFi domestique. J'ai lu un peu dessus
man NetworkManager.conf
et il s'avère quedns=
in[main]
est en fait une ligne pour les plug-ins, donc linedns=dnsmasq
est en train d'ajouter le plug-in dnsmasq au NetworkManager, apparemment.Donc, ma solution fonctionnait toujours, mais pas comme je l'avais prévu. Voici un extrait de la page de manuel:
Donc, en paramétrant,
dns=208.67.222.222
j'ai peut-être, en gros, empêché NetworkManager d'utiliser ce plug-in, qui utiliserait autrement le serveur DNS local (qui apparemment ne fonctionne pas).la source
Il y a deux méthodes
Méthode 1
Le serveur DNS à utiliser peut être modifié en mettant à jour le
head
fichier sousresolv.conf.d
puis courir
Ce qui précède va générer un
resolv.conf
fichier générique dans le/etc
répertoire. Toutes vos demandes de résolution seront envoyées au serveur de noms susmentionné. RésoluCependant, cela a des implications. Lorsque vous utilisez
resolvconf
pour interroger directement les1.1.1.1
résolutions d'adresse, la puissance de la mise en cache fournie par Dnsmasq a disparu. Chaque demande ira à1.1.1.1
Méthode 2
Si vous ne voulez pas que ce qui précède se produise et que vous utilisiez dnsmasq pour les résolutions DNS, reportez - vous à cette réponse. La réponse est simplement décrite ici.
Ajoutez le contenu suivant dans le
/etc/dnsmasq.conf
fichier.Puis redémarrez le service Dnsmasq
Les choses vont bien. Résolu
la source
Le moyen facile de changer de DNS:
Si des problèmes surviennent, installez
nano
:puis ..
dns-nameservers
dns-nameservers 199.85.126.10 199.85.127.10
J'espère que c'est la meilleure façon, je l'ai fait comme ça sur un VPS en passant.
la source
sur la racine:
dns=dnsmasq
sur/etc/NetworkManager/NetworkManager.conf
supersede domain-name-servers 4.2.2.1,4.2.2.3,4.2.2.5,4.2.2.4,4.2.2.1,4.2.2.2;
à la fin de/etc/dhcp/dhclient.conf
sudo service network-manager restart
Les modifications suivantes sont apportées comme suit:
Attendez 7/10 secondes pour terminer le processus de redémarrage, vérifiez votre configuration avec "nslookup nist.gov". Fonctionne bien sur Ubuntu LTS 14.04.
la source
NB: Comme la plupart des réponses, celle-ci suppose l'utilisation de NetworkManager. Cependant, contrairement à la plupart des autres réponses, cela ne suppose pas l’utilisation de
resolvconf
,dhclient
ni autre chose - prenez garde qu’elles puissent prendre le relais (voir mise à jour).Compte tenu du nombre de points de vue sur cette question, il est assez incroyable que cette solution à 8 caractères n'ait pas encore été publiée: selon
man NetworkManager.conf
,Donc ajouter
dans la
[main]
section/etc/NetworkManager/NetworkManager.conf
puis redémarrez NetworkManager et il ne sera plus modifié/etc/resolv.conf
.Notez que ce paramètre
rc-manager=unmanaged
doit être équivalent àdns=none
, et que le paramétragerc-manager=symlink
associé à/etc/resolv.conf
un lien symbolique peut être une meilleure idée (lire la page de manuel mentionnée ci-dessus).Mise à jour :
Après que NetworkManager ait cessé d'écraser
/etc/resolv.conf
, j'ai pensé qu'ildhcpcd
était déjà remplacé/etc/resolv.conf
par un fichier vide inutile au démarrage. La page de manuel dedhcpcd.conf
aidé, il suffit d'ajouterdans ton
dhcpcd.conf
(le mien est dedans/etc/dhcpcd.conf
).la source
Sur mon serveur centos7 Linux, la meilleure façon de changer cette option était d'utiliser
commande qui n'est suggérée dans aucune réponse ici. Vous pouvez modifier les serveurs de noms dans cet outil. Lorsque vous modifiez les options de networkmanager à partir de cet utilitaire, elles sont automatiquement appliquéesnmtui
/etc/resolv.conf
après le redémarrage. Ici vous pouvez trouver plus d'informations .la source