2 votos

¿Cómo puedo añadir un servidor DNS alojado localmente y conservar el DNS de la LAN por defecto?

Mi pregunta es muy similar a ¿Cómo puedo añadir un servidor DNS personalizado y preservar el DNS por defecto del ISP en OS X Mountain Lion? sin embargo, estoy buscando para filtrar y resolver todas las solicitudes dns a través de mi resolver, por lo que la adición de un archivo específico de dominio a /etc/resolver/ no funcionará, a menos que haya una forma de apuntar a todos los dominios ( https://serverfault.com/a/164215/203355 parece interesante pero no parece funcionar en mis pruebas).

No quiero usar un dns público codificado como el dns ascendente para mi resolver local porque tengo una regla dnat en mi red local para redirigir todo el tráfico dns a mi pihole, sin embargo, cuando esta regla está en uso, el tráfico aparece al pihole para ser desde el router y desordena mis análisis.

Mi configuración actual es:

dnsmasq tiene resolv-file=/etc/resolv.conf en su configuración para que use el dns proporcionado por el DHCP como su upstream (después de hacer el filtrado).

Tengo un archivo /etc/resolver/root que contiene esto:

nameserver 127.0.0.1
domain .
search_order 1000

scutil --dns enumera mi 127.0.0.1 resolver (como #8), el order es el más bajo de la lista, aunque el resolver #1 (de dhcp) no tiene un order valor.

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

No sé si unbound puede utilizar el servidor dns proporcionado por DHCP como un upstream más fácil que dnsmasq pero podría cambiar si eso fuera más fácil. De lo contrario, sólo estoy tratando de configurar el sistema de resolución de MacOS para dar prioridad a mi resolución local.

1voto

kalwi Puntos 121

Finalmente ideé este script para mantener un archivo resolv.conf separado para dnsmasq que se actualiza en los cambios de red.

#!/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

Puede que tenga que añadir un reinicio de dnsmasq también, dependiendo de los resultados de las pruebas.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X