domingo, 17 de enero de 2016

Instalacion DNS con maestro y esclavo

Instalacion DNS con maestro y esclavo


Usamos Bind, mi sistema es un Ubuntu Server 8.04 LTS.-

Primeramente pasamos a instalar el paquete “bind9″, luego su documentación “bind9-doc” y luego el dns utils “dnsutils”:

$apt-get install bind9 bind9-doc dnsutils

Esto, nos instala Bind9 en /etc/bind/ donde ya solamente hay que configurar a nuestro agrado. Tengamos a mano ya los dominios que quisieramos Hostear y nuestra IP Pública por supuesto.

Primero que todo, debemos configurar a mi preferencia (antes de crear un DNS Primario o un Secundario), el fordwaring que hará que nuestro dominio, resuelva de dominio a IP, para eso es muy sencillo, nos vamos primeramente al directorio donde se nos instaló el Bind, vemos los archivos que hay dentro, y editamos el archivo named.conf.options, asi:

$cd /etc/bind
$nano named.conf.options

Dentro del archivo, vamos a encontrar una linea comentada como esta:

// forwarders {
// 0.0.0.0;
// };

Donde, obviamente la vamos a descomentar, y reemplazar la IP, por nuestra IP que nos dió nuestra ISP. Ahora cerramos y guardamos, y configuramos las zonas, para ello abrimos:

$nano named.conf

Rápidamente vamos a fijarnos que ya hay varias “zonas” creadas, y nos fijaremos en su extructura, bueno, en donde querramos, creamos nuestra zona, como ejemplo, doy mi dominio:

zone “val.blom.lan” {
type master;
file “/etc/bind/val.blom.lan”;
allow-query { any; };
allow-transfer { slaves; };
};

En donde cuando especifico:

allow-query { any; }

me refiero a que permito entradas o consultas de cualquier Host, y cuando me refiero a:

allow-transfer { slaves; }

me refiero a que permito mis transferencias a los esclavos
include “/etc/bind/named.conf.options”;

añadimos los esclavos, qué son?, es una lista de acceso quienes tendrán permiso de transferencia solamente en nuestro DNS Secundario, donde se especifica la IP del DNS Secundario, por lo que, debajo de la linea que indiqué, escribimos:

acl “slaves” {
123.123.123.1;
};

Ahora si!, guardamos y cerramos (en nano es CTRL X para guardar cambios y cerrar), y como ven, en nuestras lineas donde configuramos la Zona de UN dominio, especificamos un archivo de nuestra zona de ese X dominio, que en mi caso fue “val.blom.lan”:

file “/etc/bind/val.blom.lan”;

Por lo que hay que crear este archivo, asi que vamos a /etc/bind, y creamos el archivo “val.blom.lan” con nano y escribimos:

Archivo de la zona val.blom.lan para el BIND

$TTL 86400
@ IN SOA ns1.val.blom.lan. root.val.blom.lan. (
2008080501 ; serialid
10800 ; refresh
3600 ; retry
86400 ; expire
3600) ; default

IN NS ns1.val.blom.lan.
IN MX 10 mail.val.blom.lan.
IN A 123.123.123.1
ns1 IN A 123.123.123.1
www IN A 123.123.123.1
mail IN A 123.123.123.3

Ok, tengamos en punto y mucha atención, al final de cada dominio pongo un punto final, donde puse “serialid” es el serial + id, que tendría el formato aaaa/mm/dd/id, y luego los tiempos de vida que le damos (TTL), ahora, antes de crear nuestro DNS Secundario, probamos si vamos bien, para eso reiniciamos el servicio:

/etc/init.d/bind9 restart

y con “dig” (dnsutils) probamos si funciona:

root@SRVWEBMAIL:/etc/bind# dig notasdesamuel.com A @localhost
<<>> DiG 9.4.2 <<>> notasdesamuel.com A @localhost
global options
printcmd
Got answer

->>HEADER<<- dt="" opcode="">
QUERY, status: NOERROR, id: 63286
flags
qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

QUESTION SECTION

   ;notasdesamuel.com.               IN      A


   ;; ANSWER SECTION:
   notasdesamuel.com.        604800  IN      A       123.123.123.1
funciona de maravillas!, ahora a configurar el Secundario, que es básicamente la misma manera como creamos la zona Primaria, solo que el “type” era “master” ahora “slave” obviamente :) así que abrimos de vuelta /etc/bind/named.conf y añadimos:
   zone “notasdesamuel.com” {
   type slave;
   file “/etc/bind/notasdesamuel.com”;
   masters {
   123.123.123.1;
   };
   };
reiniciamos el servicio:
   /etc/init.d/bind9 restart
y listo!, :) ahora ya podemos usarlo sin ningun problema, podemos simplemente ir añadiendo las zonas si asi necesitamos, la parte mas importante ya está basicamente configurada, ya es solo pasar a monitorear su correcto funcionamiento, te recomiendo para ello en una consola tener abierto su log y en otra tener preparada la orden para reinicar por si cualquier mosca:
   tail -f /var/log/syslog
Esto uno lo deja ejecutandose en una consola y nos va mostrando sus logs

Configuración servidor DNS (bind9) en Ubuntu



  • Fragmentos de texto extraídos del tutorial “Cómo configurar BIND” de Hugo Madrid Luna (Crowley) bajo FDL.
BIND es el servidor de nombres de dominio más popular en Internet, que trabaja en todas las plataformas informáticas principales y se caracteriza por su flexibilidad y seguridad.
Domain Name Service (DNS) es el servicio que resuelve los nombres de dominio asociados a una dirección IP para direccionar las peticiones a un servidor en específico. Se utiliza cuando un nodo (o host) en Internet contacta a otro mediante el nombre de domino de la máquina y no por su dirección IP.
A través de este documento se verán las generalidades del servicio de resolución de nombres, la configuración y mantenimiento de un servicio de nombres con BIND, bajo la plataforma Linux, aunque la mayoría de estos conceptos se pueden aplicar a la cualquier servicio de DNS sobre otras plataformas.
Regularmente, todos los equipos que están en Internet o una Intranet tienen una dirección IP única que las identifica, generalmente dividido en cuatro segmentos u ‘octetos’, cuya representación es, por ejemplo, ‘172.29.183.217′, pero el recordar todas las direcciones en este formato sería sumamente difícil, por lo que utilizamos los nombres de dominio para referenciarlos.
Existen varios productos que realizan esta función y en todas las plataformas, pero el más usado es BIND (Berkeley Internet Name Domain), que es distribuido bajo la GNU GPL.
La estructura básica del DNS es similar a un árbol, donde se tiene una raíz o root, los Dominios de Nivel Principal (Top Level Domains) y los dominios de segundo nivel.
Los nombres de dominio completamente calificados o FQDN (fully qualified domain name) se componen por lo general del nombre del host, un nombre de dominio secundario y un nombre de dominio primario o de nivel máximo (top-level domain), que son secciones organizadas jerárquicamente.
Por ejemplo: ‘www.ejemplo.com’. Leyéndolo de derecha a izquierda tenemos un dominio primario (’COM’), un dominio secundario (’EJEMPLO’) y el nombre del host (’WWW’). Algunos dominios primarios son:
org - Organizaciones no lucrativas. com - Organizaciones lucrativas. net - Organizaciones en Internet. gob - Agencias gubernamentales en latinoamérica. mx - Sufijo de México. es - Sufijo de España.
Existen cuatro tipos diferentes de servidores de resolución de nombres:
   * Master (maestro o primario). Aloja los registros autoritarios de una zona, responde las peticiones de resolución de nombres como servidor de autoridad y delega copias a los servidores esclavo.
   * Slave (esclavo o secundario). Responde a las peticiones de resolución de nombres como servidor de autoridad, pero la información es distribuida por los servidores primarios. Se considera que como medida de seguridad, se requiere al menos uno de estos, preferentemente independiente de la infraestructura del primario (red, energia eléctrica y ubicación geográfica).
   * Caching-only (sólo de cache). Responde a las peticiones de resolución de nombres pero no es servidor de autoridad, las respuestas las guarda en memoria por un período determinado.
   * Forwarding (de reenvío). Reenvia las peticiones a una lista de servidores de nombres.
Tipos de registros.
Para ofrecer suficiente flexibilidad en la configuración, se pueden declarar diversos tipos de registros, que hacen referencia a la función del host. A continuación veremos los más importantes.
   * A (Address). Es el registro más usado, que define una dirección IP y el nombre asignado al host. Generalmente existen varios en un dominio.
   * MX (Mail eXchanger). Se usa para identificar servidores de correo, se pueden definir dos o más servidores de correo para un dominio, siendo que el orden implica su prioridad. Debe haber al menos uno para un dominio.
   * CNAME (Canonical Name). Es un alias que se asigna a un host que tiene una dirección IP valida y que responde a diversos nombres. Pueden declararse varios para un host.
   * NS (Name Server). Define los servidores de nombre principales de un dominio. Debe haber al menos uno y pueden declararse varios para un dominio.
   * SOA (Start Of Authority). Este es el primer registro de la zona y sólo puede haber uno en cada archivo de la zona y sólo está presente si el servidor es autoritario del dominio. Especifica el servidor DNS primario del dominio, la cuenta de correo del administrador y tiempo de refresco de los servidores secundarios.
Configuración
Veamos como configurar BIND9 para disponer de un servidor DNS en una intranet, que resuelva dominios internos. Por ejemplo, en la intranet se utilizaran dominios que terminen en “marblestation.homeip.net” como “saturno.marblestation.homeip.net” o “luna.marblestation.homeip.net”. El servidor DNS se encargará de resolver esos dominios en sus respectivas IPs, además de resolver otros dominios de Internet como “google.com”.
Instalamos BIND9 y nos desplazamos a su directorio de configuración:
aptitude install bind9 cd /etc/bind/
Editamos named.conf.local y añadimos la zona “marblestation.homeip.net”, haciendo referencia a su fichero de configuración:
zone "marblestation.homeip.net" {
   type master;
   file "/etc/bind/db.marblestation";
};
Creamos el fichero de configuración “db.marblestation” a partir de “db.local”:
cp db.local db.marblestation
Editamos “db.marblestation”, reemplazamos la palabra “localhost” por “marblestation.homeip.net”, cambiamos la IP “127.0.0.1″ por la que queramos asignar al dominio y añadimos al final del fichero todos los A, MX y CNAME que queramos, quedando:
BIND data file for local loopback interface
$TTL 604800 @ IN SOA marblestation.homeip.net. root.marblestation.homeip.net. (
                 1     ; Serial
            604800     ; Refresh
             86400     ; Retry
           2419200     ; Expire
            604800 )   ; Negative Cache TTL
@ IN NS marblestation.homeip.net. @ IN A 192.168.48.32 @ IN MX 0 marblestation.homeip.net. www IN A 192.168.48.32 saturno IN CNAME marblestation.homeip.net.
En este ejemplo vemos primeramente el dominio a resolver, ‘marblestation.homeip.net.’ y el segundo es la cuenta de correo del administrador, ‘root.marblestation.homeip.net.’ (sustituyéndo el primer punto por arroba, lo que dejaría ‘root@marblestation.homeip.net’). Debemos notar que al final de cada dominio viene un punto, que identifica la raíz de este. El resto de los parámetros son:
   * Serial: es un identificador del archivo, puede tener un valor arbitrario pero se recomienda que tenga la fecha con una estructura AAAA-MM-DD y un consecutivo.
   * Refresco: número de segundos que un servidor de nombres secundario debe esperar para comprobar de nuevo los valores de un registro.
   * Reintentos: número de segundos que un servidor de nombres secundario debe esperar después de un intento fallido de recuperación de datos del servidor primario.
   * Expiración: número de segundos máximo que los servidores de nombre secundarios retendrán los valores antes de expirarlos.
   * TTL mínimo: Significa Time To Live y es el número de segundos que los registros se mantienen activos en los servidores NS caché antes de volver a preguntar su valor real.
A continuación se definen los registros necesarios, cuyos tipos ya han sido explicados anteriormente en este documento.
Cada vez que se cambia la configuración de BIND9, debemos reiniciar el demonio:
/etc/init.d/bind9 restart
Para que nuestra máquina utilice el servidor de DNS que hemos configurado, debemos editar “/etc/resolv.conf” y dejamos únicamente la línea:
nameserver 127.0.0.1
Se debería hacer lo mismo con el resto de máquinas de la intranet que vayan a utilizar el servidor, con la única diferencia que habrá que substituir la IP 127.0.0.1 por la IP que tenga el servidor en la red.
Para comprobar el correcto funcionamiento, utilizamos el comando “host” el cual sirve para resolver dominios:
$ host marblestation.homeip.net marblestation.homeip.net has address 192.168.48.32 marblestation.homeip.net mail is handled by 0 marblestation.homeip.net.
$ host saturno.marblestation.homeip.net saturno.marblestation.homeip.net is an alias for marblestation.homeip.net. marblestation.homeip.net has address 192.168.48.32 saturno.marblestation.homeip.net is an alias for marblestation.homeip.net. saturno.marblestation.homeip.net is an alias for marblestation.homeip.net. marblestation.homeip.net mail is handled by 0 marblestation.homeip.net.
Si deseamos también disponer de resolución de dominios inversa, es decir, que podamos preguntar por la IP “192.168.48.32″ y el servidor DNS nos diga que pertenece a marblestation.homeip.net, debemos añadir a “/etc/bind/named.conf.local”:
zone "192.in-addr.arpa" {
   type master;
   file "/etc/bind/db.192";
};
Creamos el archivo de configuración “/etc/bind/db.192″ a partir del “/etc/bind/db.127″:
cd /etc/bind/ cp db.127 db.192
Editamos “/etc/bind/db.192″, substituimos “localhost” por “marblestation.homeip.net” y cambiamos la última línea:
BIND reverse data file for local loopback interface
$TTL 604800 @ IN SOA marblestation.homeip.net. root.marblestation.homeip.net. (
                 1     ; Serial
            604800     ; Refresh
             86400     ; Retry
           2419200     ; Expire
            604800 )   ; Negative Cache TTL
@ IN NS marblestation.homeip.net. 32.48.168 IN PTR marblestation.homeip.net.
De forma que, la última linea indica que la IP [192.]168.48.32 (escrita a la inversa y omitiendo el 192 que ya se especifico en “named.conf.local”) corresponde al dominio marblestation.homeip.net.
Podemos comprobar su funcionamiento reiniciando el demonio BIND9 y realizando una consulta:
$ /etc/init.d/bind9 restart $ host 192.168.48.32 32.48.168.192.in-addr.arpa domain name pointer marblestation.homeip.net.

otro manualillo

Instalando DNS en Ubuntu
sudo apt-get install bind9 dnsutils
Esto instalará los paquetes necesarios para BIND 9.
Configurando BIND
Si se instala BIND desde el código fuente, tendremos que editar el archivo named.conf. Sin embargo Ubuntu nos provee un BIND pre-configurado por lo cual editaremos el archivo named.local
sudo vi /etc/bind/named.conf.local
Es aquí donde configuraremos nuestras zonas. Una zona es, dentro de un DNS, una porción del espacio de nombres global. Este espacio de nombres está definido por la RFC1034, “Domain Names - Concepts and Facilities” y la RFC 1035, “”Domain Names - Implementation and Specification”, y se encuentra representado en un esquema de árbol de izquierda a derecha, estas divisiones del espacio de nombre son performadas por una serie de caracteres seguidas por un punto (.) hacia el espacio de nombre superior.
Se necesitan agregar las siguientes líneas en el archivo named.local
  1. This is the zone definition. replace example.com with your domain name
zone “example.com” { type master; file “/etc/bind/zones/example.com.db”; };
  1. This is the zone definition for reverse DNS. replace 0.168.192 with your network address in reverse notation - e.g my network address is 192.168.0
zone “0.168.192.in-addr.arpa” { type master; file “/etc/bind/zones/rev.0.168.192.in-addr.arpa”; };
Ahora necesitamos editar el achivo de opciones
sudo vi /etc/bind/named.conf.options
Necesitamos modificar el forwarder. El forwarder es un servidor DNS al cual le reenviarmos consultas que nuestro propio servidor no pueda procesar.
forwarders {
  1. Replace the address below with the address of your provider’s DNS server
123.123.123.123; };
Agregar los archivos de definición de la zona (reemplazar ejemplo.com por su nombre de dominio)
sudo mkdir /etc/bind/zones sudo vi /etc/bind/zones/example.com.db
El archivo de definición de la zona es donde pondremos todas las direcciones y nombres de máquinas que nuestro servidor DNS conocerá. Un ejemplo del contenido de este archivo es el siguiente:
// reemplazar ejemplo.com por su nombre de dominio y no olvide el . al final del mismo // También reemplace ns1 con el nombre de su servidor DNS ejemplo.com. IN SOA ns1.example.com. admin.ejemplo.com. ( // No modifique las siguientes líneas! 2007031001 28800 3600 604800 38400 )
// Reemplace las siguientes líneas en caso de ser necesario: // ns1 = nombre del servidor DNS // mail = nombre de su servidor de correo // ejemplo.com = nombre de su dominio ejemplo.com. IN NS ns1.ejemplo.com. ejemplo.com. IN MX 10 mail.ejemplo.com.
// Reemplace las direcciones IP con las que correspondan a su entorno. www IN A 192.168.0.2 mta IN A 192.168.0.3 ns1 IN A 192.168.0.1
Crear un archivo de zona reversa
Una petición a un servidor DNS sería algo así como "Cuál es la dirección IP del servidor=www en el dominio=ejemplo.com" Existen casos en los que sin embargo en los que necesitaremos conocer el nombre de una dirección IP determinada por motivos de resolución de problemas cada vez más frecuentes en estos días.
Para poder resolver consultas reversas y soportar consultas recursivas y no recursivas, los desarrolladores de DNS definieron un nombre de dominio (reservado) llamado IN-ADDR.ARPA. Este dominio soporta tanto IP versión 4 como IP versión 6.
sudo vi /etc/bind/zones/rev.0.168.192.in-addr.arpa
Copie y pegue el siguiente ejemplo
//reemplace ejemplo.com su nombre de dominio, ns1 con su nombre de servidor DNS. // El número anterior a IN PTR ejemplo.com es la dirección de máquina del servidor DNS. in nuestro caso es 1, ya que mi dirección IP es 192.168.0.1. @ IN SOA ns1.ejemplo.com. admin.ejemplo.com. ( 2007031001; 28800; 604800; 604800; 86400 )
IN NS ns1.ejemplo.com. 1 IN PTR ejemplo.com
Reinicie BIND utilizando el siguiente comando
sudo /etc/init.d/bind9 restart
Pruebe su servidor DNS
Modifique el archivo resolv.conf con los siguientes parámetros
sudo vi /etc/resolv.conf
Ingrese las siguientes líneas, salve el archivo y salga del editor
// reemplace ejemplo.com con su nombre de dominio, y 192.168.0.1 con la dirección IP de su nuevo servidor DNS.
search ejemplo.com nameserver 192.168.0.1
Para probar su servidor DNS ingrese el siguiente comando
dig example.com

©jc_2008

Replicación DNS

Windows Server: 192.168.2.10 (primary) Ubuntu Server: 192.168.2.12 (secondary)
1. [Start on Ubuntu Server:] Set static IP-address of the Ubuntu Server.
2. Install bind apt-get install bind 3. Edit /etc/bind/named.conf.local zone "example.com" { type slave; file "/var/bind/example.com"; masters { 192.168.2.10; }; }; 4. Create the directory for bind to store the file and create the file: mkdir /var/bind touch /var/bind/example.com 5. Make sure that the new configuration works by reloading the BIND-server: /etc/init.d/bind reload 6. [Move to Windows Server] Create the Forward Lookup Zone in the Windows DNS snap-in (dnsmgmt). Guess this step can be omitted if you already have a zone.
7. Right-click and go for "Properites".
8. As default the server is set to do zone transfers to all servers listen in the "Name Server tab". This can be viewed and changed in the "Zone Transfer" tab.
9. Navigate to the "Name Server"-tab and "Add ...". Put the IP-address of the secondary DNS-server where the IP goes and press "Add". I put 192.168.2.12 in there for this example and I also added the FQDN of the server (secondary.example.lan.). Then press OK.
10. Create a few examples in the example.lan zone. Right-click in the right window and pick "New Host (A) ..." Just write the name of the machine (test1 or test2 or whatever name it should have) and type in the correct IP-address (192.168.2.120 for test1 and 192.168.2.130 for test2 in this example). I don't make any PTR since I don't have a reverse lookup zone at the moment.
11. [Back in Ubuntu] Let's grab that new zone file: named-xfer -z example.lan -f /var/bind/example.lan 192.168.2.12

Now it should be up and running ... it is for me. I tried adding new hosts (on the Windows Server) and it worked like a charm. You might want to taka a look at security, but there is a lot of documentation and ideas about online so that should not be a problem.

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.