4 votos

OS X no consulta los nombres DNS locales correctamente

Ninguna de las máquinas cliente de OS X en nuestro lugar de trabajo consulta los nombres DNS locales de nuestros servidores correctamente después de conectarse a la VPN. Para otras máquinas cliente -incluyendo Linux y Windows- funciona correctamente.

Sólo un poco de contexto: nuestros servidores eran accesibles públicamente antes. Desde que empezamos a asegurar todo, procedimos a ponerlos detrás de un firewall y son accesibles sólo a través de VPN. Como nuestros desarrolladores están acostumbrados a acceder a los servidores a través de fqdn, añadimos un servidor DNS local. Así que cuando se conectan a nuestra VPN, la configuración DHCP + DNS se pasaría a sus máquinas automáticamente. Dos IPs de servidor DNS, una es para la resolución local y otra para la resolución pública. Desafortunadamente, todos nuestros usuarios de OS X están experimentando estos problemas. Las máquinas Linux y Windows no.

Servidor: riker.example.com

  • 120.x.x.x (dirección IP pública)
  • 10.20.1.28 (Dirección IP local)

La configuración del DNS que se transmite a nuestros usuarios:

  • 10.20.1.3 (para local)
  • 8.8.8.8 (para el público)

Ya lo hemos comprobado:

  • La configuración del servidor DNS de nuestro dispositivo Fortigate - estamos 100% seguros de que es correcta porque nuestros clientes Linux y Windows funcionan.
  • Políticas del cortafuegos - de nuevo, 100% seguro porque funciona correctamente con Linux y Windows
  • Compruebe los archivos /etc/resolv.conf de las máquinas OS X - la configuración DNS correcta dada por el servidor DNS [editar 6 de junio de 2016].
  • Vaciar la caché de DNS usando esto: sudo killall -HUP mDNSResponder
  • Desactivado el firewall de las máquinas OS X
  • Reinicio de mDNSresponder

Después de todos estos pasos de solución de problemas, sigue sin funcionar.

Si estoy conectado a la VPN, sigue resolviendo la dirección IP pública y no la local:

heineken:~ heineken$ ping riker.example.com
PING riker.example.com (120.x.x.x): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
^C
--- riker.example.com ping statistics ---
3 packets transmitted, 0 packets received, 100.0% packet loss
heineken:~ heineken$

Pero si hago un ping a la dirección local :

heineken:~ heineken$ ping 10.20.1.28
PING 10.20.1.28 (10.20.1.28): 56 data bytes
64 bytes from 10.20.1.28: icmp_seq=0 ttl=63 time=62.714 ms
64 bytes from 10.20.1.28: icmp_seq=1 ttl=63 time=83.162 ms
^C
--- 10.20.1.28 ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 62.714/72.938/83.162/10.224 ms

Comprobación mediante dig y nslookup (todavía conectado a la VPN):

heineken:~ heineken$ dig @10.20.1.3 riker.example.com

; <<>> DiG 9.8.3-P1 <<>> @10.20.1.3 riker.example.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64601
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;riker.example.come. IN A

;; ANSWER SECTION:
riker.example.com. 3600 IN A 10.20.1.28

;; Query time: 58 msec
;; SERVER: 10.20.1.3#53(10.20.1.3)
;; WHEN: Fri Jun 10 11:33:00 2016
;; MSG SIZE  rcvd: 52

heineken:~ heineken$ nslookup riker.example.com
Server: 10.20.1.3
Address: 10.20.1.3#53

Non-authoritative answer:
Name: riker.example.com
Address: 10.20.1.28

Contenido de /etc/resolv.conf de la máquina local (todavía conectada a la VPN):

heineken:~ heineken$ cat /etc/resolv.conf
#
# Mac OS X Notice
#
# This file is not used by the host name and address resolution
# or the DNS query routing mechanisms used by most processes on
# this Mac OS X system.
#
# This file is automatically generated.
#
nameserver 10.20.1.3
nameserver 8.8.8.8

Como puedes ver arriba, al hacer ping al dominio sigue dando la dirección IP pública y no la local. Pero con dig y nslookup, ya está dando la dirección IP local.

Hice algunas cosas más:

  • Probé las soluciones presentadas desde aquí: El DNS no se resuelve en Mac OS X - todavía no nos ha funcionado.
  • Instalé una máquina virtual CentOS - dentro de una máquina OS X y la hice tener una conexión puente. Resolvía correctamente el dominio a nivel local.
    • Esto significa que Forticlient puede ser eliminado de la ecuación ya que la VM de OS X y CentOS sólo comparten el mismo adaptador.
  • Buscó soporte L3 de Fortigate
    • Hicimos un montón de tcpdump en el dispositivo Fortigate para comprobar el tráfico.
      • Descubrimos que cuando una máquina Linux o Windows hace ping a un dominio, busca primero la petición DNS del dispositivo Fortigate.
      • Desafortunadamente para la máquina OS X, no hace ninguna petición de DNS desde el dispositivo Fortigate. Así que lo que ocurre es que sigue resolviendo al dominio público.
    • Me informaron de que el problema está localizado en los dispositivos OS X porque incluso después de limpiar la caché, no realiza ninguna consulta DNS al hacer ping a riker.example.com. Así que ya no pueden ayudarnos.

Esto fue probado en: Versiones de OS X: Yosemite 10.10.4, El Capitan 10.11.5 Versión del firmware de Fortigate 100D: v5.2.4,build688 (GA) Versión de Forticlient: 5.4.0.493

¿Algún consejo?

1voto

moneyt Puntos 146

Creo que la clave de tu problema podría ser que tu DNS interno es "no autoritario" (ver la salida de nslookup), sugerido en la respuesta a esta pregunta: El DNS resuelve la IP externa de los servidores en lugar de la IP interna

Si ejecuta nslookup -type=soa riker.example.com, ¿el servidor "origen" es su servidor DNS local o público?

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