En OS X, ¿es posible anular los servidores DNS asignados por DHCP pero aún así mantenerlos para el respaldo?

9

Por defecto, me gustaría usar los servidores DNS públicos de Google y recurrir a los de la intranet cuando estos fallan.

es posible? ... Estoy buscando una configuración que no se rompa cuando muevo mi computadora portátil sin otras redes.

Sería aceptable si encontrara una solución específica para esta conexión de red wifi (para hacer el truco solo en este caso y usar valores predeterminados para otros).

sorin
fuente
¿Qué significa "cuando los servidores DNS públicos de Google están fallando"? Hay muchas formas de crear scripts para cambiar las ubicaciones de red y / o simplemente escribir la entrada de diferentes DNS, pero no está claro cómo probaría la falla de google DNS. Peor aún, el comentario a continuación sobre VPN complicará aún más las cosas si agrega eso a su mezcla de requisitos.
bmike
Me sorprende que esto no sea posible. A veces, los servidores DNS que se me proporcionan a través de DHCP fallan, así que uso los de Google. Sin embargo, no puedo usar ninguna red que use DNS para implementar un portal cautivo ahora. Si pudiera tener los servidores proporcionados por DHCP como respaldo, resolvería esto. ¿Encontraste una solución?
Jake

Respuestas:

4

Puede usar ipconfig getpacketpara encontrar el servidor DNS que DHCP recomienda:

$ ipconfig getpacket en0 
...
domain_name_server (ip_mult): {192.168.3.2, 192.168.42.1}
...

Entonces, suponiendo que esté usando el Wi-Fiadaptador y su dispositivo en0, puede:

#!/bin/bash

default_servers=$( ipconfig getpacket en0 | \
   perl -ne'/domain_name_server.*: \{(.*)}/ && print join " ", split /,\s*/, $1' )
networksetup -setdnsservers Wi-Fi 127.0.0.1 $default_servers
Mark Grimes
fuente
2

Sí, puede agregar los servidores DNS de Google en la parte superior de la lista y seguirlos con los suyos (servidores de intranet).

  • Vaya a Preferencias del sistema> Red
  • Seleccione su interfaz de red de la lista de la izquierda
  • Haga clic en el botón Avanzado a la derecha
  • En la pestaña DNS del cuadro de diálogo, haga clic en "+" para agregar o "-" para eliminar entradas (también puede editar entradas haciendo doble clic o seleccionando y haciendo clic en la dirección)
  • Agregue las direcciones DNS de Google como las dos primeras entradas
  • Agregue sus servidores DNS de intranet debajo de esos
  • Haga clic en Aceptar
  • Haga clic en Aplicar
  • Cerrar Preferencias del sistema
MK
fuente
1
Sé esto, pero el problema es que esto me imposibilita utilizar la misma VPN desde otra ubicación. Debería ser otra solución, tal vez algo para configurar en el servidor VPN (PPTP) o para configurar un DNS con la dirección 127.0.0.1 y configurar un DNS local que todavía use los servidores DNS proporcionados por DHCP.
sorin
1

También hay una manera de hacer esto desde la línea de comandos si es un administrador de red que busca una manera de hacer esto en un lote:

networksetup listallnetworkservices
# look for the correct network device here, probably "Wi-Fi"
sudo networksetup -setdnsservers Wi-Fi 8.8.8.8 8.8.4.4

Reemplace "Wi-Fi" con el dispositivo de red correcto. Puede, en cambio, desear usar:

device=`networksetup listallnetworkservices | grep Wi-Fi`
sudo networksetup -setdnsservers "$device" 8.8.8.8 8.8.4.4
Cory
fuente
1

Estoy tratando de hacer lo mismo. Voy a ejecutar manualmente un servidor DNS en caché localmente y hacer que aprenda intranets a medida que me uno.

Estoy emocionado de que el servidor dns incluso pueda diferenciar entre nombres de host de intranet e internet antes de hacer la llamada recursiva.

Me preocupa que necesite TTL cortos o que necesite escribir ganchos para que cada vez que cambie una interfaz, considere vaciar el caché dns, o similar.

Informaré si tiene éxito ...

El primer 50%

Después de mirar la comparación de Wikipedia de los servidores DNS , Dnsmasq aparece en la parte superior de mi lista.

Resulta que brewtiene un forumla para dnsmasq, e incluso tiene alguna subinterfaz servicesescrita para brew... genial, menos para pensar, solo tiene que resolver la configuración.

$ brew install dnsmasq  # [libidn] internation domain names
$ cp /usr/local/opt/dnsmasq/dnsmasq.conf.example /usr/local/etc/dnsmasq.conf
# To have launchd start dnsmasq now and restart at startup:
$ sudo brew services start dnsmasq 

( brewtambién lo tiene bind, pero el estado mínimo también es atractivo para mí, no tener que borrarlo al hacer la configuración de red)

Que hacer

  • Averigüe cómo configurar las preferencias de red para usar mi nuevo dns, y
  • Configure dnsmasqpara asegurarse de que puede usar la configuración de la intranet. (el verdadero desafío)
mcint
fuente