lunes, 28 de noviembre de 2011

DDNS y DHCP en debian squeeze amd64.


1 – Introducción. 
   Según wikipedia:
   DHCP (sigla en inglés de Dynamic Host Configuration Protocol - Protocolo de configuración dinámica de host) es un protocolo de red que permite a los clientes de una red IP obtener sus parámetros de configuración automáticamente. Se trata de un protocolo de tipo cliente/servidor en el que generalmente un servidor posee una lista de direcciones IP dinámicas y las va asignando a los clientes conforme éstas van estando libres, sabiendo en todo momento quién ha estado en posesión de esa IP, cuánto tiempo la ha tenido y a quién se la ha asignado después.

   Domain Name System o DNS (en español: sistema de nombres de dominio) es un sistema de nomenclatura jerárquica para computadoras, servicios o cualquier recurso conectado a Internet o a una red privada. Este sistema asocia información variada con nombres de dominios asignado a cada uno de los participantes. Su función más importante, es traducir (resolver) nombres inteligibles para los humanos en identificadores binarios asociados con los equipos conectados a la red, esto con el propósito de poder localizar y direccionar estos equipos mundialmente.


2 – Escenario.
   Suponemos que vamos a instalado en nuestro servidor al cual llamaremos gary un servidor DNS caché que da servicio a los ordenadores de nuestra intranet y además actúa como servidor maestro (master) de un dominio DNS (infoasir.net), de forma que todos los equipos de la red local tengan un nombre DNS completo o FQHN (Full Qualified Host Name). Por otra parte, tenemos instalado en gary un servidor DHCP para que asigne direcciones IPv4 únicas a los equipos de la red local y les facilite el resto de parámetros necesarios para que tengan conectividad y salida a Internet.

    Las características del servidor DNS serán:
  • El nombre del servidor DNS para la zona infoasir.net sera nuestro servidor, es deir, gary.infoasir.net (registro NS).
  • En un primer momento el único nombre que resuelve nuestro servidor será el suyo propio, gary.infoasir.net, que corresponde a la dirección 192.168.2.1

    Las características del servidor DHCP instalado serán:
  • Tiempo de concesión: 1 mes
  • Rango de direcciones: 192.168.2.100 - 192.168.2.150
  • Puerta de enlace: 192.168.2.1
  • Servidores DNS: 192.168.2.1

3 – Instalación de los servicios.
    Los primeros pasos son de la instalación del servidor dhcp y dns
# aptitude install dhcp3-server
# aptitude install bind9

4 – Configuración del dns.
    Una vez instalados pasamos a la configuarción de cada uno de ellos. Empezaremos con el servidor dns.

    El primer archivo que vamos a modificar es el named.conf. En el incluiremos dos archivos que no estaban incluidos "/etc/bind/bind.keys" y "/etc/bind/rndc.key". También añadiremos una clausula de control. Nos quedaria de esta manera:
# cat /etc/bind/named.conf
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
include "/etc/bind/bind.keys";
include "/etc/bind/rndc.key";
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};

    El próximo archivo es el “/etc/bind/named.conf.local” en el cual agregaremos las zonas. También incluiremos el archivo “/etc/bind/zones.rfc1918 ”. Que impedirá que preguntemos a los servidores dns raiz por ip privadas. Si ha los archivos de las zonas no le ponemos ruta, lo intentara leer por defecto de la ruta “/var/cache/bind9. Este archivo nos quedara con la siguiente forma:
# cat /etc/bind/named.conf.local
include "/etc/bind/zones.rfc1918";
zone "infoasir.net" {
type master;
file "db.infoasir.net";
allow-update { key rndc-key; };
notify yes;
};
zone "2.168.192.in-addr.arpa" {
type master;
file "db.2.168.192";
allow-update { key rndc-key; };
notify yes;
};

    Ahora vamos a crear las zonas que definimos en el paso anterior. El primero corresponde a la zona inversa. Los archivos tienen que tener el nombre que le definimos en el paso anterior.
# cat /var/cache/bind/db.2.168.192
$ORIGIN .
$TTL 604800 ; 1 week
2.168.192.in-addr.arpa IN SOA asir.es. root.asir.es. (
2 ; serial
604800 ; refresh (1 week)
86400 ; retry (1 day)
2419200 ; expire (4 weeks)
604800 ; minimum (1 week)
)
NS gary.asir.es.
$ORIGIN 2.168.192.in-addr.arpa.
1 PTR gary.asir.es.

# cat /var/cache/bind/db.infoasir.net
$ORIGIN .
$TTL 604800 ; 1 week
infoasir.net IN SOA infoasir.net. root.infoasir.net. (
2 ; serial
604800 ; refresh (1 week)
86400 ; retry (1 day)
2419200 ; expire (4 weeks)
604800 ; minimum (1 week)
)
NS gary.infoasir.net.
$ORIGIN infoasir.net.
gary A 192.168.2.1

5 – Configuración del servidor dhcp.
    Con esto ya hemos terminado con el servidor dns. Ahora pasamos a la configuración del dhcp. Este es mas fácil de configurar, solo tendremos que modificar dos archivos. En el tendremos que hacer referencia a el servidor dns. Los archivos que vamos a modificar son el “/etc/dhcp/dhcpd.conf” y “/etc/default/isc-dhcp-server ”. En el primero va la configuración del dhcp. En el segundo solo añadiremos la interfaz por la que el servidor dhcp prestara servicio. Los archivos se nos tienen que quedar de la siguiente manera:
# cat /etc/dhcp/dhcpd.conf
# Líneas para la actualización del servidor DNS:
server-identifier gary ;
ddns-updates on;
ddns-update-style interim ;
ddns-domainname "infoasir.net.";
ddns-rev-domainname "in-addr.arpa.";
deny client-updates ;
include "/etc/bind/rndc.key";
zone infoasir.net. {
primary 127.0.0.1;
key rndc-key;
}
zone 2.168.192.in-addr.arpa. {
primary 127.0.0.1;
key rndc-key;
}
# Configuración general del servidor DHCP
default-lease-time 2592000;
max-lease-time 2592000;
authoritative ;
# Se reparten las direcciones 192.168.2.2 -192.168.2.127
# entre los clientes :
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.2 192.168.2.127;
option routers 192.168.2.1;
option domain-name "infoasir.net.";
option domain-name-servers 192.168.2.1;
option broadcast-address 192.168.2.255;
}

# cat /etc/default/isc-dhcp-server
INTERFACES="eth0"

    Para terminar reiniciamos los servicios.
# /etc/init.d/isc-dhcp-server restart
# /etc/init.d/bind9 restart
6 – Comprobaciones.
    En mi caso lo he comprobado con dos clientes. El primero un debian squeeze, a el cual le he tenido que descomentar una linea del archivo /etc/dhcp/dhclient.conf. La linea que le he añadido quedaria asin:
# cat /etc/dhcp/dhclient.conf |grep 'send host-name'
send host-name patricio;
    Donde patricio es el nombre de la maquina.
    Para comprobar que funciona he comprobado desde cada cliente la ip del otro de la siguiente manera.
En windows, el cual se llama arenita, he utilizado un ping y el nslookup.
 
    En patricio, el cliente debian squeeze, he utilizado dig. En este caso no he utilizado el ping por no tener que desactivar el cortafuegos de windows, el cual da tanto ruido. Los resultados deben de ser los siguientes:
# dig arenita.infoasir.net
; <<>> DiG 9.7.3 <<>> arenita.infoasir.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39981
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;arenita.infoasir.net. IN A
;; ANSWER SECTION:
arenita.infoasir.net. 1800 IN A 192.168.2.101
;; AUTHORITY SECTION:
infoasir.net. 604800 IN NS gary.infoasir.net.
;; ADDITIONAL SECTION:
gary.infoasir.net. 604800 IN A 192.168.2.1
;; Query time: 1 msec
;; SERVER: 192.168.2.1#53(192.168.2.1)
;; WHEN: Mon Nov 28 19:21:42 2011
;; MSG SIZE rcvd: 89


No hay comentarios:

Publicar un comentario