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

11

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 lors de l'accès à une URL intranet, mon navigateur essaie de le résoudre en utilisant les deux premiers serveurs, et cela prend des siècles.

Comment faire pour que NetworkManager ajoute le serveur DNS configuré manuellement avant ceux configurés automatiquement?

Utilisateur Linux débutant
la source
1
En général, tous les serveurs DNS de votre resolv.conf devraient retourner les mêmes résultats. Avoir des serveurs mixtes est une recette pour des échecs intermittents et beaucoup de douleur.
Philip Kendall

Réponses:

3

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, non /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, dnsmasqpeut interroger un serveur de noms spécifique basé sur un nom de domaine spécifié avec son serveroption. Voir un extrait de dnsmasq.confcelui-ci qui pourrait se rapporter à 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 - Configurer la connexion

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

CentOS 7 NetworkManager - Appliquer les paramètres DNS statiques

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 la 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, la nmcli documentation avait l'air très bonne.

Christophe
la source
1
Désolé, c'est CentOS, qui n'a pas de resolvconfpackage. dnsmasqsemble être une bonne solution.
Utilisateur débutant Linux
8

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 simple redémarrage a déplacé automatiquement la ligne «nameserver [adresse IP du serveur]» dans le «/etc/resolv.conf» vers le haut!

alfreema
la source
Merveilleux! C'est le backend utilisé par NetworkManager, et le seul moyen de faire fonctionner cela avec toutes les connexions wifi (non statiques). Merci !
Adrien M.
0

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
user1437464
la source