Comment faire pour que networkmanager configure les servers de noms spécifiques au domaine avec openresolv + dnsmasq

Je me connecte souvent à plusieurs réseaux simultanément. Chacun de ces réseaux fournit la configuration du server 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 

# Noms modifiés

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 listd below may not be recognized. nameserver 10.102.208.51 

La résolution de service.company2.corp ne fonctionne pas car le server de premier nom ne connaît que les noms de company1.corp.

Donc, inspiré par cet article , j'ai installé openresolv (une implémentation de resolvconf) en configurant un service local de dnsmasq sur mon installation d'Arch linux.

Si je configure les servers de noms manuellement en utilisant 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 capable de résoudre les noms de company1.corp et company2.corp (le server local dnsmasq gère cela.)

Notez qu'après la configuration manuelle, resolveconf -l affiche les 2 configurations séparément:

 ~ # 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 configurez le gestionnaire de réseau, les deux configurations ne sont pas séparées, 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 listd below may not be recognized. nameserver 10.102.208.51 

Ma question est comment puis-je get le gestionnaire de réseau pour appeler correctement resolveconf afin que les servers de noms pour chaque interface sont enregistrés séparément. (Malheureusement googler pour cela est inutile parce que google pense que "resolveconf" == "resolve.conf")

NetworkManager a la fonctionnalité de gérer un server local dnsmasq embedded. Il n'est pas nécessaire d'utiliser resolvconf / openresolv pour le faire.

Pour activer ceci:

  • Désactivez la configuration resolvconf / openresolv dnsmasq si elle était précédemment activée et assurez-vous qu'aucune instance de dnsmasq n'est en cours d'exécution.
  • Assurez-vous que dnsmasq est installé
  • Ajoutez dns=dnsmasq à /etc/NetworkManager/NetworkManager.conf .
  • Redémarrez NetworkManager

Une fois que vous avez fait cela, vous verrez que NetworkManager a démarré un process dnsmasq:

 $ pgrep dnsmasq -fl 1697 /usr/bin/dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces --pid-file=/var/run/nm-dns-dnsmasq.pid --listn-address=127.0.0.1 --conf-file=/var/run/nm-dns-dnsmasq.conf --cache-size=400 --proxy-dnssec 

/etc/resolve.conf devrait pointer vers l'instance locale de dnsmasq:

 $ cat /etc/resolv.conf # Generated by NetworkManager domain company1.corp search company1.corp nameserver 127.0.0.1 

et nous pouvons voir quels servers dnsmasq utilise:

 # cat /var/run/nm-dns-dnsmasq.conf server=/company2.corp/10.102.208.51 server=/10.in-addr.arpa/10.102.208.51 server=192.168.1.244 server=192.168.1.239 

Il semble que NetworkManager écrase simplement /etc/resolv.conf et n'utilise pas openresolv. Selon FS # 24635 , NetworkManager a le support pour openreslov, mais il n'a pas été initialement activé dans la construction. Quelle version d'Arch Linux utilisez-vous et quelle est la version du packageage networkmanager?