Una de las tareas mas tediosas del administrador de redes, es la de recorrer los puestos de trabajo para configurar numeros de IP ya sea por la llegada de un equipo nuevo, o por modificaciones en la estructura de la red. ¡Pongámosle fin a las molestias que todo esto implica, configurando en pocos minutos los servicios de asigancion dinamica de IPs!

Introducción

El uso de IPs estáticas en redes bajo nuestra tutela conlleva siempre inconvenientes de mantenimiento sin importar las dimensiones de la misma; puede tratarse de nuestra pequeña red doméstica, un cybercafé, oficina o una universidad. Los nuevos nodos que se conecten a la red o los cambios vitales como servidores de nombres, pasarela (gateway), servidores WINS, etc. nos obligan de cuando en cuando a dejar nuestro cálido puesto junto a los servidores y recorrer los cubículos para tipear.

Con menos suerte, alguien sin necesidad de conocer el modelo TCP/IP queda a cargo del lugar, y llama a deshora preguntando por un número válido, o termina consultando un infame cuaderno de IPs y claves. Dado que cuanto más grande es la red es más difícil mantenerla de este modo, gente con muchas ganas de mejorar las cosas (el grupo de trabajo de la Internet Engineering Task Force) decidió resolver el problema desarrollando un Protocolo para Configuración Dinámica de Terminales, conocido como DHCP. Este protocolo, basado en otro llamado BOOTP (de Boot Protocol) pero con mejores características, está descripto en el RFC 2131 y en anteriores como el 1541 y el 1531, ya obsoletos por la publicación del primero. Imaginando que los interesados en esta nota serán administradores de redes haciendo sus primeras armas, aconsejaré a los gentiles lectores que ignoren aquellos oscuros documentos, y pasaré a resumir el funcionamiento del protocolo en pocas líneas.

Cuando un equipo, con un sistema operativo cualquiera que soporte TCP/IP se conecta a nuestra red, desconoce sus caracteristicas. Sólo conoce un número: la dirección de hardware (tambien conocida como MAC address) de su tarjeta de red (también llamada NIC). Ese número identifica inequívocamente a cualquier dispositivo de red, y (en teoría :) no puede cambiarse. Esto de la MAC no solo es válido para dispositivos Ethernet, pero en la gran mayoría de los casos es la capa física utilizada, asi que no ahondaremos mas en la cuestión. Con aquel número en mente, la terminal lanza un grito de ayuda y es allí cuando nuestro buen servidor DHCP acude en respuesta, indicándole su nombre de host, dirección IP, tipo de red, servidor de nombres, WINS, ruta de salida, y otros detalles más.

Ingredientes

  • Hardware: Una red TCP/IP ;). Un servidor DHCP (sobreentiendo que corriendo GNU/Linux). Clientes dispuestos a aceptar configuración automática. (Si se les asigna configuración estática, simplemente ignorarán las ideas del servidor DHCP respecto a la red).

  • Software: Del lado del servidor, uno de los tantos paquetes disponibles, en cada distribución o en Internet: dhcpd, dhcp3 de ISC, udhcpd, etc. Cabe destacar sobre este último paquete que el cliente y el servidor juntos apenas superan los 40K y esto se debe a que fueron pensados para funcionar en sistemas embebidos, donde la carencia de disco y memoria son un problema. Desde luego carecen de muchas funcionalidades de los otros paquetes, pero en determinadas condiciones son insustituibles como solución. Del lado del cliente, en el caso de GNU/Linux será necesario un paquete cliente como dhcpcd, pump o udhcpc. En el caso de clientes Windows, no hay nada que agregar. Luego también puede ser interesante agregar al servidor algunas herramientas de análisis como LanLord, chechDHCPd, dhcpStatus o reportDHCPd (Perl).

    Para la configuración pueden utilizar algunas interfeces web o Gráficas, como el módulo para administracion dhcp de Webmin, WebConf (PHP), dhcptool o WebDHCP. Igualmente para el lado del cliente hay herramientas gráficas, pero la simplicidad de los archivos de configuración es tal que les sugiero tomarse la molestia de editarlos.

    [PAGEBREAK]

    Preparación

    Instalado el software del servidor, nuestra atención caerá sobre dos archivos importantes: /etc/dhcpd.conf, y /var/state/dhcp/dhcpd.leases. El primero nos permitirá configurar el servidor a gusto y placer, mientras que el segundo es una base de datos creada por el servidor, con las asignaciones de IP que se van realizando. Este último archivo es importante, porque permite en primer lugar verificar la actividad del servidor, y en segundo (y más importante que nuestra curiosidad), permite al servidor llevar cuenta de las IPs que va prestando a los distintos clientes, para conservarlas en caso de caídas.

    La capacidad de asignar IPs dinámicamente a equipos desconocidos junto a la de recuperar las IPs asignadas con anterioridad, sobre una base de tiempos de caducidad renovables, constituyen la ventaja más notable sobre el predecesor de DHCP, BOOTP. Cabe destacar respecto al archivo leases, que el servidor udhcpd, pensando en sistemas embebidos que no siempre cuentan con discos rígidos, no solo puede actualizar su .leases en base a tiempos, sino tambien a señales, lo cual le hace ideal para instalaciones tipo Disk-on-a-chip.

    Visto esto, nuestro archivo de configuración debe quedar aproximadamente así en el supuesto de que Uds. ajustarán las IPs a su red:

    --------------corte aquí--------------------------- subnet 10.10.1.0 netmask 255.255.255.0 { option routers 10.10.1.254; option subnet-mask 255.255.255.0; option domain-name-servers 10.10.1.2;

    option domain-name empresa.gov.cz;

    range dynamic-bootp 10.10.1.10 10.10.1.250;
    default-lease-time 62208000;
    max-lease-time 62208000;
    

    lea mas abajo para agregarmas opciones aquí

    } ----------péguese en /etc/dhcpd.conf (el texto :)--

    La primera línea, describe la red y es posible definir más de una subred, en caso de que compartan la misma infraestructura física. Definida la red y la máscara, indicaremos la ruta por defecto (gateway, puerta de enlace o pasarela son términos equivalentes), el o los servidores de nombres, opcionalmente un nombre de dominio y el rango de IPs que estarán disponibles para asignarlas a los clientes que las soliciten. Nótese que se han reservado los primeros 10 IPs y los últimos 4, por si necesitamos ocuparlas de modo estático con routers, por ejemplo. Las dos líneas restantes indican el tiempo por defecto y máximo de vencimiento de la asignación de IPs en segundos, y en el ejemplo equivalen a cuatro años. Para que se ahorren cálculos, sírvanse una lista de valores que pueden resultarles de interés:

    600 - 10 minutos 7200 - 2 horas 86400 - 1 día 604800 - 1 semana 2592000 - 1 més 31104000 - 1 año 62208000 - 2 años

    Decoración

    Con la configuración anterior, las cosas ya están funcionando. Aunque desde luego el protocolo es mucho más potente. Es posible por ejemplo asignar IPs fijas por MAC address, agregando la siguiente declaración:

    host diskless3 { hardware ethernet 00:00:21:47:6e:22; fixed-address 10.10.1.12; # filename "/tftpboot/diskless.boot" }

    La línea comentada se refiere a una imágen de sistema operativo que deberá obtener la máquina cliente en cuestión, en caso de que se trate de una máquina sin disco. El tema de las terminales sin disco, involucra otros protocolos como tftp y nfs, y escapa a los alcances de esta breve nota, por lo que no detallaremos más que lo visto.

    Es posible tambien agrupar varios hosts para indicarles opciones a todos, como en el ejemplo:

    group { filename "diskless_chicas"; next-server diskless-server;

         host diskless10 {
             hardware ethernet  08:00:30:00:15:42; 
         }
    
         host diskless11 {
             hardware ethernet 08:00:20:9d:19:ac; 
         }
    
         host diskless12 { 
             hardware ethernet 00:e0:7d:b9:89:09; 
         }
    

    }

    Hay algunas cláusulas más disponibles en la configuración, pero como introducción lo visto es más que suficiente. A continuación configuraremos los clientes.

    [PAGEBREAK]

    Guarnición

    De nada sirve tener andando el servidor DHCP si las máquinas cliente están configuradas con IPs estáticos. De modo tal que si es su caso, va a tener que levantarse una vez más del servidor, e ir a reconfigurarlas (pero será la última en lo que a IPs respecta, tranquilícese).

    En el caso de terminales Windows bastará seguir la configuración por defecto. De su versión de Windows dependerá como llegar a él (Panel de Control/Red/TCP-IP para Win9x, o Conexiones de Red/Red de Area Local/Propiedades/TCP-IP para versiones subsiguientes):

  • Obtener IP automáticamente
  • DNS desactivado
  • WINS desactivado (puede no ser su caso, pero si tiene dudas déjelo así)

    Si se trata de una terminal Linux, según su distribución dispondrá de un interfaz (control-panel, linuxconf, netconf, redhat-config-network, drake-algo o lo que quiera). Para el caso de Debian, edite el archivo /etc/network/interfaces, indicando dhcp como método en lugar de static, si es que no ha sido cambiado ya. Cualquiera sea su distribución, los scripts de inicio (en rc.?) deben invocar al demonio dhcpcd o a pump, indicandoles el dispositivo que necesitan configurar.

    En los screenshots puede redondear cualquier duda que pueda quedarle. Por último me queda decirles que no olviden asegurar su servicio para que solo esté disponible que a quienes lo necesiten; si permiten la asignación a clientes desconocidos, y es posible acceder desde otra red al servicio (esto es posible en BOOTP y en DHCP, a diferencia de RARP), podría terminar en una denegación de servicio. Los puertos relacionados al servicio son el 67 y el 68 para escucha y transmisión respectivamente.

    Tiempo de cocción

    Como pueden ver, esto es mucho más sencillo de lo que parece, solo toma unos minutos y es una garantía de disponibilidad, facilidad de configuración y elegancia para nuestra red. Si necesitan más documentación, les recomiendo visitar los siguientes links:

  • El mini-HOWTO de DHCP
  • El mini-Como de DHCP
  • FAQ de DHCP
  • Internet Software Consortium
  • Nota en Linux Magazine sobre DHCP
  • Sitio de uDHCP
  • RFC 2131

  • Publicidad

    © 2006 Planeta Linux Argentina. La fuente de recursos Linux desde 1999. Desarrollado por VivaServer.