Volver |

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:

  1. A
  2. MX
  3. TXT
  4. CNAME

 

DNS también es un protocolo que consiste en una cosulta (query) y una respuesta (response).

Referencias

https://powerdns.org/hello-dns/

https://www.cloudflare.com/learning/dns/what-is-dns/

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

https://tools.ietf.org/html/rfc7766

En este artículo participaron: