Desde la versión 9 de bind, éste permite establecer una configuración más compleja de las zonas DNS. Concretamente en lo que a vistas se refiere. Si estamos en una organización de tamaño medio/grande lo más probable es que el número de equipos sea elevado y también que exista una configuración de red con DMZ, VLAN's, etc. En estos esquemas de red, cuando tú accedes a tu web, local.net, no es lo mismo estar dentro que estar fuera de la red de la oficina. Desde fuera realmente quién debe contestar es una IP pública, mientras que desde dentro, debería de contestar una IP privada. La IP de DMZ del servidor en cuestión. Para conseguir este tipo de comportamiento necesitamos emplear las múltiples vistas del DNS. Es decir, tendríamos una primera vista local (IP's del rango locales) y una vista externa (IP's públicas). La primera para trabajar en la oficina y la segunda para Internet. Por supuesto lo que exista en una vista no debe ni tiene que existir en la otra.
A nivel ya de configuración vamos a emplear las view de bind. Las ventajas que esto ofrece es que permite en un único daemon ejecutar varias vistas y todas ellas sobre un único interfaz de red (IP). Vamos por lo tanto a inventar los datos para poner un ejemplo que clarifique lo que estamos comentando. Lógicamente los datos son inventados y las IP's públicas distan mucho de la realidad.
115.26.35.2/8 | Rango público |
192.168.0.0/24 | Rango privado/DMZ |
Y tenemos 3 servidores, con sus respectivos servicios ejecutándose con la siguiente configuración. Suponemos que existe un firewall que hace NAT entre la IP pública y la IP privada y que permite diferenciar la DMZ de la red local de la empresa.
Nombre
|
IP pública
|
IP privada
|
ns.local.net
|
115.26.35.4 |
192.168.0.4 |
www.local.net
|
115.26.35.6 |
192.168.0.6 |
mail.local.net
|
115.26.35.7 |
192.168.0.7 |
Puesto que partimos de un bind ya instalado, su instalación no la vamos a detallar, simplemente vamos a editar los ficheros de configuración que correspondan para que el servicio funcione con dos vistas.
El primer fichero a editar es /etc/bind/named.conf. Puesto que nos interesa que sea escalable, para futuras incorporaciones de ficheros y servicios, este fichero contendrá los includes necesarios.
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.dmz";
include "/etc/bind/named.conf.externo";
Como podemos observar desplegamos para que sea más fácil de comprender los named en 3 ficheros completamente independientes.
Nótese aquí que el fichero de configuración de las DMZ's está antes que el de las zonas externas. Esto debe ser así, por que es más restrictivo.
- named.conf.options
Este fichero contiene las opciones de configuración globales del servicio.
options {
directory "/var/cache/bind";
allow-query { any; };
allow-recursion { any; };
auth-nxdomain no;
version "bind-9";
};
- named.conf.dmz
Fichero de configuración para la vista de DMZ. Las primeras líneas contienen las acl's a nivel de IP's que se van a tener en cuenta para saber si un equipo debe leer esta vista o no. Puesto que es más restrictivo, este fichero de debe cargar antes.
acl "dmz" {
192.168.0.0/24;
192.168.1.0/24;
127.0.0.1
};
view "dmz" {
match-clients { "dmz"; };
include "/etc/bind/named.conf.base";
zone "local.net" {
type master;
file "/etc/bind/directas/local.net.dmz";
};
include "/etc/bind/named.conf.master.common";
include "/etc/bind/named.conf.rev";
};
- named.conf.externo
Este fichero contiene la información para la vista externa y como se puede observar en la segunda línea, hace match para todos los clientes, de ahí que deba ser el último en colocarse. También y como medida de seguridad está la línea allow-transfer { none; }, simplemente para indicar que ningún servidor es secundario.
view "externo" {
match-clients { any; };
include "/etc/bind/named.conf.base";
zone "local.net" {
type master;
notify-source 192.168.0.4;
allow-transfer { none; }
file "/etc/bind/directas/local.net.externo";
};
include "/etc/bind/named.conf.master.common";
include "/etc/bind/named.conf.rev";
};
En este punto ya tenemos todo configurado y sólo queda por rellenar los valores de los ficheros local.net.dmz y local.net.externo, que tendrá los nombres e IP's. Aquí únicamente debemos de tener en cuenta no poner una IP pública o privada en el fichero incorrecto.
- local.net.dmz
$TTL 3600
@ IN SOA ns.local.net. root.local.net. (
2010022401
86400
7200
2592000
3600 )
IN NS ns.local.es.
IN MX 10 mail.local.net
ns IN A 192.168.0.4
www IN A 192.168.0.6
mail IN A 192.168.0.7
- local.net.externo
$TTL 3600
@ IN SOA ns.local.net. root.local.net. (
2010022401
86400
7200
2592000
3600 )
IN NS ns.local.es.
IN MX 10 mail.local.net
ns IN A 115.26.35.4
www IN A 115.26.35.6
mail IN A 115.26.35.7
Después de esto simplemente tendremos que hacer un restart del servicio bind y las nuevas vistas (dmz y externo) serán cargadas automáticamente, simplificando enormemente trabajar desde la oficina empleando nombres.
Leer más