29 sept 2015

Servidor DHCP en Ubuntu Server 14


1. ¿Qué es y para qué sirve un servidor DHCP?


DHCP viene de inglés Dynamic Host Configuration Protocol (protocolo de configuración dinámico de los host) y permite configurar las direcciones IP y sus correspondientes máscaras de manera automática, además de las puertas de enlace.


Por ejemplo, tenemos una empresa con 50 equipos y no tenemos tiempo ni deseo de configurar sus direcciones IP de manera manual. Para ello, se dedica a esta tarea un servidor DHCP que va a repartir esas direcciones a los clientes, de manera que en estos últimos no hará falta realizar ninguna configuración manual. Simplemente se tendría que poner la obtención automática de la dirección IP y de lo demás se encargaría el servidor.


En este tutorial vamos a ver la implantación de los servidores DHCP en entornos GNU/Linux.

2. Empezamos. Actualizamos los repositorios.



Partiremos del punto cuando ya tenemos instalado el Ubuntu Server en una máquina. Las pruebas de contexto serán realizadas en VirtualBox.
Para realizar las primeras configuraciones nos aseguramos de que tenemos configurada la red en modo NAT. 
Nos situamos en modo root para poder modificar los ficheros del sistema más en adelante:


Actualizamos los repositorios y las librerías del sistema para que el servidor que instalaremos a continuación pueda funcionar correctamente.

apt-get update
apt-get install dkms
apt-get install build-essential
reboot (reinicia la máquina) 

Si nos dan errores al ejecutar el primer comando nos aseguraremos de que la configuración de red de nuestra máquina es la correcta.

3. Instalamos el servidor.

Utilizaremos el ISC-DHCP-SERVER Atención! Es imprescindible poner la máquina virtual o real en módo sólo anfitrion o Red interna antes de proceder con la configuración del servidor (para evitar conflictos con los servidores DHCP legítimos).

Ejecutamos el comando apt-get install isc-dhcp-server para instalar el servidor DHCP.

Si nos salen errores de cabeceras nos aseguraremos de que en la máquina virtual tenemos configurada la red en modo NAT y la interfaz ethernet correspondiente coge la configuración IP via DHCP. Sería un error configurar la IP estática antes de instalar el ISC-DHCP-SERVER, ya que el sistema no sería capaz de resolver el nombre del dominio del repositorio.



4. Asignamos una @IP fija.

Para ello tendremos que configurar el fichero /etc/network/interfaces. Yo voy a emplear editor Nano para hacerlo. No olvidamos de ejecutar sudo su antes de editarlo o, bien, poner sudo delante del comando.




Configuramos el tipo de interfaz (static), la dirección IPv4 del servidor, dirección de red, máscara, dirección broadcast, y en caso de su necesidad, la puerta de enlace (yo no la voy a configurar).


Guardamos la configuración mediante Ctrl^X y después pulsamos Y para confirmar. Pulsamos intro para confirmar el nombre del fichero (no lo cambiamos!!!).

Nos aseguramos de que la dirección IPv4 se ha asignado correctamente en la interfaz. Para ello ejecutamos ifconfig. Si vemos que tenemos asignada una IP que no es la que especificamos ejecutamos ifdown INTERFAZ && ifup INTERFAZ (ej: ifdown eth0 && ifup eth0).



5. Procedemos con la configuración del servidor mediante el fichero /etc/dhcp/dhcpd.conf

Antes que nada realizamos una backup del archivo de configuración del servidor. Para ello ejecutamos: cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak


Procedemos con la configuración del archivo /etc/dhcp/dhcpd.conf. Para ello lo abrimos con un editor de texto e introducimos los siguientes parámetros: subnet (la red en la que vayamos a estar), range (el intervalo de direcciones que se van a repartir), option domain-name (nombre del dominio). Si es necesario, especificamos tambien la puerta de enlace repartida con el parametro option router. Guardamos los cambios y reiniciamos el servicio DHCP mediante /etc/init.d/isc-dhcp-server start. El contenido del archivo configurado quedaría de siguiente forma:



6. Pruebas.

Para realizar las pruebas de funcionamiento voy a emplear una máquina virtual con Windows 7 SP1 y otra con Ubuntu Desktop (14.04).

Prueba con cliente Windows 7

Para evitar conflictos con otros servidores DHCP ponemos tanto servidor como cliente en Red interna. De esta forma solo se van a poder comunicar entre ellos.
Tras arrancar el sistema entramos en la linea de comandos de Windows. Para ello pulsamos Win+R y tecleamos CMD.
Introducimos el comando ipconfig y contemplamos el resultado. En mi caso ha funcionado a la primera, he recibido la configuración IP de mi servidor. Pero si visualizáis una IP del rango 169.X.X.X significa que la IP ha sido brindada por el propio sistema operativo. Para renovarla ejecutamor primero ipconfig /release y a continuación ipconfig /renew. Si tras introducir estos comandos seguís viendo la 169.X.X.X significa que el cliente no reconoce vuestro serivodr DHCP. Habría que comprobar la configuración del servidor y reiniciar el servicio de reparto de direcciones.



Prueba con cliente GNU/Linux (Ubuntu Desktop)

Iniciamos nuestra máquina virtual con Ubuntu Desktop, ponemos la configuración de red en modo Red interna e iniciamos el intérprete de comandos.
Ejecutamos el comando ifconfig ó ifconfig INTERFAZ (ej: ifconfig eth0) para ver la configuración de nuestra interfaz de red. Como podemos ver, la dirección IP asignada es la 192.168.0.3 que viene a ser la seguiente después de 192.168.0.2, asignada a nuestra máquina con Windows 7.



Si no os recibe correctamente la configuración via DHCP aseguraros de que la red de la máquina está en modo de red interna. También podríamos comprobar la configuración del archivo /etc/network/interfaces en caso necesario, añadiéndole la línea iface eth0 inet dhcp, pero en principio no hace falta, de hecho en Ubuntu de escritorio ese fichero ni incluye la configuración de la eth0 de manera predeterminada, como vemos a continuación:




7. Configuramos el reparto de direcciones fijas a determinadas direcciones MAC

Para ello vamos al fichero de configuración de /etc/dhcp/dhcpd.conf y añadimos cada host de siguiente manera, especificando su nombre, dirección IP concedida y su dirección física. Además, está dirección tendrá que estar fuera de la pool de direcciones especificada anteriormente. En mi caso fuera de 192.168.0.2-192.168.0.100
Si necesitamos que el servidor reparta más de una IP fija, repetimos el procedimiento.


Para averiguar la dirección física (MAC) del adaptador de red en sistemas Windows ejecutamos ipconfig /all en la línea de comandos. En entornos GNU/Linux ejecutaremos el comando ifconfig.
Vamos a la línea de comandos de nuestro cliente y tecleamos ipconfig. Nos aseguramos de que ha recibido una dirección IPv4 que especificamos en /etc/dhcp/dhcpd.conf del servidor.









1 comentario: