Hola buenas! Pues nada, esta receta formará parte (espero) de una mayor que explicará como instalar una red VPN entre oficinas a través de Internet. Para llevar a cabo esto hay que empezar pasito a pasito, el primer paso será el siguiente: configurar la red local de cada oficina.

El protocolo DHCP

El protocolo DHCP (o Dynamic Host Configuration Protocol, o protocolo de configuración dinámica de los equipos) nos permitirá definir una configuración de red local en un sólo equipo, de manera que éste equipo configurará a los equipos que se lo pidan. A grandes rasgos el invento funciona así:
  • Un equipo que está arrancando no tiene configurados los parámetros de red por lo que inicia la transacción DHCP.
  • El equipo manda un DHCPREQ, que no es más que un mensaje broadcast en el que pregunta a ver si alguien le puede ayudar.
  • El servidor DHCP (el que le puede ayudar) le responde con un DHCPOFFER, con la información que el cliente necesita.
  • El cliente adopta esta configuración y cada cierto tiempo (el lease time) renovará su configuración, enviando al servidor un DHCPRENEWAL y recibiendo de éste un DHCPACK que indica que todo sigue normal.
El funcionamiento es muy sencillo pero tiene pequeños problemas con sus pequeñas soluciones: pueden existir varios servidores DHCP, en cuyo caso el cliente selecciona la configuración ofrecida por el principal y si ninguno se definió como principal, elige cualquiera de las dos configuraciones. Además los DHCPRENEWAL los enviará sólo al servidor del que ha cogido la configuración.

Instalar el servidor DHCP

Nosotros, en Debian usaremos el dhcp3-server, así que:
# aptitude install dhcp3-server
Una vez instalado no funciona ya que no tiene definido nada.

Configurar un servidor DHCP

Lo primero que debemos saber es: ¿en qué interfaz tiene que escuchar?. Por defecto nos vendrá configurado para escuchar peticiones de cualquiera de las interfaces. Si queremos cambiar esto tenemos que modificar el archivo /etc/default/dhcp3-server, que tiene el siguiente aspecto:
# Defaults for dhcp initscript
# sourced by /etc/init.d/dhcp
# installed at /etc/default/dhcp3-server by the maintainer scripts

#
# This is a POSIX shell fragment
#

# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
#	Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES=""
Y pondremos eth0 o las que sean (separadas por espacios) entre las comillas. Habiendo configurado esto sólo nos queda configurar nuestra red. Hagámoslo mejor en otro apartado, que son gratis... :D

Configuración de una subred

Vale, vamos a configurar la subred... ¡pero primero tendremos que saber qué es lo que queremos! aunque nosotros podríamos tener la subred que quisiéramos... esto no es recomendable, ya que los señores tan listos de la IANA nos recomiendan una serie valores posibles para nuestra red, estos son:
  • Rango IP: 10.0.0.0 Máscara red: 10.255.255.255
  • Rango IP: 172.16.0.0 Máscara red: 172.31.255.255
  • Rango IP: 192.168.0.0 Máscara red: 192.168.255.255
Nosotros vamos a elegir 192.168.X.X, además, como queremos tener 255 subredes (por si las moscas) haremos lo siguiente: cambiaremos nuestra máscara de red por 255.255.255.0, esto quiere decir que tendremos IP's de la forma: 192.168.Y.X donde Y será la subred y X el host. Una vez que sabemos lo que queremos (si no entiendes bien esto de las máscaras de red y tal puedes hacer dos cosas: pasar de ello o desempolvar los apuntes de redes) tenemos que ponernos manos a la obra:
  1. Debemos configurar manualmente la interfaz de la red local, es decir, donde llegan las peticiones DHCP. La IP que asignemos a la interfaz debe ser de la forma 192.168.Y.X, en nuestro caso elegimos: 192.168.0.1. ¿No sabéis cómo?... bueeeno... pues en el archivo /etc/network/interfaces tenemos que tener algo como:
    auto eth1
    iface eth1 inet static
    	address 192.168.0.1
    	netmask 255.255.255.0
    	broadcast 192.168.0.255
    Siendo eth1 la interfaz de la red local.
  2. Con la interfaz establecida definimos nuestra subred, eso lo hacemos en el fichero /etc/dhcp3/dhcpd.conf (que tiene muy buenos ejemplos) añadiendo lo siguiente:
    subnet 192.168.0.0 netmask 255.255.255.0 {
      range 192.168.0.10 192.168.0.254;
     }
    Notad que la máscara y el 192.168... coincide con la configuración manual de la interfaz. También podéis ver que comenzamos a dar IP's a partir de la 10, ¿por qué? pues símplemente para reservarnos unas cuantas IP's a posibles servidores de nuestra red local :). Como último detalle, observad que la IP x.x.x.255 tampoco la entregamos porque esa IP es especial y se reserva para los broadcast.
Con esto, reiniciamos el servidor dhcp y ya estará listo para asignar nuevas direcciones IP:
# /etc/init.d/dhcp3-server restart
Si nos vamos a los clientes y reiniciamos alguno comprobaremos dos cosas:
  • Tiene dirección IP
  • No funciona interneeeer :?
¿Y esto? pues muy sencillo... tenemos dirección IP, pero no tenemos ni puerta de salida (o gateway) ni servidores DNS configurados en el sistema. Podemos ir cliente a cliente configurándolo... ¡o podemos decir al servidor DHCP que lo configure también él! y para hacerlo nada más fácil que modificar nuestra subred definida anteriormente y añadir estas opciones:
subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.10 192.168.0.254;
  # Nuestro servidor DNS primario (nos lo da el ISP)
  option domain-name-servers 194.179.1.101;
  # Nuestra puerta de enlace a internet
  option routers 192.168.0.1;
  # Da igual, pero como lo sabemos... lo ponemos!
  option broadcast-address 192.168.0.255;
}
Con esto ya lo tenemos listo :). Si los clientes no tienen acceso a internet es por lo siguiente: la puerta de enlace que configura nuestro ejemplo es la 192.168.0.1, que es el equipo donde hemos instalado nuestro servidor DHCP. Si este equipo no tiene configurado el enrutado NAT, no puede funcionar de puerta de enlace. Configurar eso será motivo de una futura receta. Por ahora ya tenéis vuestro servidor DHCP configurado y los equipos de vuestra red local también :).

Referencias

Pues la misma documentación del paquete y los comentarios en los archivos de configuración del mismo... si es que es muy facilito! :D


blog comments powered by Disqus