1. INSTALAR SERVIDOR DHCP EN DEBIAN
En esta ocasión hablaremos de cómo montar un servicio DHCP en tu caja con Debian. Antes que
nada, ¿qué es DHCP?. DHCP responde al protocolo de configuración dinámica de host. En otras
palabras, es un protocolo que se utiliza para proporcionar una configuración ip a otros equipos que
se encuentren en el mismo segmento de red que el servidor. El servidor DHCP es aquel que
proporciona direcciones ip dinámicas a equipos que lo soliciten.
¿Porqué debería instalar un servidor DHCP? La respuesta es simple, imagina que tienes 50 equipos
en una red. Sería algo complicado ir a cada uno de ellos y configurar manualmente su configuración
ip (dirección, máscara de subred, puerta de enlace y dirección de DNS). Aún así lo pudieras hacer
pero con una probabilidad alta de que ocurran errores debido a una mala captura de alguna
dirección (nos podemos equivocar entre tanto número de red). Es por eso que si se instalara un
servidor DHCP, éste proporcionaría la configuración a cada equipo y sin errores.
Para instalar el servidor DHCP, ejecutamos el siguiente comando:
# apt-get install dhcp3-server
Una vez instalado el servicio, copiamos el archivo /etc/dhcp3/dhcpd.conf a
/etc/dhcp3/dhcpd.conf.old. Esto es para conservar el archivo de configuración original. Eliminamos
el archivo de configuración original y creamos un archivo nuevo con el mismo nombre
(/etc/dhcp3/dhcpd.conf), y añadimos la siguiente configuración (sustituye las direcciones y
nombre de dominio respecto a tu red):
authoritative;
subnet 192.168.20.0 netmask 255.255.255.0 {
range 192.168.20.100 192.168.20.150;
option domain-name-servers 192.168.20.254;
option domain-name "debian.internal";
option routers 192.168.20.254;
option broadcast-address 192.168.20.255;
default-lease-time 600000;
max-lease-time 720000;
}
Al final, guardamos los cambios en el archivo /etc/dhcp3/dhcpd.conf. La configuración anterior
indica que este servidor va a ser nuestro servidor principal DHCP. La configuración pertenece a la
red 192.168.10.20 y repartiremos direcciones de la 192.168.20.100 a la 192.168.20.150 (50
2. direcciones). El nombre del dominio es debian.internal. La dirección de router o puerta de enlace
es 192.168.20.254. Una vez verificada nuestra configuración, solo resta reiniciar el servicio:
# /etc/init.d/dhcp3-server restart
Es todo. A partir de allí nuestro servidor podrá comenzar a repartir direcciones ip dinámicas.
INSTALAR SERVIDOR DNS EN DEBIAN
Berkeley Internet Name Domain (BIND) es una implementación del protocolo Domain Name
System (DNS), ampliamente usado para resolver nombres y números IP en Internet.
Si el computador está permanentemente conectado a Internet, puede resultar ventajoso instalar
BIND para mantener una tabla local con todos los nombres que resuelve el DNS autoritativo de
la red.
Ingresa a root, por ejemplo, corriendo un "Terminal de <Root>" en el menú
"Aplicaciones/Accesorios" o, en el mismo menú, un "Terminal" y luego el
comando su (super user).
Configuración de un DNS local
Instala el paquete bind9,
# apt-get install bind9
Edita el archivo /etc/bind/named.conf.options,
# nano /etc/bind/named.conf.options
para que lea,
options {
directory "/var/cache/bind";
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses
replacing
// the all-0's placeholder.
3. forwarders {
100.10.0.3;
100.10.0.7;
};
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
En forwarders van los números IP de los servidores de nombre (DNS) de la red,
los mismos del archivo /etc/resolv.conf indicados en el instructivo nameserver.
Desinstala el paquete resolvconf, si es que esta instalado,
# apt-get --purge remove resolvconf
Edita /etc/resolv.conf y modifícalo para que lea,
search mi.dominio
nameserver 127.0.0.1
En donde search indica el dominio de la red. Si la red no tiene dominio, borra el
instructivo search.
Reinicia el daemon de BIND (named) con,
# /etc/init.d/bind9 restart
y luego reinicia la red,
# /etc/init.d/networking restart
Lo que hemos hecho es transformar a localhost (127.0.0.1) en el servidor de
nombres, que a través de BIND hace requerimientos a los DNS de la red.
Para ver el servidor DNS local en acción da el comando,
$ dig www.debian.org
Retornará a la pantalla la consulta al DNS autoritativo,
$ dig www.debian.org
; <<>> DiG 9.7.2-P3 <<>> www.debian.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47296
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.debian.org. IN A
;; ANSWER SECTION:
www.debian.org. 300 IN A 128.31.0.51
4. www.debian.org. 300 IN A 206.12.19.7
;; Query time: 804 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Mar 20 09:37:36 2011
;; MSG SIZE rcvd: 158
La primera consulta tardó 804 milisegundos (Query time). Repetir el mismo
requerimiento será prácticamente instantáneo. El servidor ahora consulta su
propia tabla, en dónde existe guardada una entrada con la información
sobre www.debian.org,
$ dig www.debian.org
; <<>> DiG 9.7.2-P3 <<>> www.debian.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35228
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.debian.org. IN A
;; ANSWER SECTION:
www.debian.org. 299 IN A 128.31.0.51
www.debian.org. 299 IN A 206.12.19.7
;; Query time: 15 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Mar 20 09:41:49 2011
;; MSG SIZE rcvd: 64
Configuración de un DNS primario
La configuración avanzada de BIND aquí presentada es apta para un servidor
Debian con número IP estático y conectado permanentemente a Internet.
Para definir un nuevo dominio y hacer que el servidor actúe como su DNS
autoritativo, necesitas primero haber comprado un dominio en un registro de
nombres de dominio (NIC), por ejemplo en NIC Chile 1, y definir el servidor de
nombres primario del nuevo dominio con el número IP y FQDN del servidor BIND.
Vamos a usar de ejemplo el dominio ficticio.cl.
Edita /etc/bind/named.conf.local y agrega al final del archivo,
zone "ficticio.cl" {
type master;
file "/etc/bind/db.ficticio.cl";
5. allow-query { any; };
};
Crea el archivo /etc/bind/db.ficticio.cl y agrega,
;
; archivo BIND para zona ficticio.cl
;
$TTL 604800
@ IN SOA ficticio.cl. hostmaster.ficticio.cl. (
1 ; Serial
1200 ; Refresh
300 ; Retry
2419200 ; Expire
1200 ) ; Negative Cache TTL
ficticio.cl. IN NS ns1.ficticio.cl.
ficticio.cl. IN NS ns2.ficticio.cl.
ficticio.cl. IN MX 1 mx1.ficticio.cl.
ficticio.cl. IN MX 2 mx2.ficticio.cl.
localhost IN A 127.0.0.1
ficticio.cl. IN A 100.10.10.10
ns1 IN A 100.10.10.10
ns2 IN A 100.10.20.20
mx1 IN A 100.10.10.10
mx2 IN A 100.10.20.20
www IN A 100.10.10.10
smtp IN A 100.10.10.11
El instructivo TTL (Time To Live) indica la validez (en segundos) de la consulta,
tras la cual deberá ejecutarse una actualización. 604800 segundos equivalen a una
semana.
El número Serial debería incrementarse cada vez que se modifica la zona. El
campo Refresh indica el intervalo de tiempo que los DNS secundarios deben
refrescar la información del archivo de zona si han habido cambios (20
munutos). Retry indica el intervalo de tiempo que los DNS secundarios deben
reintentar actualizar la información si el DNS primario no responde (5
minutos). Expire indica el tiempo que el DNS secundario expira como servidor de
nombres de la zona en caso el DNS primario no responda a requerimiento de
actualización (4 semanas). Negative Cache TTL indica el TTL en caso de una
consulta con respuesta negativa (20 minutos).
6. Modifica todas las ocurrencias de ficticio.cl por el dominio pertinente. Todas
ellas deben terminar con un punto. ns1 debe llevar el número IP del DNS primario,
es decir, el servidor BIND. ns2 define el DNS secundario. Puede ser el mismo
servidor BIND, otro, o el que habilita el registro de nombres de dominio,
generalmente en forma gratuita, por ejemplo,secundario.nic.cl. mx1 y mx2 son
los registros MX (Mail eXchanger) e indican el destino del correo eletrónico del
dominio (@ficticio.cl), según la prioridad indicada por los números que preceden
el nombre. En principio, es necesario solo un registro MX. El MTA de todo servidor
MX debe aceptar correo-e a nombre del dominio.
En este ejemplo, ficticio.cl y www.ficticio.cl apuntan al mismo número IP.
Esto no debe necesariamente ser así.
Si tienes un cortafuego, habilita el puerto 53 UDP y TCP hacia requerimientos por
la interfase que va a servir BIND.
Reinicia named con,
# /etc/init.d/bind9 restart
Configuración de un DNS secundario
El DNS primario debe apuntar ns2 al servidor BIND que va a actuar de DNS
secundario.
Edita named.conf.local en el DNS primario y agrega a la zona el
instructivo allow-transfer,
zone "ficticio.cl" {
type master;
file "/etc/bind/db.ficticio.cl";
allow-query { any; };
allow-transfer { 100.10.20.20; };
};
en donde allow-transfer debe llevar el número IP del servidor DNS secundario
indicado en el archivo de zona.
Edita named.conf.local en el DNS secundario y agrega al final del archivo,
zone "ficticio.cl" {
type slave;
file "/etc/bind/db.ficticio.cl";
allow-query { any; };
masters { 100.10.10.10; };
};
en donde masters debe llevar el número IP del servidor DNS primario indicado en
el archivo de zona.
Si tienes un cortafuego, habilita el puerto 53 UDP y TCP hacia requerimientos por
la interface que va a servir BIND.
7. El usuario de sistema bind en el DNS secundario necesita permisos para modificar
archivos en el directorio /etc/bind,
# chmod g+ws /etc/bind
Reinicia named con,
# /etc/init.d/bind9 restart
Reinicia named en el servidor DNS primario también. El DNS primario enviará un
requerimiento de actualización al DNS secundario y éste creará una copia exacta
del archivo de zona/etc/bind/db.ficticio.cl.