You are on page 1of 6

ASI 1 - RAL Daniel Abril Ruiz.

Configuración del servidor DHCP en Debian IES Santa Catalina.


Abril de 2005.

CONFIGURACIÓN DEL SERVIDOR DHCP DE DEBIAN.

1. Generalidades.
El servicio DHCP de Debian-Linux, se basa en el programa dhcpd que se encuentra en el directorio /
etc/init.d. Este programa, al ponerse a funcionar obtiene su configuración del fichero /etc/dhcp3/dhcpd.conf.

2. FICHERO dhcpd.conf

Se encuentra en el directorio /etc/dhcp3 y contiene la configuración para el servidor de DHCP, dhcpd.


Éste posee un analizador recursivo que analiza el fichero de configuración. No es sensible a mayúsculas. Cada
sentencia de configuración debe terminar en punto y coma. Los comentarios se comienzan por # y abarcan
hasta el final de la línea.

Las sentencias de configuración pueden ser parámetros o declaraciones. Los parámetros indican cómo
hacer algo (por ejemplo, cuánto tiempo dura el alquiler de una dirección), las condiciones para hacerlo (por
ejemplo, si el dhcpd proporciona direcciones a los clientes desconocidos), o qué parámetros a proporcionar al
cliente (por ejemplo, el gateway es 220.177.244.7).

Por otro lado, las declaraciones se utilizan para describir la topología de la red; para describir a clientes
en la red; para proporcionar las direcciones que se pueden asignar a los clientes, o para aplicar un grupo de
parámetros a un grupo de declaraciones. En cualquier grupo de parámetros y de declaraciones, todos los
parámetros deben ser especificados antes que cualquier declaración de la que éstos dependan.

Las declaraciones sobre la topología de la red incluyen la red compartida (shared-subnet, situación en la
que existen diferentes segmentos lógicos de nivel 3 sobre el mismo físico) y los declaraciones de subred. Si a
los clientes de una subred les van a ser asignadas direcciones dinámicamente, una declaración del rango de
direcciones disponibles debe aparecer dentro del declaración dicha subred. Para los clientes con direcciones
estáticamente asignadas, o para las instalaciones en donde solamente se servirán direcciones a los clientes
conocidos, cada uno de dichos clientes debe tener un declaración host.

Debemos tener en cuenta que nuestro servidor DHCP puede tener conectadas varias tarjetas,
escuchando cada una de ellas en una subred diferentes. De esta forma, para cada una de las subredes a las
que demos servicio y/o estemos conectados debe existir una declaración subnet que indique al servidor qué
dirección corresponde a cada subred. Como mínimo debe existir, entoces una declaración de subnet.

En el caso de que nos encontremos con varios segmentos lógicos sobre el mismo segmento físico
(distintos rangos de IP sobre el mismo cableado) debemos incluir declaraciones de subred compartida o shared-
subnet.

En el caso de que nos encontremos ante host de diferentes subredes a los que deseemos dar los
mismos parámetros, podemos formar una declaración de tipo group que contendrá dichos parámetros comunes
para todos los host. Para clientes cuyas direcciones son asignadas dinámicamente, las declaraciones de tipo
class y las condicionales pueden usarse para agrupar, según la información que envíen los clientes, los
parámetros a asignarles.

EJEMPLOS

Ésta es una configuración típica del dhcpd.conf:

1 de 6
ASI 1 - RAL Daniel Abril Ruiz.
Configuración del servidor DHCP en Debian IES Santa Catalina.
Abril de 2005.

[AQUÍ COLOCAREMOS LOS PARÁMETROS GLOBALES]

subnet 204.254.239.0 netmask 255.255.255.224 {


[PARÁMETROS ESPECÍFICOS DE LA SUBRED]
range 204.254.239.10 204.254.239.30;
}

subnet 204.254.239.32 netmask 255.255.255.224 {


[PARÁMETROS ESPECÍFICOS DE LA SUBRED]
range 204.254.239.42 204.254.239.62;
}

subnet 204.254.239.64 netmask 255.255.255.224 {


[PARÁMETROS ESPECÍFICOS DE LA SUBRED]
range 204.254.239.74 204.254.239.94;
}

group {
[PARÁMETROS ESPECÍFICOS DE DEL GRUPO]
host zappo.test.isc.org {
[PARÁMETROS ESPECÍFICOS PARA EL HOST]
}
host beppo.test.isc.org {
[PARÁMETROS ESPECÍFICOS PARA EL HOST]
}
host harpo.test.isc.org {
[PARÁMETROS ESPECÍFICOS PARA EL HOST]
}
}

Al comienzo del archivo colocaremos parámetros globales como el dominio de la organización, las
direcciones de los DNS, ... Por ejemplo:

option domain-name "isc.org";


option domain-name-servers ns1.isc.org, ns2.isc.org;

Como se puede ver es preferible colocar los nombres DNS mejor que sus IP's, siempre que sea posible.

Como cada subred necesitaría su propio router, lo tendríamos que indicar. Por ejemplo para la primera
red:

option routers 204.254.239.1;

OJO: generalmente sólo tenemos un nombre de dominio para cada router, independientemente de las
tarjetas que éste posea. Por ello, ponemos la IP y no el nombre del router.

Hemos visto una sentencia de grupo que provee parámetros globales para un conjunto de tres hosts
(zappo, beppo y harpo). Todos ellos están en el mismo dominio por tanto, quizás tendría sentido indicar
mediante un parámetro el dominio común a estos host y no en cada una de las declaraciones.

2 de 6
ASI 1 - RAL Daniel Abril Ruiz.
Configuración del servidor DHCP en Debian IES Santa Catalina.
Abril de 2005.

option domain-name "test.isc.org";

Además, podríamos indicar unos tiempos de alquiler.

max-lease-time 120;
default-lease-time 120;

Los parámetros que comienzan por la palabra reservada option corresponden a opciones actuales de
DHCP y los que no, se corresponden a opciones que controlan el entorno del servidor de DHCP o a parámetros
no opcionales específicos para los clientes.

Los parámetros específicos del host pueden incluir cosas como como el nombre de host, el nobre de
algún fichero a actualizar,...

Imagine that you have a site with a lot of NCD X-Terminals. These terminals come in a variety of models,
and you want to specify the boot files for each model. One way to do this would be to have host declarations for
each server and group them by model:

group {
filename "Xncd19r";
next-server ncd-booter;

host ncd1 { hardware ethernet 0:c0:c3:49:2b:57; }


host ncd4 { hardware ethernet 0:c0:c3:80:fc:32; }
host ncd8 { hardware ethernet 0:c0:c3:22:46:81; }
}

group {
filename "Xncd19c";
next-server ncd-booter;

host ncd2 { hardware ethernet 0:c0:c3:88:2d:81; }


host ncd3 { hardware ethernet 0:c0:c3:00:14:11; }
}

group {
filename "XncdHMX";
next-server ncd-booter;

host ncd1 { hardware ethernet 0:c0:c3:11:90:23; }


host ncd4 { hardware ethernet 0:c0:c3:91:a7:8; }
host ncd8 { hardware ethernet 0:c0:c3:cc:a:8f; }
}

3. Ejemplo de configuración sencilla.


En el fichero dhcpd.conf que viene por defecto en la distribución Debian, encontramos un ejemplo
bastante elaborado de lo que podría ser una configuración compleja de un servidor DHCP. Nosotros, sin

3 de 6
ASI 1 - RAL Daniel Abril Ruiz.
Configuración del servidor DHCP en Debian IES Santa Catalina.
Abril de 2005.

embargo, vamos a experimentar con una más simple. Para ello, vamos a realizar una copia de seguridad del
fichero de configuración que viene por defecto (como debemos hacer siempre que modifiquemos un fichero de
configuración de cualquier tipo):

#cp dhcpd.conf dhcpd.conf.OLD

Ahora editamos el fichero dhcpd.conf y en él dejamos sólo las siguientes líneas:

#En esta línea indicamos la configuración de o los DNS


#que adjudicaremos por defecto a todos los clientes DHCP

option domain-name-servers 80.58.0.33;

#En estas líneas indicamos los tiempos de alquiler


#de direcciones para los clientes (en segundos)
default-lease-time 600;
max-lease-time 7200;

#Ahora configuramos el servidor para la tarjeta


#que escucha en este rangos
#OJO: las IP's del servidor DHCP deben ser
#estáticas (en este caso 172.23.240.4).
subnet 172.23.0.0 netmask 255.255.0.0 {

#Indico para un host determinado


# identificado por su MAC y al que
#doy un nombre, una IP fija para él
host PACO {
hardware ethernet 00:11:d8:0f:b0:ff;
fixed-address 172.23.243.15;
}

#Para los nodos de esta subred fijo unos


#parámetros específicos.
#Podría añadir más: dns, ...
option routers 172.23.30.1;

#Éste es el rango de direcciones que


#quiero asignar.
range 172.23.243.1 172.23.243.10;

Una vez guardado el archivo de configuración, pongo en marcha el servidor mediante el comando
/etc/init.d/dhcp3-server start

Para detener el servicio o reiniciarlo (siempre que modifique la configuración) usaré, respectivamente:
/etc/init.d/dhcp3-server stop
/etc/init.d/dhcp3-server restart

En el proceso de arranque, el servidor lee el archivo de configuración. Si encuentra algún fallo de


sintaxis no podrá arrancar y nos mostrará un mensaje de error. El fallo detallado lo encontraremos en el fichero

4 de 6
ASI 1 - RAL Daniel Abril Ruiz.
Configuración del servidor DHCP en Debian IES Santa Catalina.
Abril de 2005.

de log (el registrador del sistema). Podremos leerlo con cat /var/log/syslog [|grep dhcp]

Una vez arrancado, podremos comprobar el proceso de asignación de direcciones a través de las
mismas entradas en el mismo fichero syslog.

4. Actualización de DNS dinámico.


En el caso de que, además, tengamos montado un servidor DNS, podemos desear que las máquinas de
alguna de las zonas controladas por nuestro servidor DNS sea actualizada dinámicamente con las IP's que
nuestro DHCP asigne. Esto es posible con bind9 y dhcp3; con versiones anteriores debemos descargar los
paquetes correspondiente (dhcp-dns).

Supongamos que ya tenemos montada la zona asi1.santac. en nuestro DNS y deseamos que las
máquinas de esa zona que obtengan IP's de nuestro DHCP se encuentren disponibles en el DNS. Para ello,
modificamos el fichero dhcpd.conf, añadiendo las siguientes líneas:

allow unknown-clients;
ddns-update-style interim;
ddns-domainname "asi1.santac";
use-host-decl-names on;

Con esto todos las máquinas que obtengan direcciones dinámicas en la subred donde se encuentren
estas líneas, se encontrarán en la zona asi1.santac. Si el nombre de la máquina cliente (se obtiene con el
comando hostname) es aula16, su nombre DNS completo será aula16.asi1.santac y se podrá llegar a ella a
través del DNS.

En el caso de que estemos asignando direcciones fijas (fixed-address) a un determinado host, en su


declaración debemos añadir

update-static-leases on;

Veamos el siguiente ejemplo:

#Éstas opciones son generales pues no pertenecen a ninguna declaración


#de subred.

allow unknown-clients;
ddns-update-style interim;
ddns-domainname "asi1.santac";
use-host-decl-names on;

#authoritative;

#Ésta IP es la de la máquina local que, además, es DNS.


option domain-name-servers 172.23.240.4;

default-lease-time 600;
max-lease-time 7200;

subnet 172.23.0.0 netmask 255.255.0.0 {

5 de 6
ASI 1 - RAL Daniel Abril Ruiz.
Configuración del servidor DHCP en Debian IES Santa Catalina.
Abril de 2005.

#el hostname de este host es, en realidad MICASA, pero funciona


igualmente.
#pues, al final, obtiene como nombre MICASA.asi1.santac
host MICA{

hardware ethernet 00:c0:26:10:18:c6;


fixed-address 172.23.240.15;
#Activar esta opción es la única manera de actualizar el DNS
#con direcciones fijas para un host (fixed-address)
update-static-leases on;
}

#opciones generales
option routers 172.23.30.1;
range 172.23.245.1 172.23.245.10;
}

6 de 6

You might also like