El firewall de Mountain Lion está retrasando aleatoriamente las solicitudes de DNS

5

Recientemente experimenté algunos retrasos durante la resolución del host DNS en OS X 10.8. Para probarlo, inicié un script simple que intenta resolver repetidamente el mismo nombre de host 20 veces:

#!/bin/sh
for i in 'seq 20'; do
    time -p dig www.google.com @8.8.8.8 | grep "^;; Query time:"
done

La mayoría de las solicitudes toman aproximadamente el mismo tiempo que la latencia del servidor de nombres:

;; Query time: 49 msec
real 0.05

Sin embargo, tan pronto como habilito el firewall en Mountain Lion (todas las solicitudes entrantes están permitidas, modo oculto está no habilitado), algunas de las solicitudes dig toman exactamente 5 segundos más la latencia del servidor de nombres:

;; Query time: 25 msec
real 5.03

La mayoría de las solicitudes siguen siendo rápidas, pero alrededor de cada 10 a 15 solicitudes tienen un retraso de exactamente 5 segundos, incluso a través de dig aún se informa un breve tiempo de consulta. No hace ninguna diferencia si uso dig o host para las pruebas, o si uso un servidor DNS local o uno público como en el ejemplo anterior. Cuando el firewall se apaga, el retraso nunca ocurre.

¿El firewall de OS X impone algún tipo de limitación de velocidad para las solicitudes, o hay algo más que me falta?

    
pregunta skrause 01.02.2013 - 12:14

1 respuesta

1

Tienes razón. Diagnostico la misma limitación de velocidad en el nivel de firewall en MacOS X 10.7.4 (Lion).

Por otra parte, si nos fijamos en

/usr/bin/sudo tcpdump -i en0 udp port 53

Observará que el tiempo de ida y vuelta para obtener una respuesta de 8.8.8.8 es mucho menor que los 40 ms que muestra el servidor.

En una prueba larga que tuve:

;; Query time: 44 msec

y un tiempo promedio de ida y vuelta de 26 mseg:

09:36:14.360564 IP me.53866 > google-public-dns-a.google.com.domain: 9943+ A? www.google.com. (32)
09:36:14.386302 IP google-public-dns-a.google.com.domain > me.53866: 9943 5/0/0 A 173.194.41.180, A 173.194.41.178, A 173.194.41.176, A 173.194.41.177, A 173.194.41.179 (112)

(386302 - 360564 = 26 mseg)

Para comprender este mecanismo de protección (contra el DOS básico), vea en:

/usr/bin/sudo pfctl -i en0 -s timeouts

La documentación completa de este comando complejo es pfctl (8 ) Manual de referencia del león de montaña

Cuidado, este es un comando poderoso pero altamente peligroso. Puede interrumpir fácilmente su acceso a la red (¿Dónde está mi copia de seguridad?).

    
respondido por el daniel Azuelos 01.08.2013 - 10:28

Lea otras preguntas en las etiquetas