Soy el proceso de configurar un monitoreo de servidores DNS de varios hosts web grandes. Mi objetivo es comparar los tiempos de respuesta de sus servidores DNS mediante el seguimiento de su respuesta al ping.
En el proceso, descubrí que los servidores de nombres Bluehost no responden al ping. Traté de obtener más información ejecutando Pingdom DNS Check en bluehost.com y produjo el siguiente error:
El servidor de nombres ns1.bluehost.com (74.220.195.31) no responde consultas a través de TCP.
El servidor de nombres no pudo responder las consultas enviadas a través de TCP. Esto probablemente se deba a que el servidor de nombres no está configurado correctamente o debido a un filtro mal configurado en un firewall. Es una idea errónea bastante común que el DNS no necesita TCP a menos que proporcione transferencias de zona; tal vez el administrador del servidor de nombres no es consciente de que TCP generalmente es un requisito.
Me gustaría saber lo siguiente:
- ¿En qué medida es verdadera la afirmación anterior?
- ¿Cuáles son las implicaciones de un servidor de nombres que no responde consultas a través de TCP?
fuente
debería admitir TCP y UDP: el TCP es para tamaños de respuestas> 512 bytes (lo que incluiría transferencias de zona) (de acuerdo con lo que he leído, de todos modos. Por lo general, habilito TCP y UDP para los NS que ejecuto ...)
fuente
Es bueno saber lo que dicen los RFC sobre el tema, y ya tenemos una buena respuesta autorizada al respecto, pero para fines prácticos, encuentro el consejo del profesor Daniel J. Bernstein, PhD, autor de DJBDNS, bastante entretenido.
http://cr.yp.to/djbdns/tcp.html#why (2003-01-16)
Tenga en cuenta que omite una mención explícita de DNSSEC; la razón es que, según DJB, DNSSEC cae en la categoría de "siempre un error". Consulte https://cr.yp.to/djbdns/forgery.html para obtener más detalles. DJB tiene un estándar alternativo, llamado DNSCurve - http://dnscurve.org/ - que ya ha sido adoptado independientemente por algunos proveedores (como OpenDNS). De interés: /security/45770/if-dnssec-is-so-questionable-why-is-it-ahead-of-dnscurve-in-adoption .
Tenga en cuenta que si la documentación anterior sobre la configuración de DJBDNS es una indicación de sus características, parece que solo es compatible con AXFR para TCP. Como muchos proveedores todavía usan DJBDNS, es poco probable que admitan DNS sobre TCP sin esfuerzos adicionales.
PD Tenga en cuenta que DJB, de hecho, practica lo que predica. Sus propios servidores, (1), ejecutan DNSCurve, (2), no responden correctamente TCP. Solo el
+notcp
éxito (que es el predeterminado):, mientras
+tcp
que a fallaría (aparentemente con un mensaje de error diferente, dependiendo de cuál de sus servidores se seleccione):fuente
TCP solo se requiere, y generalmente solo se usa cuando se requiere una respuesta larga. Puede haber impactos negativos. Las transferencias de zona se realizan a través de TCP, ya que son grandes y deben ser confiables. No permitir TCP desde servidores no confiables es una forma de garantizar que solo se den respuestas pequeñas.
Con la introducción de respuestas DNS firmadas, ha habido un requisito para aflojar el límite de 512 bytes a las respuestas UPD. EDNS0 proporciona el mecanismo para respuestas UDP más largas. Si no se permite DNS sobre TCP, es muy probable que se rompa una implementación segura de DNS.
Es perfectamente posible ejecutar un servidor DNS que solo tenga el puerto UDP 53 abierto a Internet. Se requiere acceso TCP a pares DNS, pero esta es una pequeña lista de hosts.
Hay un RFC596 más nuevo que ahora requiere TCP para una implementación completa de DNS. Esto está dirigido a implementadores. Los documentos específicamente no se dirigen a los operadores, pero advierten que no permitir TCP puede dar lugar a una serie de escenarios de falla. Detalla una amplia variedad de fallas que pueden resultar si DNS sobre TCP no es compatible.
Ha habido discusiones sobre el uso de TCP para prevenir ataques de amplificación de DNS. TCP tiene sus propios riesgos de denegación de servicio, pero la distribución es más difícil.
fuente