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?
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.
Désactivez DNS automatique et fournissez des serveurs de noms. Appliquez la configuration.
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 ,
- Une interface utilisateur de texte (TUI) basée sur des curses simples pour NetworkManager, nmtui, est disponible.
- 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 nmcli
documentation avait l'air très bien.
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!
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