web-dev-qa-db-fra.com

Comment puis-je inclure des lignes dans resolv.conf qui ne seront pas perdues au redémarrage?

J'ai finalement migré de 12h10 à 12.04. J'ai une dernière partie à compléter mais je suis perplexe. J'utilise Puppet sur chaque serveur et, dans le passé, j'avais inclus une adresse de serveur de noms et un nom de domaine de recherche pour le maître de marionnettes dans le fichier resolv.conf.

search puppetmaster.com
nameserver 192.168.1.XXX

Dans 12.04, resolv.conf est écrasé lors du redémarrage. Je ne peux pas utiliser d'adresse IP statique pour ceux-ci, utiliser le/etc/network/interfaces pour m'aider est donc un point vide.

# 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.0.1

Existe-t-il un moyen de résoudre le problème resolvconf dans la tête, la queue ou la base? Si c'est le cas, y a-t-il des exemples que je peux utiliser pour modifier sur mon serveur.

Toute aide est très appréciée.

166
Sam

Il est probablement préférable que votre serveur DNS puisse résoudre le problème "marionnette" à la bonne adresse, et que votre serveur DHCP distribue l'adresse du serveur de noms DNS et la liste de recherche ou, si vous avez des adresses IP statiques, quelque chose comme: les éléments suivants dans/etc/network/interfaces.

iface eth0 inet static
    address 192.168.3.3
    netmask 255.255.255.0
    gateway 192.168.3.1
    dns-search example.com
    dns-nameservers 192.168.3.45 192.168.8.10

Mais si vous voulez le faire via les fichiers de configuration de resolvconf, vous voudrez éditer /etc/resolvconf/resolv.conf.d/base. Dans ce fichier, entrez vos informations comme vous le feriez dans resolv.conf.

nameserver 192.168.1.XXX

Puis dites à resolvconf de régénérer resolv.conf.

Sudo resolvconf -u
131
tgm4883

Je pense que la réponse est de vérifier votre /etc/dhcp/dhclient.conf, c’est-à-dire de ne pas demander dns-nameservers à votre client dhcp.

Puis mettez à jour votre /etc/network/interfaces

auto eth0
iface eth0 inet dhcp
dns-search google.com
dns-nameservers dnsserverip

Ensuite, votre resolv.conf sera automatiquement configuré comme vous le souhaitez.

Ajoutez-le au dns-search, puis exécutez un /etc/init.d/networking restart (même si ce script est déconseillé, il fonctionne toujours).

35
Jamin

Ceci est probablement dû à la configuration DHCP lors de la première installation d’Ubuntu. Essayez ce processus en 3 étapes pour gérer ce problème de configuration automatique.

Premier

Modifiez la configuration de votre interface, qui se trouve dans: /etc/network/interfaces

Ajoutez cette ligne ci-dessous iface lo inet loopback:

dns-nameservers yourdns youraltdns

Comme exemple pour Google DNS, vous pouvez utiliser ceci:

dns-nameservers 8.8.8.8 8.8.4.4

Seconde

Editez votre fichier de configuration DHCP, situé à l’adresse:

/etc/dhcp/dhclient.conf

Marquez la syntaxe en tant que commentaire en utilisant # sur chaque ligne ou supprimez simplement chaque serveur de nom de requête. En 16.04, vous ne serez peut-être pas obligé de faire des changements ici.

Troisième

Redémarrez votre réseau en utilisant cette commande:

/etc/init.d/networking restart

En 16.04:

Sudo ifdown -a
Sudo ifup -a
19
astrajingga

Veuillez consulter la page de manuel de resolvconf. Vous pouvez forcer l'inclusion de certains paramètres DNS en créant par exemple /etc/resolvconf/resolv.conf.d/base:

  /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.

Il existe d'autres fichiers spéciaux (tête et queue), ils peuvent vous aider à atteindre vos objectifs.

8
roadmr

Comme de nombreuses autres réponses le signalent, il s'agit de resolvconfen cours d'installation sur votre système.

Ainsi, le meilleur moyen de conserver quelque chose dans resolv.conf qui ne sera pas perdu au redémarrage est de l'inclure dans les fichiers de configuration de resolvconf qui se trouvent dans:

/etc/resolvconf/resolv.conf.d/

Dans celui-ci, recherchez le fichier headname__. Tout ce que vous mettez ici sera écrit en haut de /etc/resolv.conf

Donc, tout ira à quelque chose comme ça:

# echo nameserver 8.8.8.8 >> /etc/resolvconf/resolv.conf.d/head
# resolvconf --enable-updates
# resolvconf -u

Pour moi, les réponses ci-dessus étaient inadéquates pour les raisons suivantes:

  • Je n'utilise pas resolvconf, juste /etc/resolv.conf.
  • Utiliser chattr +i pour verrouiller resolv.conf semble trop compliqué. J'ai besoin que Puppet soit libre de faire les changements nécessaires.
  • Si je comprends bien, éditer /etc/network/interfaces n'empêche pas resolv.conf d'être écrasé; il spécifie simplement les serveurs de noms qui doivent être écrits. Pour moi, spécifier les serveurs de noms n'était pas la question. J'essaie de définir options timeout:1 et options attempts:1 dans mon fichier resolv.conf.

Le meilleure solution que j'ai trouvé remplace le comportement par défaut de dhclient en utilisant ses points d'ancrage documentés.

Créez un nouveau fichier à /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate avec le contenu suivant:

#!/bin/sh
make_resolv_conf() {
    :
}

Ensuite, rendez le fichier exécutable:

chmod +x /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate

Désormais, lorsque dhclient est exécuté (au redémarrage ou lorsque vous exécutez manuellement Sudo ifdown -a ; Sudo ifup -a), il charge ce script nodnsupdate. Ce script remplace une fonction interne appelée make_resolv_conf() qui écraserait normalement resolv.conf et ne fera rien à la place.

Cela a fonctionné pour moi sur Ubuntu 12.04.

4
richardkmiller

Cela peut bien être une bizarrerie bizarre dans ma machine, mais quelqu'un d'autre pourrait avoir le même cas de figure.

J'ai essayé de nombreuses manières d'inclure mes serveurs de noms ISP dans /etc/resolv.conf sans succès:

  • Je les ai inclus dans /etc/network/interfaces et ai redémarré la mise en réseau. Ils ne sont pas apparus dans /etc/resolv.conf.

  • Je les ai mis explicitement dans /etc/resolv.conf, mais bien sûr, ils ont été écrasés. Ils sont apparus dans /run/resolvconf/interface/eth0.inet, mais ne l'ont jamais fait à /etc/resolv.conf.

  • J'ai essayé de configurer resolvconf pour les mises à jour dynamiques. Pas de changement.

Enfin, j'ai lu quelque part que si la machine locale (127.0.0.1) apparaît dans /etc/resolv.conf, aucun autre serveur de noms n'est inclus.

En désespoir de cause, j'ai modifié /run/resolvconf/interface/lo.named, supprimé la seule ligne qu'il contient (nameserver 127.0.0.1) et redémarré: ifdown eth0 && ifup eth0.

/etc/resolv.conf a ensuite inclus mes serveurs de noms ISP pour la première fois! J'ai exécuté service network-manager restart pour voir s'il était stable et /etc/resolv.conf inclut toujours mes serveurs de noms ISP. Redémarré juste pour être sûr et c'est toujours là mais/run/resolvconf/interface/lo.named a été réinitialisé à: nameserver 127.0.0.1.

Curieusement, le redémarrage du réseau fonctionne toujours: /etc/resolv.conf contient toujours mes serveurs de noms ISP. Je ne peux pas expliquer cela (quelqu'un peut-il?), Mais cela pourrait aider une personne coincée au même endroit.

3
user297954

ajoutez votre serveur de noms dans le fichier /etc/resolvconf/resolv.conf.d/head. Le fichier contient un message que vous avez reçu:

ce fichier devrait ressembler à ceci après avoir ajouté 8.8.8.8

root@hvnatvcc: ~ # 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
nameserver 8.8.8.8
2
HVNSweeting

Ajouter des entrées dans /etc/resolvconf/resolv.conf.d/head

echo 'search puppetmaster.com' | Sudo tee -a /etc/resolvconf/resolv.conf.d/head
echo 'nameserver 192.168.1.XXX' | Sudo tee -a /etc/resolvconf/resolv.conf.d/head

et lancez la commande suivante

Sudo resolvconf -u
1
siz

ajouter sur la dernière ligne, par exemple:

nameserver 8.8.8.8

Ouvrez un terminal et tapez

Sudo chattr +i /etc/resolv.conf

le + i veille à ce que le fichier ne soit pas réinitialisé au démarrage.

Pour annuler ce qui précède

Sudo chattr -i /etc/resolv.conf

Pour plus

man chattr
1
tanmay.01

Pour Ubuntu Server 18, Netplan est le nouvel utilitaire de configuration de la mise en réseau.

# cd /etc/netplan

Puis modifiez la saisie des adresses de serveurs de noms dans le fichier yaml (utilisez le retrait correct). Par exemple, si vous utilisez les serveurs DNS de Google:

nameservers:
    addresses: [8.8.8.8,8.8.4.4]

Pour redémarrer le service

# netplan apply

Voir https://netplan.io/

https://www.techrepublic.com/article/how-to-set-dns-nameservers-in-ubuntu-server-18-04/

1
Oscar Escamilla

Les autres solutions ne fonctionnaient pas pour moi sur mon système Fedora 20. Mon problème particulier était que la ligne "search" dans /etc/resolv.conf était en train d'être écrasée. Voici ce qui l'a corrigé. (Cela suppose que NetworkManager génère la ligne search rn.yourcompany.com et que vous souhaitiez qu'elle soit search rn.yourcompany.com yourcompany.com intnet.yourcompany.com:

1.Utilisez la commande "ifconfig" pour trouver quelle interface est intéressante:

$ ifconfig
  :
  :

em2:  <this was the one which was connected>

2.Devenez root et accédez au répertoire des périphériques réseau de configuration système:

$ Sudo su -[Sudo] 
password for youruser:
# cd /etc/sysconfig/networking/devices`
  1. Utilisez votre éditeur disponible favori pour ajouter une ligne Domain avec les domaines supplémentaires à rechercher:

DOMAIN="yourcompany.com intnet.yourcompany.com"

Enregistrez, déconnectez-vous et reconnectez-vous. NetworkManager devrait maintenant avoir la ligne \etc\resolve.conf:

search rn.yourcompany.com yourcompany.com intnet.yourcompany.com
1
CBI

J'ai trouvé cela le correctif le plus simple. Si vous avez des fichiers resolv.conf et resolvconf, ils se chevaucheront. Vous devez supprimer le fichier resolv.conf qui subit un écrasement à chaque redémarrage. Placez le serveur de noms 8.8.8.8 8.8.4.4 au bas du fichier resolvconf, puis exécutez la commande Sudo rm /etc/resolv.conf pour supprimer le fichier. Ensuite, redémarrez et tout fonctionnera.

0
Irv

Si vous utilisez DHCP, éditez /etc/dhcp/dhclient.conf pour ajouter des serveurs DNS supplémentaires:

prepend domain-name-servers 12.34.56.78, 12.34.56.79;

Le client DHCP écrase le dns-nameservers dans etc/network/interfaces et je pense aussi dans /etc/resolvconf/resolv.conf.d/base.

Cela a fonctionné pour moi sur le serveur Ubuntu 14.04.3.

Voir le Wiki Debian NetworkConfiguration pour plus de détails.

0
Kevin S. Miller

traduction anglaise:

Mon résolu. "seulement 12,4"

J'ai remarqué que si vous ajoutez le serveur de noms DNS dans des interfaces ne prenant pas le nom du serveur de résolution, merci à l'aide trouvée ici pour résoudre le problème.

http://manpages.ubuntu.com/manpages/lucid/man8/resolvconf.8.html

Pour que resolv.conf ne change pas lorsque nous modifions manuellement, faisons ceci dans le terminal:

Sudo resolvconf –disable-updates

après:

Sudo resolvconf -a eth0 # or your network Interfas

puis éditez manuellement /run/resolvconf/resolv.conf

ajouter un maximum de deux serveurs DNS. merci P.S. n'oubliez pas de redémarrer:

Sudo /etc/init.d/networking restart

Texte d'origine:

solo ubuntu 12.4

Mi solucion.

Il voit si les serveurs de noms de serveurs et leurs interfaces ne sont pas pris en compte par les serveurs

Gracias à l'ayuda encontrada en esta pagina il resuelto el problema.

http://manpages.ubuntu.com/manpages/lucid/man8/resolvconf.8.html

Par ha haque que resolv.conf pas cambie avec la commande manuelle doit être effectuée dans le terminal:

Sudo resolvconf –disable-updates

despues:

Sudo resolvconf -a eth0 # o tu interfas de red

luego editamos manualmente /run/resolvconf/resolv.conf

agregando un maximo de 2 serveurs DNS. saludos P.D. aucun olvidar reiniciar:

Sudo /etc/init.d/networking restart
0
enlinea777