Estas son las instrucciones para disponer de un servicio de nombres para máquinas con IP dinámica.
Para no repetirme mucho, indico aquí que todos los archivos y directorios mencionados hacen referencia a la distribución Debian.
Solicitar registro
Se envía un mensaje al administrador incluyendo el nombre de la máquina dentro de la red (por ejemplo cimitarra.dhis.escomposlinux.org). El administrador envía un mensaje de correo con el archivo de configuración necesario, incluyendo las claves de conexión. Es, pues, muy conveniente disponer de clave pública para que la respuesta pueda ir cifrada.
Instalar el programa cliente
Aunque puede funcionar con versiones 3 y 4 del protocolo DHIS, es conveniente utilizar la versión 5. Debian dispone de paquete sólo en la rama testing y unstable (a fecha de hoy); en otro caso el software se puede bajar de http:/www.dhis.org/r5.
Tanto en estas páginas como en la documentación del paquete existe suficiente información para instalar y configurar el cliente. No puedo extenderme más sobre eso, pero responderé a cualquier duda gustosamente.
Configurar el programa cliente
Una vez recibido el correo con el archivo se debe situar en el directorio de configuración, que en Debian al menos es /etc y asegurarse de que el programa cliente sabe dónde está.
Asumiendo que el archivo recibido es el siguiente, lo guardamos como /etc/dhid.conf:
{
hostid 8384
authp 13727238658492840001656445184901982214200350391218
authp 02849852151624032815226088254805477622054302177751
authq 15040637031484173585122083444914615212567889933917
authq 12235490495543353891181268798187161234418096057411
isaddr dhis.escomposlinux.org
refresh 120
}
los únicos parámetros que pueden cambiarse, si así se require, son la dirección del servidor dhis -línea isaddr- y el tiempo de refresco para la comunicación desde el servidor -línea refresh-.
Para el primer parámetro se pueden incluir direcciones IP en lugar de nombres de máquina; se hace ésto último por mera comodidad, pero hay que tener en cuenta que si el cliente dhis no puede resolver el nombre se deberá utilizar la IP del servidor.
El segundo parámetro es el tiempo en segundos que el cliente sugiere al servidor para ser visitado por éste cuando comprueba si el cliente sigue vivo.
Abrir el cortafuegos
Sí, ha oído bien, efectivamente es necesario abrir un hueco en el cortafuegos para que esto funcione. ¿ Por qué ? Pues porque se sigue este procedimiento:
El cliente DHIS dispone de un número único de identificación hostid, y unas claves de acceso también únicas authp|q. Funciona siempre en segundo plano e intenta, al comienzo, llegar hasta el servidor DHIS indicado en la configuración isaddr.
El servidor DHIS, por su parte, está siempre en línea a la espera de los paquetes UDP de los clientes. Cuando estos llegan y la autenticación es correcta, los da de alta en su base de datos y lleva a cabo las acciones para las que está configurado. En este caso invocar el complemento de actualización de DNS.
Mientras el cliente esté dado de alta, el servidor DHIS, a intervalos especificos de tiempo (muy corto, el valor predeterminado son 60 segundos), envía paquetes UDP al cliente para ver si sigue vivo (así que necesita tener abierto el puerto de entrada a la máquina). En caso de advertir tres de ellos sin respuesta, da de baja al cliente.
En este caso también cambia el registro de DNS mediante el complemento, pero en lugar de borrar la dirección IP la cambia a una dirección interna: 192.168.255.0.
En cualquier momento el servidor puede recibir una petición de desconexión por parte del cliente (un paquete denominado OFFLINE_REQ) y el efecto es el mismo que si pierde la comunicación, sólo que queda registrado como petición voluntaria.
Así pues, el cortafuegos debe tener abiertos tanto para entrada como para salida el puerto 58800 por UDP. Este es el puerto estándar, y es posible cambiarlo indicándolo en el archivo de configuración como:
IsAddr dhis.escomposlinux.org:66699
Arrancar el programa cliente
¿ Cuándo hacer esto ? Evidentemente cuando el cliente pueda tener acceso al servidor. :-)
No es problema tenerlo funcionando en el arranque. Es un pequeño demonio y no crea escándalo en los registros, así que la carga no es demasiada. Obviamente, se puede instruir al sistema para que lo inicie y pare usando los directorios /etc/network/ip-up.d y /etc/network/ip-down.d.
Sólo una cosa a tener en cuenta con las conexiones por PPP, y es que el envío y recepción de paquetes es contínuo, por lo que si no se indica al demonio pppd que esos paquetes no son significativos como tráfico, la conexión no se cerrará nunca por falta de uso.
Existen otros escenarios donde se puede complicar bastante la configuración. El archivo README del paquete los describe muy bien.
Comprobar el funcionamiento
Sí, este paso también es importante. En primer lugar es conveniente echarle un vistazo a los logs del sistema. El cliente suele indicar allí si está ON ú OFF.
Después se debe usar una herramienta como host para interrogar -en cualquier momento después de la puesta en marcha por el administrador del servidor- si está inscrito o no:
$ host cimitarra.dhis.escomposlinux.org
cimitarra.dhis.escomposlinux.org does not exist, try again
Esta es un buen método para saber que las cosas no van bien. Ahora intentamos preguntándole directamente al servidor de nombres, no vaya a ser que nuestra configuración no esté correcta a ese nivel:
$ host cimitarra.dhis.escomposlinux.org dhis.escomposlinux.org
cimitarra.dhis.escomposlinux.org A 192.168.255.0
Esto nos indica que sí, que estamos registrados pero no en línea; y la siguiente respuesta:
$ host cimitarra.dhis.escomposlinux.org
cimitarra.dhis.escomposlinux.org A 80.99.15.72
Nos indica que estamos funcionando correctamente y que esa es la IP con la que estamos llegando al servidor. Como no es un puerto estándar de momento (de momento) no debe verse afectada por proxy alguno. En caso de cambio de IP por alguna gracia del ISP de turno, ó de una desconexión, la actualización puede llevar uno ó dos minutos, así que es posible seguir registrado con la IP antigua durante ese periodo.
¿ Y si cambia mi IP ?
Si durante el tiempo de conexión la dirección IP del cliente cambia, por cortesía del proveedor quizás, el cliente agota el tiempo de espera indicado en el parámetro refresh y envía de nuevo la autorización al servidor.
Este, por su parte, si no puede alcanzar al cliente le da de baja, como ya hemos explicado, y espera a que exista otro intento.
En este caso, obviamente, existe un periodo de tiempo en el que la máquina no es alcanzable, porque aún está registrada en el DNS con la IP antigua, y debe esperar a que llegue la nueva, así que sí es posible que exista cierta confusión, aunque con los tiempos tan bajos de refresco en los servidores DNS ésta suele durar muy poco, un par de minutos quizás.