Comment rendre permanente l'adresse du serveur de noms dans /etc/resolv.conf?

14

Je ne peux pas conserver l'adresse du serveur de noms que j'ai définie via /etc/resolv.conf. Chaque fois que je définis la valeur, le gestionnaire de réseau la remplace avec la passerelle par défaut au redémarrage.

Comment le régler correctement?

Je préférerais un autre moyen que de changer de serveur de noms dans le routeur.

Ashildr
la source
Vous devez le changer avec le NetworkManager(comme il est indiqué sur la première ligne). Ce fichier est re-généré à chaque démarrage par le NetworkManager. Cela dépend de votre distribution Linux (que vous n'avez pas mentionnée) comment y accéder NetworkManager.
Rik

Réponses:

13

Ça dépend. Veuillez lire jusqu'à la fin.

Si vous n'avez pas installé le package resolvconf , alors c'est simple: après l'avoir changé comme vous le souhaitez, lancez la commande

 sudo chattr +i /etc/resolv.conf

La commande modifie les attributs du fichier, ce qui en fait immutable (l'option + i).

Cependant, si vous avez installé le package resolvconf, le fichier /etc/resolv.conf peut être transformé en lien symbolique,

 # file /etc/resolv.conf
 /etc/resolv.conf: symbolic link to `../run/resolvconf/resolv.conf'

qui est un fichier sur un système de fichiers virtuel, l'épitomie d'une version non permanente. Ce qui est drôle, c'est que vous ne savez peut-être pas que resolvconf est installé, car les versions récentes de systèmes d'exploitation de type Debian sont livrées préinstallées. Vous pouvez déterminer si votre distribution l'a installé pour vous en exécutant la commande:

 #whereis resolvconf
 resolvconf: /sbin/resolvconf /etc/resolvconf /lib/resolvconf /usr/share/man/man8/resolvconf.8.gz

Plus important encore, vous pouvez déterminer si votre /etc/resolv.conffichier a été transformé en lien au moyen de la commande (fichier /etc/resolv.conf) ci-dessus. Si la réponse estASCII text , utilisez chattr, sinon ...

Si vous utilisez une adresse IP statique, la chose la plus simple est d'ajouter la ligne suivante (ou quelque chose comme ça)

 dns-nameservers 8.8.4.4 8.8.8.8

à la strophe définissant les propriétés de votre interface statique dans / etc / network / interfaces.

Si vous utilisez plutôt un ordinateur portable qui se connecte tout le temps à différents réseaux, vous pouvez suivre LawrenceCl'excellente suggestion de. Mais, si vous avez resolvconf sur votre système, la manière correcte (et la plus simple) de fournir un ensemble fixe de DNS est d'utiliser les fichiers dans /etc/resolvconf/resolv.conf.d . En particulier, les fichiers suivants sont utilisés (voir la page de Stéphane Graber ):

base : utilisé lorsqu'aucune autre donnée ne peut être trouvée

head : Utilisé pour l'en-tête de resolv.conf, peut être utilisé pour s'assurer qu'un serveur DNS est toujours le premier de la liste

tail : toute entrée dans tail est ajoutée à la fin du fichier resolv.conf résultant.

Alors placez vos serveurs de noms préférés dans la tête , comme suit

  nameserver 8.8.8.8

et vous avez terminé.

MariusMatutiae
la source
2
@dhiller Ultrasawblade a changé son nom pour LawrenceC, c'est celui ci-dessous.
MariusMatutiae
Article très agréable et intéressant, j'aimerais que vous ajoutiez des liens de documentation sur ce sujet pour les utilisateurs qui veulent en savoir plus sur le sujet, Thx
Philippe Gachoud
/etc/resolvconf/n'existe pas par défaut sur Ubuntu 18.04.
Dan Dascalescu
9

Ajoutez une ligne similaire à l' /etc/dhcp/dhclient.confutilisation d'un terminal racine:

supersede domain-name-servers 74.122.198.48, 50.116.23.211;

Cela provoque dhclient, le programme qui émet une demande DHCP et effectue des modifications en fonction de ce que la réponse lui a dit, pour remplacer les informations qu'il a obtenues du serveur DHCP par ce qui précède avant d'apporter des modifications.

Ce qui précède sont deux serveurs DNS OpenNIC. Remplacez au besoin pour tous les serveurs que vous souhaitez utiliser.

Comme cela se produit chaque fois que vous obtenez des informations de configuration de DHCP, utilisez donc dhclient -v eth0ou n'importe quelle interface pour les actualiser et voir le changement.

LawrenceC
la source
1
Au lieu de simplement remplacer le DNS (généralement le routeur), on pourrait ajouter la ligne prepend domain-name-servers 8.8.8.8par exemple. Cela utiliserait le DNS du FAI lorsqu'il serait disponible.
Axel Latvala
3

Il semble, comme mentionné par @Rik, que la raison des remplacements DNS au redémarrage est due au gestionnaire / utilitaire réseau configuré de cette manière. Dans Linux Mint, selon la capture d'écran, ma méthode IPv4 était uniquement définie sur les adresses automatiques (DHCP). Vous pouvez ensuite entrer les paramètres corrects dans /etc/resolv.conf ou dans la section des serveurs DNS. Je me souviens que dans Ubuntu 13.04, mes serveurs de noms ont changé plusieurs fois sur une longue période de temps, mais après que je suis allé les modifier dans l'interface graphique, tout semblait stable à partir de là.

entrez la description de l'image ici

entrez la description de l'image ici

Rudolph
la source
3

Eu le même problème, mais j'utilise une adresse IP statique. Le correctif ajoutait simplement le DNS dans / etc / network / interfaces

iface eth0 inet static
    address [your ip>
    netmask [your netmask]
    network [your network]
    broadcast [your broadcast]
    gateway [your gateway]
    # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers [dns server1] [dns server2]
    dns-search [your domain]
kanelbolle
la source
Oui, cela le corrige car NetworkManager ignore les interfaces répertoriées dans /etc/network/interfaces. Bonne prise!
Izzy
1

Si vous avez utilisé wicd, cliquez avec le bouton droit sur l'icône et cliquez sur les informations de connexion. Lorsque la fenêtre s'ouvre, cliquez sur les propriétés de celle à laquelle vous êtes connecté.

Cochez la case Utiliser un DNS statique et dans la ligne qui dit DNS serveur 1, tapez l'IP pour le DNS Google 8.8.8.8et dans la ligne pour le serveur DNS 2, 8.8.4.4puis cliquez sur "OK".

Si vous recevez des erreurs des valeurs par défaut, vous pouvez contacter votre FAI et le lui signaler. Ils attribuent généralement des serveurs DNS à votre modem lorsque vous vous connectez avec eux.

Yames
la source
0

Hacker votre chemin par chattr +iou similaire est au mieux une solution rapide et devrait être évitée autant que possible (au moins à long terme - comme dit, c'est une solution à court terme jusqu'à ce que l'on trouve le temps pour la vraie solution) . Comme déjà souligné, il s'agit d'un travail pour le NetworkManager, qui propose une CLI que nous pouvons utiliser pour cela:

# trouver l'interface à régler
dispositif nmcli
# sortie ressemble à:
# CONNEXION D'ÉTAT DU TYPE D'APPAREIL
# enp0s3 ethernet connecté my-office
# lo loopback non managé -
# De cela, nous avons besoin de la CONNEXION.

# Ajoutez maintenant nos "domaines de recherche":
connexion nmcli modifier my-office ipv4.dns-search example1.com
nmcli con mod my-office + ipv4.dns-search example2.com

# Et nos serveurs de noms:
nmcli con modifier my-office ipv4.dns 213.73.91.35
nmcli con modifier my-office + ipv4.dns 87.118.100.175
# notez le "+" dans la deuxième ligne: ajoutez-en un autre,
# tandis que la première ligne écrase l'entrée existante.
# nous aurions pu le faire avec un seul appel:
nmcli con modifier my-office ipv4.dns "213.73.91.35 87.118.100.175"

# OK, alors disons maintenant d'ignorer les mises à jour du serveur DHCP:
nmcli con modifier my-office ipv4.ignore-auto-dns oui

# et appliquer les modifications à notre configuration en cours
nmcli con up my-office

Si vous utilisez une adresse IP statique, vous pouvez également utiliser la solution de la réponse de kanelbolle .

Izzy
la source
0

Incroyable frustrant ce petit problème peut arriver, quand les solutions données pour ne plus travailler sur Ubunutu 18,04.

Ce qui a fonctionné pour moi, c'était d'écraser simplement la nameservervaleur à /etc/resolv.confchaque démarrage. sudoéditez /etc/rc.localet ajoutez cette ligne:

 sed -i "s/nameserver 127.0.0.53/nameserver 8.8.8.8/" /etc/resolv.confsudo /etc/rc.local
Dan Dascalescu
la source