web-dev-qa-db-fra.com

Comment faire pour que NetworkManager ajoute un serveur DNS en haut de /etc/resolv.conf?

En ce moment, mon /etc/resolv.conf ressemble à ceci:

# Generated by NetworkManager
nameserver 10.165.246.33
nameserver 192.135.82.60
nameserver 10.165.74.2

Les deux premiers serveurs de noms sont automatiquement configurés via DHCP; le dernier est celui que j'ai ajouté manuellement, dans NetworkManager. C'est aussi le plus important, car il résout nos noms de domaine internes (par exemple build-server-17.our-company-domain.com).

Le problème est que NetworkManager l'ajoute au bas de /etc/resolv.conf, donc lorsque j'accède à une URL intranet, mon navigateur essaie de la résoudre en utilisant les deux premiers serveurs, et cela prend du temps.

Comment puis-je demander à NetworkManager d'ajouter le serveur DNS configuré manuellement avant les serveurs configurés automatiquement?

11
Newbie Linux User

Je ne vois pas quel système adresser spécifiquement, mais si le vôtre utilise resolvconf, essayez ce qui suit en tant que root (su - ou Sudo -i):

echo 'nameserver 10.165.74.2' >> /etc/resolvconf/resolv.conf.d/head
resolvconf -u

Il y a un avertissement dans ce fichier qui indique que les modifications manuelles seront écrasées; mais, dans le contexte, le message s'applique à /etc/resolv.conf, ne pas /etc/resolvconf/resolv.conf.d/head.

Cela devrait placer le serveur de noms souhaité en premier dans la liste. Bien sûr, si cela fonctionne sur votre système d'exploitation, alors 10.165.74.2 peut être supprimé de NetworkManager.

Le résolveur local, dnsmasq, est également une excellente voie à suivre. En utilisant dnsmasq, on peut utiliser beaucoup plus de contrôle sur DNS et DHCP. Par exemple, dans ce scénario, dnsmasq peut interroger un serveur de noms spécifique basé sur un nom de domaine spécifié avec son option server. Voir un extrait de dnsmasq.conf qui pourraient correspondre à votre objectif ci-dessous.

# Add other name servers here, with domain specs if they are for
# non-public domains.
server=/our-company-domain.com/10.165.74.2

Mise à jour

Merci d'avoir mentionné le système d'exploitation. Sur CentOS 7, il existe de nombreuses méthodes. Dans l'interface graphique, cliquez sur Applications> Outils système> Paramètres> Réseau. Sélectionnez une connexion à configurer.

CentOS 7 NetworkManager - Configure Connection

Désactivez DNS automatique et fournissez des serveurs de noms. Appliquez la configuration.

CentOS 7 NetworkManager - Apply Static DNS Settings

La prochaine fois que NetworkManager démarre cette connexion, il écrit les valeurs personnalisées. (Pendant les tests, j'ai éteint puis rallumé le réseau car j'avais deux connexions réseau.)

Selon documentation ,

  1. Une interface utilisateur de texte (TUI) basée sur des curses simples pour NetworkManager, nmtui, est disponible.
  2. Un outil en ligne de commande, nmcli, est fourni pour permettre aux utilisateurs et aux scripts d'interagir avec NetworkManager. Notez que nmcli peut être utilisé sur des systèmes sans interface graphique comme les serveurs pour contrôler tous les aspects de NetworkManager. C'est sur un pied d'égalité avec les outils GUI.

En particulier, le nmclidocumentation avait l'air très bien.

3
Christopher

J'ai accidentellement créé une question en double ici . La réponse est là, mais essentiellement, vous devez créer:

/etc/dhcp/dhclient.conf

s'il n'existe pas déjà, et ajoutez:

prepend domain-name-servers [ip address of server];

N'oubliez pas le point-virgule à la fin!

Après cela, le redémarrage automatique a simplement déplacé la ligne "nameserver [adresse IP du serveur]" dans le "/etc/resolv.conf" vers le haut!

9
alfreema

Il existe une autre façon, pas besoin de désactiver NetworkManager.service. Définissez simplement ifcfg-idevice:

PEERDNS=no
DNS1=10.165.74.2
DNS2=OTHERDNS
DOMAIN=DEMO.COM

Vous n'avez pas besoin de définir les paramètres /etc/NetworkManager/NetworkManager.conf, comme:

[main]
dns=none
0
user1437464