Saltar a contenido

Desplegado de DNS

Para el proyecto se crearán cuatro zonas distintas, dos para la red interna y dos para la red externa de los siguientes tipos:

  • Resolución directa.
  • Resolución inversa.

Las zonas de la red interna solo se podrán consultar desde la misma red interna, mientras que las zonas de la red externa se podrán consultar desde tanto la red interna como la externa.

Esto se debe a que la zona externa servirá para permitir a los clientes externos resolver el nombre de dominio del servidor, pudiendo así acceder a la página web de la empresa, mientras que la zona interna servirá para uso administrativo en la red interna y por tanto no se deberá poder consultar desde fuera.

Instalación

Para este ejercicio utilizaremos el servicio bind9, el cuál instalaremos con el siguiente comando:

sudo apt update && sudo apt install -y bind9

Una vez instalado, podremos ejecutar systemctl status named para comprobar que este funcione correctamente:

Servicio DNS activado.

Servicio DNS activado.

Configuración

Como se documentó al principio de la sección, crearemos una zona directa e inversa tanto para la red interna como para la externa, a continuación se mostrará su creación y configuración.

Activando las zonas

Para declarar las zonas y configurar las restricciones de consulta modificaremos el archivo /etc/bind/named.conf.local y añadiremos las siguientes entradas:

zone "pve1.fpmislata.fp" {
    type master;
    allow-query {192.168.6.0/24; 127.0.0.0/8;};
    file "db.master.pve1.fpmislata.fp";
};

zone "6.168.192.in-addr.arpa" {
    type master;
    allow-query {192.168.6.0/24; 127.0.0.0/8;};
    file "6.168.192.in-addr.arpa";
};

zone "clearfrost.es" {
    type master;
    allow-query {any;};
    file "db.master.clearfrost.es";
};

zone "204.16.172.in-addr.arpa" {
    type master;
    allow-query {any;};
    file "204.16.172.in-addr.arpa";
};

Como se puede ver, las zonas internas (6.168.192.in-addr.arpa / pve1.fpmislata.fp) solo se podrán consultar desde 192.168.6.0/24 y 127.0.0.0/8, mientras que las otras dos zonas se podrán consultar desde cualquier red.

Parámetros del servicio DNS

Algo importante a tener en cuenta es que los clientes también tendrán que poder resolver nombres de dominio ajenos a la Intranet, con lo que aplicaremos las siguientes configuraciones en el archivo /etc/bind/named.conf.options para que el servidor DNS redirija peticiones desconocidas a los servidores DNS de CloudFlare y Google (1.1.1.1, 8.8.8.8).

options {
  directory "/var/cache/bind";
  forwarders {
    1.1.1.1;
    8.8.8.8;
    };
  allow-recursion { 192.168.6.0/24; 172.16.204.0/24; 127.0.0.0/8; };
  dnssec-validation no;
  listen-on-v6 { none; };
};

dnssec-validation y listen-on-v6 son funciones que no serán utilizadas en el servidor DNS, con lo que para mejorar la seguridad de este se desactivarán. allow-recursion nos permitirá definir las redes que podrán realizar peticiones recursivas, lo cuál es necesario para que el servidor DNS pueda resolver las consultas desconocidas de clientes exteriores.

Poblando las zonas

Note

bind9 por defecto almacena las bases de datos de zona en la ruta /var/cache/bind/.

Registros directos

Para crear los registros directos de la red interna se configurarán los siguientes contenidos en el archivo db.master.pve1.fpmislata.fp:

$TTL    86400
@       IN      SOA     frontera1.pve1.fpmislata.fp. admin.pve1.fpmislata.fp. (
        2         ; Serial
   604800         ; Refresh
    86400         ; Retry
  2419200         ; Expire
    86400 )       ; Negative Cache TTL
;

@               IN      NS      frontera1.pve1.academia.tolovendo.es.
@               IN      A       192.168.6.1
gateway         IN      A       192.168.6.1
frontera1       IN      A       192.168.6.254
wordpress1      IN      A       192.168.6.253
wordpressclon1  IN      A       192.168.6.252

Para crear los registros directos de la red externa se configurarán los siguientes contenidos en el archivo db.master.clearfrost.es:

$TTL    86400
@       IN      SOA     ns1.clearfrost.es. admin.clearfrost.es. (
        2         ; Serial
   604800         ; Refresh
    86400         ; Retry
  2419200         ; Expire
    86400 )       ; Negative Cache TTL
;

@       IN      NS        ns1.clearfrost.es.
@       IN      A         172.16.204.231
www     IN      CNAME     clearfrost.es.
ns1     IN      A         172.16.204.231
ping    IN      A         172.16.204.231

Registros inversos

Para crear los registros inversos de la red interna se configurarán los siguientes contenidos en el archivo 6.168.192.in-addr.arpa:

$TTL    604800
@       IN      SOA     frontera1.pve1.fpmislata.fp. admin.pve1.fpmislata.fp. (
              2         ; Serial
         604800         ; Refresh
          86400         ; Retry
        2419200         ; Expire
         604800 )       ; Negative Cache TTL
;

@    IN    NS     frontera1.pve1.fpmislata.fp.
1    IN    PTR    gateway.pve1.fpmislata.fp.
254  IN    PTR    frontera1.pve1.fpmislata.fp.
253  IN    PTR    wordpress1.pve1.fpmislata.fp.
252  IN    PTR    wordpressclon1.pve1.fpmislata.fp.

Para crear los registros inversos de la red externa se configurarán los siguientes contenidos en el archivo 204.16.172.in-addr.arpa:

$TTL    604800
@       IN      SOA     ns1.clearfrost.es. admin.clearfrost.es. (
              2         ; Serial
         604800         ; Refresh
          86400         ; Retry
        2419200         ; Expire
         604800 )       ; Negative Cache TTL
;

@   IN NS ns1.clearfrost.es.
231 IN PTR clearfrost.es.
231 IN PTR ns1.clearfrost.es.

Comprobaciones

Si queremos comprobar que los parámetros del servicio estén correctamente configurados, podemos utilizar el comando named-checkconf, el cuál nos avisará de cualquier error que hayamos cometido.

En el caso de las bases de datos de zonas, podemos utilizar el siguiente comando:

named-checkzone "$DOMINIO" "$ARCHIVO_ZONA"

Este nos indicará si hemos cometido algún error al configurar la base de datos, como por ejemplo no incluir ningún registro NS.

Red interna

Para comprobar el funcionamiento del servicio DNS, utilizaremos el comando nslookup para probar a consultar tanto los registros directos como inversos:

Consultas al servidor DNS desde la red interna.

Consultas al servidor DNS desde la red interna.

Como se puede ver, las máquinas de la red interna son capaces de consultar tanto los registros de la zona interna como la zona externa.

Red externa

Utilizando nslookup otra vez, podemos comprobar que podemos resolver los nombres externos de nuestro servidor, pero si intentamos consultar un nombre interno, no recibiremos ninguna respuesta, protegiendo la información interna de la red:

Danger

REMEMBER TO REPLACE THE SCREENSHOT WITH ONE USING THE ACTUAL SERVER

Consultas al servidor DNS desde la red externa.

Consultas al servidor DNS desde la red externa.