2 votes

Comment ajouter un serveur DNS hébergé localement tout en préservant le DNS LAN par défaut ?

Ma question est très similaire à Comment ajouter un serveur DNS personnalisé et préserver le DNS par défaut du fournisseur d'accès à Internet dans OS X Mountain Lion ? Cependant, je cherche à filtrer et à résoudre toutes les requêtes DNS via mon résolveur, donc l'ajout d'un fichier spécifique au domaine à /etc/resolver/ ne fonctionnera pas, à moins qu'il n'y ait un moyen de cibler tous les domaines ( https://serverfault.com/a/164215/203355 semble intéressant mais ne semble pas fonctionner dans mes tests).

Je ne veux pas utiliser un dns public codé en dur comme dns en amont pour mon résolveur local parce que j'ai une règle dnat sur mon réseau local pour rediriger tout le trafic dns vers mon pihole, cependant lorsque cette règle est utilisée, le trafic apparaît au pihole comme provenant du routeur et perturbe mes analyses.

Ma configuration actuelle est la suivante :

dnsmasq a resolv-file=/etc/resolv.conf dans sa configuration pour qu'il utilise le dns fourni par le DHCP en amont (après avoir fait du filtrage).

J'ai un fichier /etc/resolver/root qui contient ceci :

nameserver 127.0.0.1
domain .
search_order 1000

scutil --dns liste mes 127.0.0.1 (comme le numéro 8), le order est la plus basse de la liste, bien que le résolveur #1 (de dhcp) n'ait pas de valeur de order valeur.

resolver #1
  nameserver[0] : 10.0.1.204
  if_index : 11 (en10)
  flags    : Request A records, Request AAAA records
  reach    : 0x00020002 (Reachable,Directly Reachable Address)
[...]
resolver #8
  nameserver[0] : 127.0.0.1
  flags    : Request A records, Request AAAA records
  reach    : 0x00030002 (Reachable,Local Address,Directly Reachable Address)
  order    : 1000

Je ne sais pas si unbound peut utiliser le serveur dns fourni par le DHCP en amont plus facilement que dnsmasq mais je pourrais changer si c'est plus facile. Sinon, j'essaie juste de configurer le système de résolution de MacOS pour qu'il donne la priorité à mon résolveur local.

1voto

Camden Narzt Points 260

J'ai finalement conçu ce script pour garder un fichier resolv.conf séparé pour dnsmasq qui est mis à jour lors des changements de réseau.

#!/usr/local/bin/bash

mkfifo P
exec 3>P # open file descriptor 3 writing to the pipe
scutil < P | fgrep notification | \
    xargs -L 1 bash -c 'echo "nameserver $(ipconfig getoption $(route -n get default | fgrep interface | awk "{print \$2}") domain_name_server)" > /usr/local/etc/dnsmasq.d/resolv-dnsmasq.conf'
echo -e "n.add State:/Network/Global/IPv4\nn.watch" > P

Il se peut que je doive ajouter un redémarrage de dnsmasq également, en fonction des résultats des tests.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X