Mac OS X Mountain Lion: la resolución de DNS utiliza un orden incorrecto en VPN a través de una conexión de acceso telefónico

Estoy usando una MacBook con Mac OS X 10.8.2 y me conecto a la red de mi empresa a través de VPN. Todo funciona muy bien al establecer la conexión VPN a través de LAN o WLAN. Sin embargo, cuando utilizo una conexión de acceso telefónico (Huawei HSDPA USB Stick), los nombres de host no se resuelven correctamente en las aplicaciones (por ejemplo, el navegador web). Las herramientas de línea de comandos como host nameresolverán correctamente la dirección IP, ping nameno resolverán.

Usando scutil --dnsvolqué la configuración de DNS cuando me conecté a través de WLAN en lugar de acceso telefónico. Hay una diferencia notable en el orden de búsqueda:

connecting using WLAN:

resolver #1
  nameserver[0] : 192.168.80.10
  nameserver[1] : 192.168.80.24
  if_index : 6 (ppp0)
  reach    : Reachable,Transient Connection
  order    : 100000

resolver #2
  nameserver[0] : 192.168.80.10
  nameserver[1] : 192.168.80.24
  if_index : 6 (ppp0)
  reach    : Reachable,Transient Connection
  order    : 200000

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

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

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

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

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

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

DNS configuration (for scoped queries)

resolver #1
  nameserver[0] : 192.168.1.1
  if_index : 4 (en0)
  flags    : Scoped
  reach    : Reachable,Directly Reachable Address

resolver #2
  nameserver[0] : 192.168.80.10
  nameserver[1] : 192.168.80.24
  if_index : 6 (ppp0)
  flags    : Scoped
  reach    : Reachable,Transient Connection

La conexión ppp0 es la conexión VPN. Como puede ver, dos servidores están conectados y responden correctamente en la línea de comando y en las aplicaciones.

Connecting via UMTS:

resolver #1
  nameserver[0] : 139.7.30.126
  nameserver[1] : 139.7.30.125
  if_index : 6 (ppp0)
  reach    : Reachable,Transient Connection
  order    : 100000

resolver #2
  nameserver[0] : 192.168.80.10
  nameserver[1] : 192.168.80.24
  if_index : 7 (ppp1)
  reach    : Reachable,Transient Connection
  order    : 100000

resolver #3
  nameserver[0] : 192.168.80.10
  nameserver[1] : 192.168.80.24
  if_index : 7 (ppp1)
  reach    : Reachable,Transient Connection
  order    : 200000

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

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

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

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

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

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

DNS configuration (for scoped queries)

resolver #1
  nameserver[0] : 192.168.80.10
  nameserver[1] : 192.168.80.24
  if_index : 7 (ppp1)
  flags    : Scoped
  reach    : Reachable,Transient Connection

resolver #2
  nameserver[0] : 139.7.30.126
  nameserver[1] : 139.7.30.125
  if_index : 6 (ppp0)
  flags    : Scoped
  reach    : Reachable,Transient Connection

Esta vez, ppp1 es la conexión VPN y ppp0 es la conexión UMTS. De los tiempos de respuesta de los comandos (usando el nombre de host no existente foo.bar.local) infiero que pingusa la primera cadena de resolución, mientras que hostusa la configuración de consulta con ámbito. pingtarda 5 segundos en devolver "Anfitrión desconocido", hostvuelve inmediatamente. Supongo que el ping se ejecuta en el tiempo de espera de 5 segundos de la resolución mdns.

Para solucionar mi problema con las búsquedas de DNS rotas al marcar a través de VPN por módem, necesito cambiar el orden de los resolutores. Hasta ahora no he encontrado una manera de hacer esto.

Cualquier idea es bienvenida.

Respuestas (8)

Tuve el mismo problema en mi Mac, y después de solucionarlo, descubrí que fue causado por FortiClient (cliente VPN). Incluso cuando se desconectó FortiClient, su DNS aún aparecía en el scutil.

La solución para mí fue:

scutil
> list ".*DNS"

Esto le mostrará una lista de todas las configuraciones de DNS, que se parecerá a:

subKey [0] = State:/Network/Global/DNS <br>
subKey [1] = State:/Network/MulticastDNS<br>
subKey [2] = State:/Network/OpenVPN/DNS<br>
subKey [3] = State:/Network/OpenVPN/OldDNS<br>
subKey [4] = State:/Network/PrivateDNS<br>
subKey [5] = State:/Network/Service/forticlientsslvpn/DNS <br>

Para verificar cada uno de ellos, ejecute: (hasta que encuentre el problemático)

> get key_name
> d.show

…y para arreglarlo ejecuta:

> get key_name
> d.remove ServerAddresses
> set key_name

Así es como se veía en mi máquina:

> get State:/Network/Service/forticlientsslvpn/DNS 
> d.show
<dictionary> {
  ServerAddresses : <array> {
    0 : 192.168.30.6
    1 : 192.168.30.15
  }
  SupplementalMatchDomains : <array> {
    0 :
  }
  SupplementalMatchOrders : <array> {
    0 : 100000
  }
}
> d.remove ServerAddresses
> d.show
<dictionary> {
  SupplementalMatchDomains : <array> {
    0 :
  }
  SupplementalMatchOrders : <array> {
    0 : 100000
  }
}
> set State:/Network/Service/forticlientsslvpn/DNS
> exit

Esto todavía está sucediendo en 10.13.0

He abierto un informe de error con Apple. No es normal que "ping internalhostname" funcione, pero "host internalhostname" o "nslookup internalhostname" fallan con las VPN de túnel dividido (basadas en Cisco IPSec o IKEv2).

Además, como algunos han notado, las conexiones Cisco IPsec, así como las conexiones IKEv2, no se pueden priorizar con "Establecer orden de servicio", a diferencia de L2TP/IPsec, que sí se puede.

Otro punto que me gustaría mencionar es que las VPN IPSec o IKEv2 de túnel dividido de Cisco no muestran ningún servidor DNS o dominios de búsqueda en su configuración avanzada, aunque esta información aparece con "scutil --dns". Las VPN L2TP/IPsec muestran bien esta información.

Algo tiene que ceder y Apple necesita proporcionar alguna explicación/solución.

Creo que esta es la situación actual con macOS a fines de 2017. No se respeta un DNS dividido configurado en un dominio. Ejecuto los scutil --dnscomandos anteriores y parece que el DNS de la VPN siempre es el último y no se usa para el dominio de búsqueda, incluso si se configura correctamente.

Encontré una solución alternativa: el DNS de su VPN seguirá siendo ignorado, y solo se usará el DNS del dongle 3G, pero simplemente agregar su DNS de la VPN a la lista en la interfaz 3G hace el truco... El problema principal es que el administrador de conectividad 3G sobrescribe la configuración cada vez hace clic en conectar y necesita el administrador de conectividad para habilitar Radio en el dongle 3G... así que mezclé ambas soluciones en una:

  1. Conéctese a su VPN y anote su DNS (tengo 2 en la lista). Puede comprobarlo en Preferencias de red → Avanzado → pestaña DNS. Desconecte la VPN. Debe conectarse a VPN porque el DNS se asigna dinámicamente al conectarse...

  2. Conéctate a tu 3G y haz lo mismo: escribe el DNS en un papel. Luego desconecte 3G.

  3. Vaya a Preferencias de red → haga clic en Interfaz 3G → Avanzado → Pestaña DNS, y en la tabla DNS (que normalmente estará vacía ya que no está conectado), haga clic en '+'. Agregue todos los servidores DNS (los de 3G primero y luego agregue VPN más tarde). Haga clic en Aceptar y Aplicar.

  4. De ahora en adelante , para conectarse a 3G, simplemente conecte su USB y espere hasta que tenga cobertura 3G (deberá abrir el administrador de conectividad 3G), pero no use el administrador de conectividad suministrado para conectarse. Y si se conecta automáticamente, ve a preferencias y desmarca esa marca. Necesita ese administrador solo para encender la radio en el Dongle USB, nada más.

    Si hace clic en "conectar" en su administrador 3G, sobrescribirá la configuración en su interfaz 3G y deberá repetir el paso 3 nuevamente.

  5. Vaya a Red → Preferencias y haga clic en la interfaz 3G. Luego haga clic en conectar. Se conectará a su 3G utilizando los servidores DNS configurados (en lugar de recibidos dinámicamente), que incluyen tanto el DNS "público" como el DNS de su VPN.

  6. Conéctese a su VPN. Funcionará como se esperaba.

Solo tenga en cuenta que:

  • Si su VPN DNS cambia, debe cambiarlo manualmente. Esto se puede verificar fácilmente en Red → Interfaz VPN w Avanzado → pestaña DNS ya que su VPN DNS todavía está asignado dinámicamente a la interfaz (aunque OS X lo ignora).

  • Si su DNS 3G cambia (poco probable), también debe cambiarlo manualmente. Si algo sale mal y no puede navegar, debe pasar por su administrador de conectividad 3G, hacer clic en "Conectar" y ver qué DNS se asignan dinámicamente... Eso requerirá que vuelva al paso 3 y lo reconfigure.

Tuve el mismo problema durante mucho tiempo, pero ahora tuve tiempo de encontrar una solución que funcione para mí. No cambié el orden del servidor DNS, pero estoy usando el servidor DNS detrás de la VPN de forma permanente.

  1. Conéctese a través de acceso telefónico.

  2. Conecte la conexión VPN y copie las direcciones IP del servidor DNS y el dominio de búsqueda desde Conexión VPN → Avanzado → DNS.

  3. Desconecte la conexión VPN.

  4. Haga ping <name>o <hostname>de su servidor VPN y anote la IP.

  5. Desconecte la conexión de acceso telefónico.

  6. Duplique la conexión de acceso telefónico (por ejemplo, asígnele el nombre "3G para VPN").

  7. Ingrese las direcciones IP y el dominio de búsqueda en la pestaña DNS de la conexión de acceso telefónico. Se almacenarán y utilizarán de forma permanente.

  8. Conéctese a través de la nueva conexión de acceso telefónico.

  9. Ahora no tiene acceso a los servidores de nombres (porque están protegidos por la VPN); debe editar la dirección del servidor de la conexión VPN. Reemplace el host por la IP.

  10. Conéctese a través de una conexión VPN y debería poder usarlo.

Nota: En general, los nombres de host no cambian, pero las direcciones IP sí. Así que si no funciona algún día, vuelve a hacer los pasos...

Hola Alexander, eso sonaba como un enfoque prometedor. Sin embargo, no tuve suerte, aunque el orden de resolución de dns se veía bastante bien. Tiene que consultar de nuevo con nuestro departamento de TI.

Intente cambiar el orden de las entradas de DNS en el panel de preferencias Red:

  1. Abra Preferencias del sistemaRed .

  2. Seleccione su servicio de red en la lista de la izquierda.

  3. Desbloquee el panel de preferencias usando el candado en la esquina inferior izquierda.

  4. Haga clic en Avanzado... y elija la pestaña DNS .

  5. Cambie el orden de los servidores DNS arrastrándolos hacia arriba o hacia abajo.

Esto no proporciona una respuesta a la pregunta. Para criticar o solicitar una aclaración de un autor, deje un comentario debajo de su publicación; siempre puede comentar sus propias publicaciones y, una vez que tenga suficiente reputación, podrá comentar cualquier publicación .
Ese es un comentario extraño. El cartel no mencionó si había intentado esto en su pregunta y podría ser una solución relevante y simple para su problema. Difícil de decir sin usar la misma configuración.
Tal como está redactado, está escrito como una solicitud de aclaración: las respuestas deben escribirse como respuestas; los comentarios es el lugar más adecuado para solicitar aclaraciones. Esta respuesta estaba en la cola de revisión de publicaciones de baja calidad y, en mi opinión, ese comentario de stock parecía el más apropiado. De hecho, reformular esto como una respuesta (y agregar detalles como capturas de pantalla y una lista de instrucciones con el formato adecuado) haría de esta una respuesta completa y legítima.
Esto es ridículo. ¿Eres Rainman o qué? Fue una respuesta expresada de manera pasiva y humilde (ya que es tan obvio que la persona que hizo la pregunta, que parecía bastante hábil, probablemente lo había intentado pero se olvidó de mencionarlo en la pregunta). Y si hubiera probado mis sugerencias usted mismo, habría notado que lo más probable es que no fueran necesarios más pasos más allá de los pasos incluidos (Preferencias del sistema -> Red) para alguien tan competente como el OP.
Como he dicho, esta es simplemente mi opinión. Por cierto, no fui yo quien te votó negativo. He editado tu respuesta para incluir más detalles sobre los pasos. Siéntase libre de deshacer la edición si cree que fue inapropiada.
Ese es un argumento ridículo. ¿Debería rechazarse una respuesta a una pregunta de programación complicada porque no explica los fundamentos de la programación orientada a objetos? No entiendo la mayoría de las respuestas en la sección sobre matemáticas, ¿deberían rechazarse porque no pasan por los fundamentos de la transformación de integrales?

lo que dijiste me dio una pista, así que agregué la ip dns en la conexión vpn a la lista dns en la conexión principal (nada especial, solo usando la interfaz gráfica para las preferencias de red). No estoy seguro si lo que estamos tratando es diferente, pero funcionó conmigo.

No funciona en Lion/Mountain Lion, debido a un error que provoca que el servidor DNS local se utilice siempre en lugar del servidor DNS de la red remota, incluso cuando el DNS dividido está configurado correctamente en el enrutador VPN.

Sin embargo, si utiliza un enrutador Cisco ASA IPSEC, puede forzar el uso de servidores DNS remotos siempre que establezca una conexión VPN:

Si utiliza Cisco ASDM, vaya a Configuración > Acceso a la red (cliente) > Políticas de grupo > (su grupo vpn para OSX/iPhones) > Avanzado > Túnel dividido

Allí configurado: nombres DNS (desmarque "heredar" y defina los nombres de dominio dns internos, por ejemplo, myoffice.local) Enviar todas las búsquedas de DNS a través del túnel: configure SÍ (esta es la configuración importante)

Guárdalo y no olvides guardarlo en el flash para usarlo en el futuro.

Si utiliza la línea de comandos de IOS, configure:

group-policy <your-tunnel-group-name> attributes
 split-dns value myoffice.local
 split-tunnel-all-dns enable`

Puede solucionar esto ajustando el orden de servicio de las conexiones de red. Mueva VPN a la parte superior de la lista y seguirá el orden de resolución.

http://support.apple.com/kb/PH14006


Contenido del enlace encontrado en https://web.archive.org/web/20170828193724/https://support.apple.com/kb/PH14006?locale=en_US y duplicado aquí:

OS X Mavericks: cambie la prioridad de sus conexiones de red
Este artículo ha sido archivado y Apple ya no lo actualiza.

Si se conecta a Internet oa una red de varias maneras diferentes (usando Wi-Fi o Ethernet, por ejemplo), puede cambiar el orden de las configuraciones de puertos de red que su computadora intenta cuando se conecta a Internet oa una red.
Si hay varias configuraciones de puerto de red activas cuando intenta conectarse, OS X prueba primero con la que está en la parte superior de la lista y luego prueba con las otras configuraciones de puerto en orden descendente.

  • Elija el menú Apple > Preferencias del sistema y luego haga clic en Red.
  • Elija Establecer orden de servicio en el menú emergente Acción. [El icono de engranaje al lado de + -]
  • Arrastre un servicio, como Ethernet, a la parte superior de la lista.
  • Haga clic en Aceptar y luego en Aplicar para activar la nueva configuración.

Si se conecta a Internet mediante una red privada virtual (VPN) y seleccionó "Enviar todo el tráfico a través de una conexión VPN" en el panel de opciones avanzadas de las preferencias de VPN, no necesita mover el servicio VPN a la parte superior de la lista.
Fecha de publicación: 20 de octubre de 2015

El artículo ya no está.