DNS
Introducción
DNS es una base de datos distribuida de datos asociados a dominios. A cada dominio se le llama zona y cada zona está compuesta por una serie de registros. Entre los posibles tipos registros están:
- A
- MX
- TXT
- CNAME
DNS también es un protocolo que consiste en una cosulta (query) y una respuesta (response).
Referencias
Consultar DNS
Desde Python 3, se puede consultar DNS a través del paquete dnspython: http://www.dnspython.org/
import dns.resolver
respuesta = dns.resolver.query("labsys.frc.utn.edu.ar", "A")
for r in respuesta:
print(r)
También se puede hacer usando nslookup:
nslookup -type=txt _acme-challenge.alertas2.sistemabravo.com.ar
Buscar datos de dominio:
https://lookup.icann.org/en
Diseño en cuanto a seguridad
Cada consulta DNS tiene asociada un ID de transacción (Transaction ID) y la respuesta tiene el mismo. Este ID debe ser los más aleatorio posible (debe ser impredecible). Además, el puerto de origen también lo debe ser.
El servidor debe escuchar en el puerto 53 tanto en UDP como en TCP. En el RFC 7766 se especifica el diseño de DNS sobre TCP.
Referencias