|
Implementación de Linklocal Multicast Name Resolution (LLMNR) |
|
El objetivo de esta práctica es desarrollar una implementación del protocolo Linklocal Multicast Name Resolution (LLMNR), que permite la resolución de nombres en escenarios en los que no es posible utilizar DNS, bien porque no existe ningún servidor o porque no es posible alcanzarlo. Escenarios de este tipo serán habituales gracias a la proliferación de dispositivos limitados y al uso de protocolos de comunicación de corto alcance, que permiten que los dispositivos formen redes sin infraestructura, denominadas redes ad-hoc. LLMNR soporta los mismos formatos, tipos y clases de registros de recurso que DNS, y los mismos paquetes, pero utiliza un puerto distinto y maneja una caché de registros de recursos distinta. En la actualidad LLMNR es un draft del grupo DNS-EXT del IETF. En esta práctica se trabajará siempre sobre la versión 36 de este draft, publicada en Septiembre de 2004. Además de las clases prácticas, se impartirá una clase teórica sobre la práctica en la que se explicarán brevemente conceptos sobre programación con sockets y el protocolo LLMNR. Esta clase teórica será el día 27 de Octubre en el aula de teoría, 2.3.B01. |
|||
|
Con esta práctica se pretende que los alumnos se enfrenten a la implementación de un protocolo de nivel de aplicación real, partiendo de su especificación original. Además se ha seleccionado LLMNR por estar relacionado con uno de los protocolos estudiados en la parte teórica de la asignatura, el protocolo DNS, de manera que se fijen los conocimientos adquiridos. La implementación de LLMNR permitirá además que los alumnos adquieran conocimientos de programación con sockets TCP, UDP y Multicast. |
|||
|
La práctica debe desarrollarse en lenguaje C sobre sistema operativo Linux y debe funcionar en los ordenadores de los laboratorios docentes de Ingeniería Telemática, donde se realizará la corrección presencial (existen dos máquinas a las que os podeis conectar de forma remota (ssh): it001.lab.it.uc3m.es a it018.lab.it.uc3m.es). La descripción detallada de LLMNR está disponible en el siguiente draft del IETF, draft-ietf-dnsext-mdns-36.txt, es la versión 36. Importante: el grupo encargado de la especificación de LLMNR es muy activo por lo que actualizan el draft constantemente, pero esta práctica siempre estará basada en la versión 36. A continuación se listan algunas consideraciones sobre el contenido del draft, que se deben tener en cuenta en la realización de la práctica:
En la práctica se utilizarán direcciones IPv4. Además cualquier consideración sobre el uso en redes IPv6 no se tendrá en cuenta. En la página 4 del draft se indica que "Typically a host is configured as both an LLMNR sender and a responder. A host MAY be configured as a sender, but not a responder. However, a host configured as a responder MUST act as a sender...". En esta práctica se debe desarrollar un solo programa que mediante opciones se pueda lanzar como solo "sender" (opción -s) o como "sender+resolver" (opción -r). En la página 4 del draft se indica que "This document does not specify how names are chosen or configured. This may occur via any mechanism, including DHCPv4 [RFC2131] or DHCPv6 [RFC3315].". En esta práctica esta configuración se realizará a través de un archivo de configuración, que se le pasará como parámetro (opción -c) en el arranque al "resolver LLMNR". El formato de este fichero será el mismo que utiliza el servidor de nombres named, cuya especificación detallada la podeis encontrar en man named.conf En la página 4 del draft se realizan una serie de consideraciones de cuándo se deben enviar peticiones de resolución de nombres a LLMNR, desde "An LLMNR sender may send a request..." hasta "[3] DNS servers respond to a DNS query with RCODE=3 (Authoritative Name Error) or RCODE=0, and an empty answer section.". En la práctica NO se debe realizar ninguna comprobación previa sobre la existencia o alcanzabilidad de un servidor DNS tradicional antes de enviar una petición LLMNR. En la página 9 del draft se dice: "[f] If a DNS server is running on a host that supports LLMNR, the DNS server MUST respond to LLMNR queries only for the RRSets relating to the host on which the server is running, but MUST NOT respond for other records for which the server is authoritative. DNS servers also MUST NOT send LLMNR queries in order to resolve DNS queries.". En la práctica NO debe tenerse en cuenta esta observación, es suficiente con realizar un servidor stand-alone. En la práctica NO es necesario tener en cuenta el contenido del apartado 2.5 del draft, desde "For IPv4, an "on link" address is defined..." hasta "then the query MUST be silently discarded. ". En la práctica NO es necesario tener en cuenta el contenido del apartado 2.6 del draft. Se utilizarán siempre los valores "RECOMMENDED" del draft. No es necesario implementar "negative caching" (especificado en la RFC2308) en los sender. Pero deben utilizarse las secciones adicionales y de autorización de los paquetes DNS tal y como se indica en esta sección. En la práctica NO es necesario tener en cuenta el contenido del apartado 3 del draft. Sólo se deben realizar tareas de comprobación sobre si los registros de recurso son únicos, cuando se arranca el resolver. Respecto a los apartados 4.1 y 4.2, en la práctica NO es necesario implementar el soporte a múltiples interfaces. La implementación de LLMNR de la práctica no tiene soportar que los mecanismos de seguridad TSIG y/o SIG(0) (ver sección 5.4.). Además deben tenerse en cuenta las siguientes consideraciones sobre parámetros de entrada y formato de salida:
IMPORTANTE El "resolver" debe ser capaz de atender varias peticiones simultaneamente Por ejemplo: llmnr -r -c llmnr.conf Por ejemplo: llmnr -s it.uc3m.es MX. El "sender" después de resolver la petición solicitada debe mostrar la respuesta con un formato similar al que proporciona el programa dig y finalizar. Si se quiere realizar más peticiones deberá ejecutarse de nuevo. |
|||
|
La evaluación de la práctica se realizará de forma presencial y su
nota tendrá un peso del 20% sobre la nota final de la asignatura. Para
que se haga media con el examen teórico debe obtenerse una nota
superior o igual a 5. La nota de práctica, siempre que esté
aprobada, se mantendrá para la convocatoria de Septiembre de 2005.
Fechas importantes
|
|||
|
Material de apoyoRFC
Libros
Información sobre sockets
|
|||
|