Configurar Servidor DHCP en GNU/Linux

1 de septiembre de 2010


Descripción del Servidor DHCP

Equipo utilizado como servidor DHCP: GNU/Linux, distribución Fedora 11.
Versión del Kernel Linux: 2.6.30.8-64.fc11.i586
Versión del servidor DHCP: 4.1.0p1-2.fc11

Instalación del servidor DHCP
 
El primer paso es conseguir que el demonio DHCP, dhcpd, esté instalado en el sistema. En los sistemas Red Hat Enterprise, la utilidad up2date puede ser usada para instalar el servidor y cualquier dependencia, con el siguiente comando:

# up2date -i dhcp

En sistemas Debian, se usa la utilidad apt-get:

# apt-get install dhcp

En sistemas Fedora, como en el caso de esta práctica, se usa yum para hacer lo mismo:

# yum install dhcp

Si se quiere compilar las fuentes, puede descargarse un fichero .tar de la Web de ISC en http://www.isc.org/index.pl?/sw/dhcp/. El software fue creado por Internet System Consortium. Para compilar, se utiliza los tres siguientes comandos:

$ ./configure
$ make
# make install
 
En la presente práctica al instalar el servidor DHCP tenemos la siguiente salida:

[angelv@localhost ~]$ su root
Contraseña:
[root@localhost angelv]# yum install dhcp
Complementos cargados:downloadonly, refresh-packagekit
adobe-linux-i386 | 951 B 00:00
adobe-linux-i386/primary | 12 kB 00:00
adobe-linux-i386 17/17
livna | 2.4 kB 00:00
rpmfusion-free-updates | 3.8 kB 00:00
rpmfusion-free-updates/primary_db | 286 kB 00:03
rpmfusion-nonfree-updates | 3.8 kB 00:00
rpmfusion-nonfree-updates/primary_db | 120 kB 00:01
updates/metalink | 2.7 kB 00:00
updates | 4.4 kB 00:00
updates/primary_db | 4.1 MB 00:43
Configurando el proceso de instalación
Resolviendo dependencias
--> Ejecutando prueba de transacción
---> Paquete dhcp.i586 12:4.1.0p1-2.fc11 definido para ser actualizado
--> Resolución de dependencias finalizada

Dependencias resueltas

============================================================================================================================================
Paquete    Arquitectura    Versión        Repositorio    Tamaño
============================================================================================================================================
Instalando:
dhcp         i586             12:4.1.0p1-2.fc11    updates     976 k

Resumen de la transacción
============================================================================================================================================
Instalar 1 Paquete(s)
Actualizar 0 Paquete(s)

Tamaño total de la descarga: 976 k
Está de acuerdo [s/N]:Y
Descargando paquetes:
dhcp-4.1.0p1-2.fc11.i586.rpm | 976 kB 00:08
Ejecutando el rpm_check_debug
Ejecutando prueba de transacción
Prueba de transacción finalizada
La prueba de transacción ha sido exitosa
Ejecutando transacción
Instalando : [#######################] 12:dhcp-4.1.0p1-2.fc11.i586 1/1

Instalado:
dhcp.i586 12:4.1.0p1-2.fc11

¡Listo!
[root@localhost angelv]#

Configuración del servidor DHCP

DHCP no es difícil de configurar. El fichero de configuración para este servicio es /etc/dhcp/dhcpd.conf. Un ejemplo de archivo de configuración se encuentra en: /usr/share/doc/dhcp-4.1.0p1/dhcpd.conf.sample (dhcp-4.1.0p1 cambiara de acuerdo a la versión de DHCP).

Las primeras líneas de este fichero establecen parámetros generales que se aplican a todos los equipos servidos por este servidor DHCP.
 
option domain-name “laboratoriolinux.org”
option subnet-mask 255.255.255.0
deny unknown-clients;
option domain-name-servers 192.168.198.50
default-lease-time 600;
max-lease-time 7200;
 
La primera línea asigna un nombre de dominio a nuestro entorno, el cual es bastante arbitrario en un entorno pequeño que no está soportando un dominio de Internet registrado. La opción subnet-mask asegura que todos tienen la misma máscara de subred en la red. Este podría no ser el caso en otras ocasiones, por lo que se puede especificar este parámetro en diferentes lugares dentro del fichero de configuración para conseguir el efecto deseado.

La opción deny unknown-clients evita que el servidor otorgue direcciones IP a equipos que no estén especificados en el fichero de configuración. La opción por defecto, por alguna razón, es permitir esta actividad.

La directiva domain-name-servers se utiliza cuando existe un Servidor de Nombres de Dominio (DNS), que todos los equipos internos usan. En vez de configurar sus direcciones manualmente en cada equipo (y teniendo que actualizarlas manualmente si se hace algún cambio), simplemente se entrega las direcciones a los clientes vía DHCP, usando esta directiva.

Finalmente, se establecen los tiempos de arrendamiento tales como el default-lease-time a 600 segundos (10 minutos) y el tiempo máximo que un equipo puede permanecer sin renovar su contrato a 7.200 segundos (2 horas).

A diferencia de la primera sección de fichero, la siguiente no es global, sino especifica a una subred. Es llamada de manera acertada una “declaración de subred”, y puede tener tantas de estas como subredes (incluso más, pero en pocas ocasiones tiene sentido). He aquí la entrada para la subred de la red interna de la práctica.

Subnet 192.168.42.0 netmask 255.255.255.0 {
range 192.168.42.85 192.168.42.99;
option broadcast-address 192.168.42.255;
option routers 192.168.42.1;
}
 
Cada declaración de subred requiere tener una máscara de red especificada, a pesar de lo que haya en la sección global del fichero de configuración. Lo primero que está entre llaves (range 192.168.42.85 192.168.42.99) indica que los equipos recibirán direcciones IP entre 192.168.42.85 y 192.168.42.99 (15 direcciones).
 
A continuación, se especifica la dirección broadcast para el dominio, que es la dirección para “todos todos los equipos” en la subred. Se especifica la dirección de la pasarela con la opción routers (la dirección de DNS suele ser la misma).
A continuación se muestra el archivo de configuración para la presenta práctica (se lo edita con # vi /etc/dhcp/dhcpd.conf):
 
default-lease-time 600;
max-lease-time 7200;

subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
range 192.168.1.2 192.168.1.254;
}
 
Se trata siempre de tener servidores DHCP sencillos, puesto que el mantenimiento será más sencillo si se omiten los comentarios y se hace que el archivo de configuración sea pequeño.

Configuración de la interfaz de red

En el caso de esta práctica la interfaz de red es eth0. Tras la configuración del servidor DHCP, se tiene que establecer que la interfaz eth0 tenga la configuración esperada por el servidor DHCP. Se lo hace en el terminal con el siguiente comando:

ifconfig eth0 192.168.1.1 netmask 255.255.255.0

La salida de este comando en la práctica es la siguiente:

[root@localhost angelv]# ifconfig eth0 192.168.1.1 netmask 255.255.255.0
[root@localhost angelv]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:A0:D1:87:75:E0  
         inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
         inet6 addr: fe80::2a0:d1ff:fe87:75e0/64 Scope:Link
         UP BROADCAST MULTICAST  MTU:1500  Metric:1
         RX packets:180 errors:0 dropped:0 overruns:0 frame:0
         TX packets:118 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000
         RX bytes:21924 (21.4 KiB)  TX bytes:12682 (12.3 KiB)
         Interrupt:27 Base address:0x4000

Iniciación el servicio DHCP

Algunos servicios DHCP necesitan un archivo dhcpd.leases. En caso de que no exista el archivo dicho, se usa el comando touch para crear un el archivo vacío en el directorio /var/lib/dhcpd/, de la siguiente manera:
 
# touch /var/lib/dhcpd/dhcpd.leases
 
Para iniciar el servicio dhcpd, escribimos en el terminal lo siguiente(/etc/init.d/dhcp start en distribuciones Debian):
 
# service dhcpd start
 
A continuación se muestra la salida a este comando en la práctica

[root@localhost angelv]# service dhcpd start
Iniciando dhcpd:                                        [  OK  ]
[root@localhost angelv]#
 
Se puede comprobar si el proceso DHCP se está ejecutando con el comando ps aux | grep dhcpd; si el servicio se está ejecutando, se mostrará una línea con las estadísticas del proceso. A continuación se muestra la salida de este comando para el caso de la presente práctica:

[root@localhost angelv]# ps aux | grep dhcpd
root 4162 0.0 0.1 8552 2052 ?     Ss 08:23 0:00 /usr/sbin/dhcpd
root 4172 0.0 0.0 4228 768  pts/0 S+ 08:26 0:00 grep dhcpd
[root@localhost angelv]#
 
Se usa chkconfig  para conseguir que DHCP se inicie al arrancar(Al igual que sucede con los otros servicios de Linux, se tiene que reiniciar el demonio DHCP siempre que se haga cambios en los archivos de configuración). La salida de este comando en la práctica se muestra a continuación:

[root@localhost angelv]# chkconfig dhcpd on
[root@localhost angelv]# chkconfig --list | grep dhcp
dhcpd 0:desactivado 1:desactivado 2:activo 3:activo 4:activo 5:activo 6:desactivado
[root@localhost angelv]#
 
Ahora ya está el servidor funcionando en la máquina que ahora responde a la IP 192.168.1.1 para las máquinas de dentro de la subred. Y que irá asignando automáticamente direcciones IP desde la 192.168.1.2 hasta 192.168.1.254

Para probarlo ahora lo único que debemos hacer es conectar un hub o switch al cable saliente de la tarjeta de red que se corresponda con la interfaz eth0 y conectar a él máquinas con un cliente DHCP instalado(En la distribución Fedora se puede utilizar yum install dhcp-client) y con la configuración de red en modo DHCP.

Para configurar una máquina cliente en modo DHCP, en Linux, sólo se tiene que editar el fichero /etc/network/interfaces, comentando en él la línea relativa a eth0 así como las que hay debajo e indentadas con una tabulación a la derecha y poner esta línea: iface eth0 inet dhcp. Luego se reinicia la red con /etc/init.d/networking restart

Si le gustó esta entrada, ¡podría invítame a un café!

0 comentarios:

Related Posts with Thumbnails