viernes, 7 de mayo de 2010

Servidor de DHCP en Ubuntu

Siguiente entrega de la serie administración de servidores con Linux:

1.- Instalación del servidor de DHCP

Antes de comenzar la configuración del servidor hay que asegurarse de que el núcleo tiene instalada la opción MULTICAST que es necesaria para llevar a cabo la asignación de direcciones de multidifusión. Para comprobarlo tecleamos
# ifconfig
debería aparecernos una línea como
ARRIBA DIFUSIÓN CORRIENDO MULTICAST MTU:1500 Métrica:1
en caso de no aparecer deberíamos recompilar el núcleo añadiendo la opción IP: multicast routing.


La última versión del servidor DHCP es dhcp3. El servidor proporcionará al cliente al menos los siguientes parámetros: dirección IP y máscara de subred, opcionalmente podríamos emplearlo para asignar otros valores como puerta de enlace, servidores DNS, ...
Para instalar el servidor podemos emplear aptitude, Synaptic,... o simplemente:
# apt-get install dhcp3-server
//versión actual (tras hacer apt-get update)
apt-get install isc-dhcp-server

1.1.- Configuración del servidor DHCP

La configuración del servidor se lleva a cabo en el fichero /etc/dhcp3/dhcpd.conf (en la nueva versión está en /etc/dhcp/dhcpd.conf), se compone de dos partes:
  • Parámetros: dónde configuramos el comportamiento del servidor. Por ejemplo: max-lease-time 86400; suelen ir al comienzo del fichero.
  • Declaraciones: las empleamos para describir las redes, máquinas y rangos de direcciones que concederemos a los clientes. Nos permiten anidar unas declaraciones dentro de otras. Por ejemplo host {….}
Los rangos de direcciones IP se especifican en secciones que empiezan con la palabra clave 'subnet' seguido de la dirección de red de la subred, continúa con la palabra 'netmask' seguido de la máscara de red. A continuación estará la lista de parámetros para dicha sección encerrados entre llaves. Además de la dirección IP podremos asignar, entre otras, la dirección de la puerta de enlace, servidores DNS, servidor Netbios específico distinto del general....
También se pueden hacer reservas de IP para un determinado equipo en función de la MAC de su tarjeta de red. Para establecer una configuración de equipo es necesario crear una sección host.
Veamos el fichero de configuración que he usado, comentando en cada línea qué hace cada párametro o declaración:
authoritative; #para que actualice la ip del clientes en caso de error, prevalece el servidor
ddns-update-style ad-hoc; #si vamos a actualizar dinámicamente el servidor de Dns puede tomar los valores none, ad-hoc, interim
ddns-updates on;# para permitir las actualizaciones en el servidor de DNS
# option definitions common to all supported networks...
option domain-name "mczones.es";# nombre del dominio para los clientes
option domain-name-servers 192.168.2.3, 8.8.8.8; #Servidores de DNS para los clientes
option netbios-name-servers 192.168.2.3; #IP del servidor netbios
default-lease-time 600; #tiempo en segundos de la cesión de la ip
max-lease-time 7200;#máximo tiempo que durará la cesión
subnet 192.168.2.0 netmask 255.255.255.0 { #Red y máscara que se dará a los clientes
option routers 192.168.2.3; # dirección de la puerta de enlace que se les dará
option domain-name-servers 192.168.2.3, 8.8.8.8;#servidores DNS -pueden ser distintos de los por defecto
range 192.168.2.10 192.168.2.50; #rango de direcciones que se cederán ambas incluidas
}
#reserva de dirección para el cliente
host clienteUned {
hardware ethernet 08:00:27:05:dc:d4; #dirección MAC del equipo
fixed-address 192.168.2.49; #dirección IP que se le asignará.
}
Si tenemos más de una tarjeta de red y queremos que el servidor DHCP arranque sólo en una de ellas tendremos que modificar el fichero /etc/default/dhcp3-server (en la nueva versión está en /etc/default/isc-dhcp-server ) e incluir una línea:
INTERFACES=”eth0” #podríamos poner todas las que queremos que escuchen separadas por espacios

1.2 Otras comprobaciones de Configuración

Para asegurarnos de que se crean los enlaces simbólicos para que al arrancar el equipo se inicie el servicio de DHCP, podemos teclear # update-rc.d dhcpd3-server defaults. Si necesitamos parar el servicio: sudo /etc/init.d/dhcp3-server stop (con start o restart para iniciarlo o reiniciarlo respectivamente o force-reload para cargar las opciones que hemos cambiado en la configuración).
Finalmente, si queremos comprobar si hay algún problema con el fichero de configuración, teclearemos en consola sudo dhcpd3 -d. Si lo que queremos comprobar es que direcciones ha concedido el servidor, por cuánto tiempo y a quién, tan sólo hay que echarle un vistazo al fichero /var/lib/dhcp3/dhcpd.leases (igual que en los casos anteriores en la nueva versión está en /var/lib/dhcp/dhcpd.leases).
En la siguiente imagen se puede comprobar el resultado de ejecutar ifconfig en el cliente tras haberle sido cedida una dirección mediante dhcp. Asimismo se ve la captura del fichero dhcpd.leases dónde se puede comprobar la concesión de la misma.

image

Para reiniciar el servicio /etc/init.d/isc-dhcp-server restart 

en caso de error podéis emplear el comando dhcpd -d para comprobar errores

 

 

2.- Ficheros que intervienen en las configuraciones.

2.1 Ficheros de configuración de la red:

  • Para reiniciar el servicio /etc/init.d/isc-dhcp-server restart (en las versiones antiguas /etc/init.d/dhcp3-server restart)


  • /etc/network/interfaces: Configuramos la ip, gateway, servidores dns,.... de nuestras tarjetas de red
  • /etc/resolv.conf: incluimos los dominios de búsqueda y las direcciones de los servidores DNS
  • /etc/hosts: se pueden relacionar nombres e ip de equipos
  • /etc/nsswitch.conf: se establece la prioridad a la hora de realizar la búsquedas o identificaciones, puede ser, por ejemplo primero el fichero hosts y en caso de no encontrarlo buscarlo en el servidor DNS -especificados en el fichero resolv.conf.
  • /etc/hostname: nombre del equipo
  • /etc/init.d/networking: ejecutable que me permite stop, start, restart (parar, iniciar, reiniciar) el servicio de red con los valores cargados en los ficheros anteriores.

2.2 Ficheros de configuración del servidor DHCP:

  • /etc/dhcp3/dhcpd.conf (o /etc/dhcp/dhcpd.conf): fichero de configuración del servicio
  • /var/lib/dhcp3/dhcpd.leases (/var/lib/dhcp/dhcpd.leases): cada vez que el servidor DHCP concede una ip a un equipo se registra una entrada en este fichero indicando la ip, mac y fechas de cesión y duración de la concesión.
  • /etc/default/dhcp3-server (/etc/default/isc-dhcp-server): podemos especificar que tarjeta/s escuchará el servidor y por lo tanto a que redes dará servicio en función de la interfaz de red a la que estén conectadas.
  • /etc/init.d/dhcp3-server (/etc/init.d/isc-dhcp-server): ejecutable al que se le pasa el parámetro: stop, start, restart o force-reload para parar, iniciar, reiniciarlo o para cargar las opciones que hemos cambiado en la configuración respectivamente.
Esta entrada tiene su continuación en administración de servidores con Linux:

7 comentarios:

Leroy Pérez Calvo dijo...

Un comando esta mal escrito. En /etc/networking/interfaces no es networking es network

Un saludo

Anónimo dijo...

Eres un hacha. Gracias por tus posts

Anónimo dijo...

loco que eso es en las version 14.00 de ubuntu

Anónimo dijo...

Eres un Crack tío, te queremos.

Anónimo dijo...

loco eso es en la versión 14.00 de ubuntu

Anónimo dijo...

esto esta muy bien en vez de pajearmela dije no mejor voy a comprobrar que sea networking y no era tu comentario nos a salvado de una catastrofe mundial

Anónimo dijo...

es un máquina del mundillo