[Software] Configurando DHCP para que funcione con 2 tarjetas de red

Conexión entre PCHola lector y/o seguidor. Hace unos días me pidieron ayuda para configurar en un servidor DHCP al cual se le iba a adicionar una tarjeta de red para que asignara IP a 10 clientes ligeros que iban a empezar a brindar servicios, con la particularidad que el rango de IP que utilizarían dichos clientes iba a ser distinta al resto de las estaciones de trabajo que ya se encontraban en la red. En ese momento, busqué entre los recuerdos digitales y nos dispusimos a montar esta solución que comparto aquí,

Empezaré diciendo que todo esto se realizó en un servidor con Debian 7 Wheezy, con el paquete ISC-DHCP-SERVER y donde las interfaces de red son eth0 para la que se encontraba brindando servicio y eth1 para la nueva incorporada al equipo que prestaría servicio a los clientes ligeros. Como tal solo me centraré en lo que respecta al servicio DHCP en forma general ya que cada configuración de DHCP en servidores de clientes ligeros es especifica en los parámetros a usar y no es propósito de este artículo.

En la documentación oficial del proyecto que atiende el paquete ISC-DHCP-SERVER cuyo nombre es Internet System Consortium (de ahí las siglas de ISC 😉 ) declaran que se puede especificar por cuales interfaces de red se brindará el servicio, incluso un mismo rango puede ser distribuido por más de una interface de red, que aunque puede ocasionar colisión de solicitudes de aprobación de IP asignado por el servidor, en la práctica con redes de hasta 300 PC no se manifiesta un total caos. La declaración se realiza con el parámetro interfaces el cual se le asignará el nombre de la interface de red que va a proporcionar el servicio.

A continuación expongo un ejemplo un escenario y su solución. Para la red que ya estaba funcionando diremos que es un clase C privada con declaración 192.168.1.0/24 y para la red de clientes otra clase C con declaración 192.168.2.0/24.

# Configuración de DHCP para red existente.
subnet 192.168.1.0  netmask 255.255.255.0 {
  range 192.168.1.2 192.168.1.254;
  option domain-name-servers 192.168.1.1;
  option domain-name "mywork.cu";
  option routers 192.168.1.1;
  option broadcast-address 192.168.1.255;
  default-lease-time 600;
  max-lease-time 7200;
  interfaces=eth0;
}


# Configuración de DHCP para red de nuevos clientes.
subnet 192.168.2.0  netmask 255.255.255.0 {
  range 192.168.2.2 192.168.1.254;
  option domain-name-servers 192.168.2.1;
  option domain-name "mywork.cu";
  option routers 192.168.2.1;
  option broadcast-address 192.168.2.255;
  default-lease-time 600;
  max-lease-time 7200;
  interfaces=eth1;
}

Por supuesto hasta aquí solo hemos definido los rangos que serán asiganados por cada interface de red, pero pudieramos preguntarnos ¿cómo es que sabe el servidor a que computadora le asigna un IP de un rango y a cuales otro IP de otro rango? Pues suponemos que físicamente estas 2 redes no se encuentran enlazadas, dicho en cubano: no hay ningún cable que conecte un switch de una red a otro switch de lo otra red. Por tanto es de entender que solo a nuestro servidor DHCP central les llegan 2 cables de red: uno del switch de una red y otro ( ¿cual otro? ) con el del switch de la otra red.

¿Y si por casualidad como quema cables que somos las 2 redes estuvieran interconectadas? Pues hasta para ese no ideal escenario existe solución ya que en esos casos se deben declarar de forma individual y especifica a cual rango se procederá a asignar el IP dicha computadora, ya que por defecto todo servidor DHCP que se respete debe ser tan servicial de brindarle lo que le queda por usar a todo el que lo pida. A continuación la configuración modificada donde se declara una computadora en cada rango:

# Configuración de DHCP para red existente.
subnet 192.168.1.0  netmask 255.255.255.0 {
  range 192.168.1.2 192.168.1.254;
  option domain-name-servers 192.168.1.1;
  option domain-name "mywork.cu";
  option routers 192.168.1.1;
  option broadcast-address 192.168.1.255;
  default-lease-time 600;
  max-lease-time 7200;
  interfaces=eth0;
  
  # PC de la niña linda de Contabilidad
  host lachichi.mywork.cu {
    hardware ethernet 20:25:64:d5:05:89;
  }
}


# Configuración de DHCP para red de nuevo clientes.
subnet 192.168.2.0  netmask 255.255.255.0 {
  range 192.168.2.2 192.168.1.254;
  option domain-name-servers 192.168.2.1;
  option domain-name "mywork.cu";
  option routers 192.168.2.1;
  option broadcast-address 192.168.2.255;
  default-lease-time 600;
  max-lease-time 7200;
  interfaces=eth1;
  
  # PC del colega que me copia el paquete
  host lariquiti.mywork.cu {
    hardware ethernet ec:9a:74:5c:8e:c2;
  }
}

Solo voy a aclarar unos detallitos. En muchas redes por ahí se establece y sigue el estándar de que se reserva el primer host de la red para funciones de gateway y dns, lo cual puede ser modificado en las configuraciones. Por lo general el tiempo de asiganción de IP es de 10 Horas, tiempo más que suficiente para la jornada laboral de la mayoría de trabajadores de oficina (léase horas nalgas frente a una computadora).

Por último y no menos importante quiero decir que en la situación original era de suma importancia que ambas redes no se “vieran”, es decir, que un usuario de la red existente no pudiera comunicarse con otro usuario de la red nueva, lo cual por defecto es así, pero que en caso de que se quisiera autorizar ese tipo de cuestión, solo es ponerse a ejecutar algunas líneas de IPTABLES (o su paquete de firewall preferido) para lograrlo. Pero eso, eso es tema de otra entrada.

Enlace permanente a este artículo: http://sasousuke.cubava.cu/2016/10/27/software-configurando-dhcp-para-que-funcione-con-2-tarjetas-de-red/