Je me connecte souvent à plusieurs réseaux simultanément. Chacun de ces réseaux fournit une configuration de serveur de noms via DHCP. Par exemple, réseau 1: (eth0):
domain company1.corp #
nameserver 192.168.0.253
nameserver 192.168.0.254
Réseau 2 (tun0):
domain company2.corp #
nameserver 10.102.204.51
nameserver 10.102.208.51
# Les noms ont changé
Lorsqu'il est connecté aux deux réseaux simultanément:
# resolv.conf from NetworkManager
domain company1.corp, company2.corp
nameserver 192.168.0.253
nameserver 192.168.0.254
nameserver 10.102.204.51
# NOTE: the libc resolver may not support more than 3 nameservers.
# The nameservers listed below may not be recognized.
nameserver 10.102.208.51
La résolution de service.company2.corp ne fonctionne pas car le serveur de prénom ne connaît que les noms de company1.corp.
Tellement inspiré par cet article , j'ai installé openresolv (une implémentation resolvconf) configurant un service dnsmasq local sur mon installation Arch linux.
Si je configure les serveurs de noms manuellement à l'aide de resolvconf:
# resolvconf -d NetworkManager
# echo "domain company1.corp
nameserver 192.168.0.253
nameserver 192.168.0.254
" | resolvconf -a eth0
# echo "domain company2.corp
nameserver 10.102.204.51
nameserver 10.102.208.51
" | resolvconf -a tun0
Ensuite, je suis en mesure de résoudre les noms de company1.corp et company2.corp (le serveur dnsmasq local gère cela.)
Notez qu'après la configuration manuelle, resolveconf -l affiche séparément les 2 configurations:
~ # resolvconf -l
# resolv.conf from tun0
domain company2.corp
nameserver 10.102.204.51
nameserver 10.102.208.51
# resolv.conf from eth0
domain company1.corp
nameserver 192.168.0.253
nameserver 192.168.0.254
Cependant, lorsque vous laissez le gestionnaire de réseau faire la configuration, les 2 configurations ne sont pas distinctes, comme ce serait le cas si le gestionnaire de réseau écrivait dans /etc/resolve.conf
~ # resolvconf -l
# resolv.conf from NetworkManager
# Generated by NetworkManager
domain company1.corp, company2.corp
nameserver 192.168.0.253
nameserver 192.168.0.254
nameserver 10.102.204.51
# NOTE: the libc resolver may not support more than 3 nameservers.
# The nameservers listed below may not be recognized.
nameserver 10.102.208.51
Ma question est de savoir comment puis-je demander au gestionnaire de réseau d'appeler correctement resolveconf pour que les serveurs de noms de chaque interface soient enregistrés séparément. (Malheureusement, googler pour cela est inutile car google pense que "resolveconf" == "resolver.conf")
la source
"resolvconf"
avec les guillemets. Mettez toujours des guillemets autour des noms propres sur Google.Réponses:
NetworkManager a la fonctionnalité pour gérer un serveur dnsmasq local intégré. Il n'est pas nécessaire d'utiliser resolvconf / openresolv pour ce faire.
Pour l'activer:
dns=dnsmasq
à/etc/NetworkManager/NetworkManager.conf
.Une fois que vous avez fait cela, vous verrez que NetworkManager a démarré un processus dnsmasq:
/etc/resolve.conf
devrait pointer vers l'instance dnsmasq locale:et nous pouvons voir quels serveurs dnsmasq utilise:
la source
ubound
donc aussi DNSSEC fonctionne, voir fedoraproject.org/wiki/Networking/NameResolution/DNSSECIl semble que NetworkManager écrase simplement
/etc/resolv.conf
et n'utilise pas openresolv. Selon FS # 24635 , NetworkManager prend en charge openreslov, mais il n'était pas initialement activé dans la build. Quelle version d'Arch Linux utilisez-vous et quelle est la version du package networkmanager?la source
Faites comme Gary van der Merwe a répondu, mais
/etc/NetworkManager/NetworkManager.conf
Je devais ajouter
dans le fichier. Pas seulement
dns=dnsmasq
Cela est dû au fait que tous les paramètres de ce fichier doivent se trouver dans une section et que ma version de distribution, manjaro (archlinux), du package NetworkManager ne remplit pas le fichier de configuration. (Je suppose que la distribution de Gary fonctionne puisque sa ligne suggérée a fonctionné pour lui et pour les autres)
Une autre note, toute configuration dnsmasq doit aller dans un fichier de configuration dans ce
/etc/NetworkManager/dnsmasq.d/
annuaire. Il peut s'agir d'un répertoire différent sur votre machine. J'ai appris le répertoire utilisé en consultant la ligne utilisée par NetworkManager pour démarrer le démon dnsmasq. Vous pouvez voir cette ligne en exécutant
ps aux|grep dnsmasq
. Vous devez attendre pour l'exécuter jusqu'à ce que vous ayez modifié la configuration de NetworkManager et redémarré son service.la source