40 votos

¿Funcionan los archivos /etc/resolver/ en Mountain Lion para la resolución de DNS?

¿Alguien puede decirme si añadir un archivo en /etc/resolver funcionará para la resolución de DNS utilizando un servidor DNS distinto al que se entrega a través de DHCP?

Mi problema es que quiero usar OpenDNS para la resolución de DNS en casa de los clientes con el fin de aprovechar las capacidades de filtrado y anti estafa, pero la gran desventaja es que aquí en Australia cosas como el contenido de Apple son entregadas por un CDN (Akamai) que luego el contenido del servidor utilizando un punto de entrega basado en los EE.UU..

Lo que quiero hacer es que la dirección del servidor DNS entregada vía DHCP sea la dirección del router local (DNSMasq usando servidores DNS OpenDNS) y luego, por ejemplo, colocar un archivo llamado apple.com bajo /etc/resolver con la siguiente línea:

nameserver 203.12.160.35

La idea es que cualquier solicitud de DNS a apple.com sea resuelta por un servidor DNS de TPG (mi ISP) en lugar del demonio DNSMasq de los routers locales que utilizan servidores OpenDNS.

Así que he hecho esto y la salida de scutil --dns es:

DNS configuration

resolver #1
  search domain[0] : harland
  nameserver[0] : 192.168.10.1
  nameserver[1] : 192.168.10.1
  if_index : 4 (en2)
  reach    : Reachable,Directly Reachable Address

resolver #2
  domain   : local
  options  : mdns
  timeout  : 5
  order    : 300000

resolver #3
  domain   : 254.169.in-addr.arpa
  options  : mdns
  timeout  : 5
  order    : 300200

resolver #4
  domain   : 8.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  order    : 300400

resolver #5
  domain   : 9.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  order    : 300600

resolver #6
  domain   : a.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  order    : 300800

resolver #7
  domain   : b.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  order    : 301000

resolver #8
  domain   : apple.com
  nameserver[0] : 8.8.8.8

DNS configuration (for scoped queries)

resolver #1
  search domain[0] : harland
  nameserver[0] : 192.168.10.1
  nameserver[1] : 192.168.10.1
  if_index : 4 (en2)
  flags    : Scoped
  reach    : Reachable,Directly Reachable Address
macbookair:resolver

Ahora la salida de un nslookup en apple.com es:

macbookair:resolver ilium007$ nslookup apple.com
Server:     192.168.10.1
Address:    192.168.10.1#53

Non-authoritative answer:
Name:   apple.com
Address: 17.149.160.49
Name:   apple.com
Address: 17.172.224.47

macbookair:resolver 

Así que no estoy usando el servidor DNS de TPG - todavía estoy resolviendo contra 192.168.10.1 que es el router local. ¿Importa el orden de los resolvedores? Es decir, la entrada creada después de colocar el archivo apple.com en /etc/resolver es el resolvedor #8:

resolver #8
  domain   : apple.com
  nameserver[0] : 8.8.8.8

Me gustaría que hubiera una manera de hacer que esto funcione - cualquier ayuda sería apreciada.

49voto

apfelsaft Puntos 151

Esta pregunta parece un poco antigua, pero voy a responderla de todas formas ya que tuve un problema similar:

Sí, esto funciona.

Su primer problema es que obviamente tienes la IP equivocada ( 8.8.8.8 en lugar de 203.12.160.35 ) en /etc/resolver/apple.com . Verifique que el contenido de este archivo es realmente:

nameserver 203.12.160.35

Entonces scutil --dns debería tener una entrada como esta:

resolver #8
  domain   : apple.com
  nameserver[0] : 203.12.160.35

El segundo problema es que intentaste verificarlo usando nslookup que no utiliza los mecanismos de resolución de DNS de OS X. Si miras la página man de nslookup encontrarás esto:

Mac OS X NOTICE
   The nslookup command does not use the host name and address resolution or the DNS 
   query routing mechanisms used by other processes running on Mac OS X.  The results of 
   name or address queries printed by nslookup may differ from those found by other
   processes that use the Mac OS X native name and address resolution mechanisms. The 
   results of DNS queries may also differ from queries that use the Mac OS X DNS routing 
   library.

A compruebe su configuración de DNS que podrías hacer

dns-sd -G v4 images.apple.com

y verificar si da la misma IP que

nslookup images.apple.com 203.12.160.35

1 votos

También hay que tener en cuenta que esto se puede utilizar para especificar un servidor de nombres para un dominio de nivel superior específico. Por ejemplo, si el archivo se llama "dev", todas las búsquedas de "ejemplo.dev" se enviarán a ese servidor de nombres. Esto es útil para las intranets de las empresas, especialmente cuando no estás en la LAN de la empresa (por ejemplo, cuando te conectas a una VPN).

3 votos

Your first problem is that you obviously have the wrong IP (8.8.8.8) No necesariamente; 8.8.8.8 y 8.8.4.4 son los servidores DNS de Google. Cómo obtuvieron esos octetos está más allá de mí.

3 votos

A partir de la versión 10.10, parece que no existe el directorio /etc/resolver.

15voto

Mecki Puntos 121

En realidad, el uso de archivos de resolución no es la forma recomendada de hacerlo.
En lugar de ello, debe crear un resolver DNS con scutil .

Para ver todas las consultas DNS en la interfaz en0 Abre un Terminal y ejecuta:

sudo tcpdump -n -i en0 port 53

Abra otra ventana de Terminal y ejecute:

sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
ping apple.stackexchange.com -c1

Las dos primeras líneas vacían su caché DNS, por lo que el sistema tiene que enviar una solicitud con seguridad. Por qué ping ? ping utiliza las API normales del sistema para resolver los nombres DNS; a diferencia de host , dig y nslookup que hacen toda la resolución de DNS por su cuenta, de modo que pueden consultar servidores DNS arbitrarios y no sólo los configurados en el sistema.

Debería ver en tcpdump que su servidor DNS estándar es consultado, ¿verdad?

Bueno, vamos a cambiar eso:

sudo scutil
d.init
d.add ServerAddresses * 9.9.9.9
d.add SupplementalMatchDomains * stackexchange.com
set State:/Network/Service/whatever-you-want-as-long-as-unique/DNS

Puedes dejar ese interactivo scutil consola, ya sea con quit o pulsando CTRL+C.

Ahora intente la descarga de DNS y el ping de nuevo y observe lo que tcpdump dice. Dice que 9.9.9.9 ¡es consultado! Pues bien, compruebe scutil --dns :

resolver #2
  domain   : stackexchange.com
  nameserver[0] : 9.9.9.9
  flags    : Supplemental, Request A records
  reach    : 0x00000002 (Reachable)
  order    : 101000

Ves, tienes una nueva resolución. Además, tenga en cuenta que stackexchange.com se ha añadido a la lista de dominios de búsqueda de su resolvedor principal (#1). Esto le permite

# ping apple
PING apple.stackexchange.com (151.101.65.69): 56 data bytes

Qué bien. Ahora vamos a deshacernos de él de nuevo:

sudo scutil
remove State:/Network/Service/whatever-you-want-as-long-as-unique/DNS

Eso es básicamente todo. Un par de notas:

  • Puede añadir varios servidores DNS y dominios de búsqueda separados por espacios,
    Por ejemplo d.add ServerAddresses * 9.9.9.9 8.8.8.8

  • Puedes ver lo que has configurado hasta ahora con d.show

  • whatever-you-want-as-long-as-unique significa que cada servicio debe tener un ID único. Apple utiliza UUIDs para ello, pero en realidad se puede utilizar cualquier cosa siempre que no entre en conflicto con los servicios existentes (y no puede contener / ya que es el carácter separador). Para ver lo que ya existe, basta con utilizar list y para ver el contenido de una llave existente utilice show <key>

  • Sus ajustes globales de DNS, los que se encuentran en /etc/resolv.conf son, de hecho, de scutil , pago show State:/Network/Global/DNS . Si cambia esa tecla, el contenido de /etc/resolv.conf cambiará en consecuencia. Pero no debería hacerlo nunca, ya que esta clave es gestionada por el sistema y se sobrescribirá en varias ocasiones (prácticamente cualquier cambio de red, renovación de DHCP, etc.)

  • Para ver qué otros comandos existen, utilice help .

  • sudo scutil sólo es necesario si quieres cambiar de llave. La lectura de llaves también es posible como usuario normal.

BTW: 9.9.9.9 es Quad9 . Es como 8.8.8.8 pero garantiza tu privacidad (nunca se registran las direcciones IP) y trata de protegerte no resolviendo dominios maliciosos conocidos. Mientras que 8.8.8.8 registra su dirección IP y mantiene esa información durante 24 a 48 horas, ver aquí .

0 votos

¿Es posible configurar el scutil -para utilizar un puerto distinto de 53 o 5353?

1 votos

@JohnnyUtahh No por servidor pero debería ser posible por resolver: d.add ServerPort # 1234 (se aplicará entonces a todos los servidores de ese resolver). La dirección # es importante, ya que de lo contrario sería un valor de cadena, aunque según la documentación debe ser un valor numérico.

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