Montar un servidor casero con Raspberry Pi (Parte 3): Configurar servidor DHCP

En esta tercera parte del tutorial montaremos el primer servicio en nuestro servidor Raspbian, instalaremos un servidor DHCP en la Raspberry Pi. Deberemos configurar en nuestra Raspberry Pi el esquema de direcciones IP que deseamos y quitarle ese rol al router, que es el dispositivo que actualmente está realizando esta función.

Para toquetear un poco más las opciones crearé un esquema de red totalmente innecesario para una pequeña red casera, pero que nos hará trastear un poco con las distintas opciones de configuración del servidor, lo que nos ayudará a entender mejor las posibilidades del servicio.

Configurar servidor DHCP Raspberry Pi

Índice de tutoriales:

  1. Objetivos e índice.
  2. Instalar Raspbian en una tarjeta SD.
  3. Primera ejecución de Raspbian.
  4. Configurar servidor DHCP.
  5. Configurar servidor DNS caché.
  6. DNS local con actualizaciones DHCP.
  7. Acceder al servidor desde el exterior.
  8. Instalación y configuración de OpenVPN.
  9. NAS con Raspberry Pi y Samba

Tutoriales relacionados:

Esquema de la red

Advertencia: Este esquema va a ser el que yo utilizaré para explicar la configuración, podéis usar el esquema que os plazca.

En vez de utilizar el rango que por defecto nuestro router trae incorporado (192.168.1.0/24 o 192.168.0.0/24) lo cambiaremos, por ejemplo, por 192.168.66.0/24, así si algún dispositivo queda con una configuración incorrecta al instante veremos que algo está pasando, ya que quedará totalmente aislado de la red.

Reservaremos un espacio de direcciones comprendido entre la 192.168.66.100 y 192.168.66.119 donde ubicaremos el router (192.168.66.100), la Raspberry Pi (192.168.66.101) y en mi caso el ordenador fijo y un htpc (192.168.66.110 y 111).
El resto del espacio, 192.168.66.1-192.168.66.99 y 192.168.66.120-192.168.66.254, será utilizado como rango de asignación dinámica, un rango innecesariamente grande para una red doméstica, pero que resulta interesante de configurar.
Con esto en cuenta estos serían los datos:

  • Red: 192.168.66.0
  • Máscara de subred: 255.255.255.0
  • Rango DHCP: 192.168.66.1-192.168.66.99, 192.168.66.120-192.168.66.254.
  • Gateway: 192.168.66.100.
  • Raspberry: 192.168.66.101.
  • Reservas DHCP: 192.168.66.110 y 192.168.66.111.
  • DNS: El que queramos, la ip de nuestro router, los DNS de nuestro ISP, los de Google…

Instalación del servidor DHCP en Raspbian

Para instalar el servidor DHCP deberemos conectarnos vía SSH a nuestra Raspberry Pi e instalar isc-dhcp-server  con el gestor de paquetes de Raspbian:

$ sudo apt-get install isc-dhcp-server

Al instalarlo recibiremos el siguiente aviso:

[FAIL] Starting ISC DHCP server: dhcpd[….] check syslog for diagnostics. … failed!
failed!

Esto se da porque actualmente no existe una configuración buena establecida, que es lo que haremos a continuación.

Configuración del servidor DHCP

Hay dos archivos de configuración importantes que debemos conocer a la hora de instalar nuestro servidor DHCP:

/etc/default/isc-dhcp-server

En este archivo podremos configurar la interfaz de red en la que ejecutaremos el servicio. Así que deberemos abrir el archivo ($ sudo nano /etc/default/isc-dhcp-server) y buscar la línea “INTERFACES” para dejarla tal que así:

INTERFACES=“eth0”

/etc/dhcp/dhcpd.conf

Una buena práctica antes de ponernos a modificar dicho archivo o cualquier otro archivo de configuración es la de hacer una copia de seguridad del mismo, para eso:

$ sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.backup

Hecho esto ya estamos listos para modificar el archivo. En este archivo reside el grueso de la configuración, desde aquí definiremos las opciones globales, los rangos de DHCP y sus respectivas opciones.

Para editarlo, como siempre:

$ sudo nano /etc/dhcp/dhcpd.conf

Nos encontraremos con un archivo bastante extenso aunque la mayoría comentado con # al principio de la línea. Podemos optar por borrar todo su contenido o bien por modificar y añadir las líneas que nos interesan. Sea como sea, para que el servicio funcione con los datos que hemos establecido al principio de esta entrada necesitaremos estos datos:


#Opciones globales
ddns-update-style none; #Puede actualizar los registros de un DNS si la IP de un servidor de la LAN cambia, no nos interesa.

option domain-name "home.local"; #Establecemos un nombre de dominio.
option domain-name-servers 8.8.8.8, 8.8.4.4; #Configuramos los servidores DNS.

default-lease-time 259200; #Tiempo por defecto de la concesión en segundos.
max-lease-time 604800; #Tiempo máximo de la concesión en segundos.

authoritative; #Establece el servidor como principal.
log-facility local7;

#Opciones de subred
subnet 192.168.66.0 netmask 255.255.255.0 { #Declaración de la subred.
range 192.168.66.1 192.168.66.99; #Primer rango de direcciones.
range 192.168.66.120 192.168.66.254; #Segundo rango de direcciones.
option routers 192.168.66.100; #Gateway (nuestro router).
option subnet-mask 255.255.255.0; #Máscara de subred.
option broadcast-address 192.168.66.255; #Dirección de broadcast
}

#Reserva de direcciones
host timbleck-pc1 { #Declaramos la reserva
hardware ethernet 00:11:22:33:44:55; #Dirección MAC del dispositivo.
fixed-address 192.168.66.110; #Dirección IP reservada.
}

#Reserva de direcciones
host timbleck-pc2 { #Declaramos la reserva
hardware ethernet 00:00:00:11:11:11; #Dirección MAC del dispositivo.
fixed-address 192.168.66.110; #Dirección IP reservada.
}

Es importante respetar la sintaxis del archivo (sobretodo sus “;” ya que son fáciles de olvidar).

Si bien he intentado comentar cada línea para que se entienda su significado paso a explicar la estructura del archivo. El archivo consta de tres partes en este ejemplo:

  • Opciones globales: La primera parte del archivo, aquí se declaran las opciones que serán comunes para todas las subredes que configuremos en el servidor.
  • Opciones de subred: Son opciones que sólo son válidas para dicha subred.
  • Reserva de direcciones: Asociamos direcciones MAC a direcciones IP, cuando estas se conectan en vez de darles una IP de alguno de los rangos configurados les dará la que hayamos configurado manualmente.

Evitando el desastre inminente

Con todo esto configurado estamos a un comando del desastre: en el momento en el que activemos el servicio de DHCP el servidor va a empezar a asignar IP’s de un rango cuyo gateway no existe, además de ser un rango distinto al de su propia IP, así que perderemos la conectividad hacia Internet y hacia nuestro servidor DHCP.

Para ahorrarnos el tener que configurar las IP’s a mano vamos a hacer las cosas en el orden correcto.
El primer paso va a ser cambiar la IP interna de nuestro router y asignarle la que hemos convenido, así que nos conectamos a su servidor web y le configuramos la IP 192.168.66.100.
Además, deberemos desactivar el servicio de DHCP del mismo desde su panel de control.

Lo siguiente será cambiar la IP de nuestra Raspberry Pi. Lo haremos como en el tutorial anterior, es decir, editando el archivo /etc/network/interfaces:


iface eth0 inet static
address 192.168.66.101
netmask 255.255.255.0
gateway 192.168.66.100

Y reiniciando el dispositivo. Al reiniciar el dispositivo la Raspberry volverá a intentar levantar el servicio, y esta vez debería hacerlo con éxito puesto que todas las opciones han sido correctamente configuradas.

Ahora nos toca volver a solicitar una IP vía DHCP en los distintos dispositivos de la red. Para hacerlo podemos reconectar la red físicamente o bien:

  • En Linux: Escribimos en un terminal: $ sudo dhclient -r.
  • En Windows: Escribir en un terminal: ipconfig /release, y luego, ipconfig /renew.

Con todo esto hecho ya deberíamos estar funcionando con nuestro nuevo esquema de red en la nueva subred 192.168.66.0/24 sin que los dispositivos que a partir de ahora se conecten noten el cambio.

Advertencia: Si dispones un ordenador con *buntu o derivadas (a partir de la versión 12.04) y la configuración de DNS no se te actualiza (apuntando siempre a 127.0.0.1 o 127.0.1.1) lee esto.

¡Comparte!Tweet about this on TwitterShare on Google+Share on FacebookBuffer this pageShare on LinkedInShare on RedditShare on TumblrEmail this to someone

15 Comments

  1. Yo Julio 24, 2013
  2. Yo Julio 24, 2013
    • Timbleck Julio 24, 2013
      • Yo Julio 24, 2013
  3. iscromanpc Septiembre 23, 2013
    • iscromanpc Septiembre 23, 2013
      • Timbleck Septiembre 23, 2013
        • iscromanpc Septiembre 24, 2013
  4. iscromanpc Septiembre 24, 2013
  5. Alber Marzo 23, 2014
  6. fran Abril 7, 2015
  7. Diegotini Abril 11, 2016

Deja un comentario