Archivo de la etiqueta: view

Vistas en un servidor DNS ó cómo resolver en función del cliente

Hoy voy a hablaros de algo que utilizo desde 2001 aproximadamente y que creo que cualquiera que trabaje en un entorno soho debería conocer ya que es la solución a todos sus problemas de resolución DNS, sin embargo he llegado a la conclusión de que es un completo desconocido. En esta situación nuestra infraestructura de red sería algo del estilo de la imagen que muestro a continuación.

SOHOEs decir, del router hacia adentro estamos en la red local de la oficina con direcciones privadas mientras que hacia el exterior se utiliza la IP pública del router, la que nos da nuestro proveedor de ADSL/Cable.

Supongamos ahora que por motivos de trabajo necesitamos que nuestro servidor responda ante algún dominio o subdominio de manera que desde el exterior se pueda acceder a determinados servicios que ofrecemos (y no, no queremos usar la IP directamente :P). Utilizando NAT configuramos el router para que las peticiones que le lleguen desde el exterior a determinados puertos las redirija al servidor.

En la imagen he pintado en rojo el camino que seguirían las solicitudes que llegan desde el exterior y en verde las que llegan de la propia red local. El problema habitual de un entorno de este tipo es que desde dentro de la red no se puede acceder al servidor con el nombre de dominio ya que la resolución devuelve una IP pública que está al otro lado del router, es decir, por simplificarlo un poco, el router no permite acceder desde el interior a los servicios que ofrece al exterior. Es simplemente un problema de interfaces y enrutamiento.

La solución pasa por convertir a nuestro servidor en el DNS principal de los usuarios de la red en vez de utilizar los que nos da nuestro proveedor, y configurar en él nuestro dominio de manera que dependiendo de quien lo interrogue nos devuelva la ip pública del router o la ip privada del servidor. Esto se puede hacer con las llamadas «vistas» de bind, imagino que en otros servidores DNS se podrán configurar del mismo modo.

Vale, creo que no he entendido nada de lo que has dicho. ¿Qué son esas vistas de las que hablas? Tranquilos que os lo explico.

Fíjate de nuevo en la imagen de arriba. Es obvio que los clientes que intentan acceder desde el exterior a nuestro servidor deberán utilizar la IP pública del router, NAT se encarga después de hacerlas llegar al servidor. Desde el interior es diferente, nuestras máquinas están en la misma red local que el servidor, sólo debemos saber la IP del servidor para acceder a él. Bien, pues esto es, a grandes rasgos, lo que hacen las vistas: si el cliente que me llama lo hace desde el exterior le digo la IP pública, si es desde el interior le digo la privada.

La configuración es extremadamente sencilla. Deberemos editar /etc/named.conf y hacer algo así:

#DNSINTERNO
view "internal" {
	match-clients { 192.168.0.0/24; 127.0.0.0/8; };
        zone  "dominio.com" {
                type master;
                file  "dominio.com.internal.zone";
        };
};
#DNSEXTERNO
view "external" {
        match-clients { any; };
        zone  "dominio.com" {
                type master;
                file  "dominio.com.external.zone";
        };
};

Eso es todo, sí, no hay más truco. El nombre de las vistas lo pones tú, algo que te permita identificar qué es cada una. Para cada vista le indicas qué clientes la verán y el archivo de zona con las resoluciones. Ya sólo nos falta configurar los clientes para que utilicen tu servidor DNS y preparar el dominio para que tu máquina local sea el servidor DNS mediante la IP pública.

Obviamente os he dado los detalles a grandes rasgos, a partir de ahí seguro que se os ocurren utilidades y combinaciones entre redes y subredes mucho más útiles. Al menos os ayudará a muchos a crear un entorno mucho más productivo y cómodo.