13 de Julio, 2004

Dynamic Host Configuration Protocol

Una de las premisas de cualquier administrador es que el trabajo debe estar orientado a trabajar cada vez menos.

¿Cómo se consigue esto? Pues los conocimientos en programación tienen mucho que ver, aunque a veces el uso de las herramientas adecuadas es la clave para el éxito. Así que es importante conocer la existencia de esas herramientas.

Lamentablemente esta forma de pensar nos convierte a veces en unos vagos de cuidado :P.

Mi portátil (vortex) tiene 2 tarjetas PCMCIA, una ethernet (ne?, estamos en un *BSD) y una wlan 802.11b (wi?). No puedo pinchar las dos a la vez, por cierto (no se si es fallo de diseño del portátil o de las tarjetas).

La configuración de las tarjetas wireless, móviles por definición (ya que son sin cables), suelen implicar el uso de un cliente DHCP (Dynamic Host Configuration Protocol) que obtiene la información pertinente del demonio dhcpd con autoridad en esa red. Así trabajamos en Elche Wireless, para cada subred hay un servidor que configura los clientes.

Ahora bien, en mi red local las máquinas tienen cables, y por lo tanto son poco móviles (que pesan lo suyo :P). Así que toda máquina conectada a mi switch tiene una dirección fija de la red local 192.168.0.x/255.255.255.0, el DNS (en blackshell, que hace caché de mi ISP) y la puerta de enlace predeterminada (blackshell otra vez, es mi enrutador a otras redes).

Hoy he estado ajustando el portátil para trabajar con él cuando me vaya a la playa, y con fastidio he tenido que modificar parámetros de la configuración (como /etc/resolv.conf) que se machacan cuando conecto a elxwifi con la tarjeta wlan (aunque los *BSD guardan la configuración de cada tarjeta en /etc/hostname.if, siendo if el interface; wi0 en este caso para la tarjeta wlan).

La verdad es que la vagancia ya me estaba resultando cara. No era la primera vez que ajustaba la configuración a mano, y eso que no era nada complicado configurar un servidor DHCP en mi red local y satisfacer así las necesidades de mis clientes móviles (bueno, solo el portátil... :D).

En vortex, /etc/hostname.ne0:

dhcp

En blackshell, que es mi servidor local (OpenBSD, algunas cosas sí serán particulares de este sistema, otras no):

# touch /var/db/dhcpd.leases
# echo ne3 > /etc/dhcpd.interfaces

Así nos aseguramos que el fichero dhcpd.leases existe, sino no arrancará el demonio. También indicamos que el servicio estará disponible solo en la red local (ne3 es la tarjeta con acceso a la LAN).

La configuración del servidor en /etc/dhcpd.conf es:

subnet 192.168.0.0 netmask 255.255.255.0 {
        range 192.168.0.100 192.168.0.200;

        option domain-name "usebox.net";
        option domain-name-servers 192.168.0.50;
        option routers 192.168.0.50;
}

Que indica que entregará para la subred indicada IPs del rango 192.168.0.100 al 192.168.0.200 (ojo, que esas IPs no estén nunca cogidas por máquinas con IP fija). Indicamos un nombre de dominio para las búsquedas, el DNS a emplear (blackshell) y la puerta de enlace predeterminada (blackshell también).

Solo queda editar /etc/rc.conf.local para que el demonio arranque en cada inicio del sistema:

dhcpd_flags="-q"

Si no queremos reiniciar, un dhcpd -q ne3 arrancará el demonio manualmente.

Y eso es todo. Ahora cada vez que conecto el portátil a la red local, es blackshell el que indica a vortex como configurar la tarjeta de red.

Los servidores DHCP tienen otras utilidades, aun con máquinas no móviles. Si tenemos la MAC de cada máquina (Media Access Control, un número único que tienen todos los dispositivos ethernet y que es comunicado al servidor DHCP al pedir la configuración), podemos asignar una IP a determinada MAC. Esto se hace añadiendo al /etc/dhcpd.conf:

host homeworld {
                hardware ethernet 08:00:2b:4c:69:43;
                fixed-address 192.168.0.1;
}

Suponiendo que esa fuera la MAC de la tarjeta de red de homeworld con la que conecta a la LAN, el servidor DHCP siempre le entregará la misma IP.

Esto nos permite cambiar la configuración de toda una red cómodamente, solo modificando un fichero dispuesto en la máquina que controla el servidor DHCP. Solo necesitamos saber la MAC de cada máquina con IP necesariamente fija, permitiendo al resto obtener una dirección de un intervalo. Para redes muy grandes, esto es muy útil.

Las posibilidades son infinitas, pero me conformo con no tener que tocar nunca más la configuración de mi portátil: enchufar y listo ;).

Nota: Si nos encontramos con que el cliente DHCP nos dice que la oferta del servidor no satisface su petición, probablemente sea porque el cliente pide algo que el servidor no da (pasa habitualmente con la dirección de broadcast). Me había pasado antes y no sabía porqué era, hasta ahora :D.

Anotación por Juan J. Martínez.

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.