DIDACTIFICACION DE IPv6 3. CONFIGURACIÓN AVANZADA 3.1. ICMPv6 Introducción a IPv6 3. CONFIGURACIÓN AVANZADA 3.1. ICMPv6 • • • • • Todo el mundo conoce el comando ping y su uso para comprobar si hay conectividad entre dos equipos. No suele ser tan familiar el protocolo que está detrás del ping: ICMP (Internet Control Message Protocol). Este protocolo, ya en su versión de IPv4, proporciona información importante sobre la salud de la red por medio de mensajes. En IPv6 se utiliza ICMPv6. Esta versión es incompatible con la anterior. ICMPv6 es mucho más potente, ya que integra funcionalidades que se lograban en ICMPv4 usando otros protocolos. Por ejemplo: • IGMP (Internet Group Management Protocol) para gestión de miembros de los grupos multicast. • ARP/RARP (Address Resolution Protocol / Reverse ARP) para mapear direcciones MAC con direcciones IP y viceversa. Introducción a IPv6 3. CONFIGURACIÓN AVANZADA 3.1. ICMPv6 • • • Se ha añadido la función Neighbor Discovery, para descubrir las dirs. de los host vecinos (conectados en el mismo enlace), routers, etc. El número de mensajes disponibles es mayor en ICMPv6 que en ICMP (de ahí también la incompatibilidad). A continuación se analizará la estructura de los mensajes y el contenido de algunos de los más utilizados. Después se analizarán las nuevas prestaciones ofrecidas por ICMPv6, como el Neighbor Discovery, la Autoconfiguración y otras. Introducción a IPv6 3. CONFIGURACIÓN AVANZADA 3.1. ICMPv6 Los puntos que se tratan en este apartado son los siguientes: 3.1.1. Los mensajes 3.1.2. Neighbor Discovery 3.1.3. Otras posibilidades de ICMPv6 Introducción a IPv6 3.1. ICMPv6 3.1.1. Los mensajes • ICMPv6 define mensajes de error que permiten a los nodos de la red informar de problemas. • Los mensajes van del nodo que detecta el problema al nodo origen del paquete problemático. • Por ej., si un router no puede enviar un paquete por ser demasiado largo, enviará un mensaje ICMP al host de origen indicándoselo. • Mensajes como "Echo Request" y "Echo Reply" permiten valorar el estado de la red. Se usan en el comando ping (o ping6). Introducción a IPv6 3.1. ICMPv6 3.1.1. Los mensajes – (a) Formato de los mensajes • Las cabeceras ICMPv6 se identifican por un Next Header = 58. • Respecto a los mensajes de ICMPv6, dos tipos: • De error. • Informativos. • El formato → Introducción a IPv6 3.1. ICMPv6 3.1.1. Los mensajes – (a) Formato de los mensajes • Campo TIPO, el bit de mayor peso determina el tipo del mensaje. • Mensajes de error empiezan por 0 (de 0 a 127) • Mensajes informativos, por 1 (128 y 255) • Todos los códigos asociados a los mensajes se puede encontrar en esta dirección de la IANA. • Campo de CÓDIGO, se utiliza con mensajes de error. Entre los mensajes informativos, el único que lo utiliza es el 138 (Router Renumbering). Introducción a IPv6 3.1. ICMPv6 3.1.1. Los mensajes – (a) Formato de los mensajes • Posibles valores del campo de CÓDIGO: • 0 → No hay ruta hasta el destino. • 1 → Destino no alcanzable. • 3 → Dirección inalcanzable. • 4 → Puerto inalcanzable. • El campo CHECKSUM para detección de errores. • El campo CUERPO varía en función del tipo y código del mensaje. Se suele usar para devolver una copia del paquete problemático. Introducción a IPv6 3.1. ICMPv6 3.1.1. Los mensajes – (b) Mensajes de error • DESTINO INALCANZABLE → TIPO = 1 • Destination Unreachable. • Este mensaje se genera cuando no es posible entregar un datagrama IP. • El CÓDIGO indica el motivo por el que no se ha podido hacer la entrega. • Después del Checksum, se dejan 4 bytes a cero y después se copia el mensaje original (en el CUERPO). • Si destino inalcanzable por congestión, no se generan mensajes ICMP. Introducción a IPv6 3.1. ICMPv6 3.1.1. Los mensajes – (b) Mensajes de error • PAQUETE DEMASIADO GRANDE → TIPO = 2 • Packet To Big • MTU = “Maximum Transmission Unit” = tamaño del paquete más grande que puede manejar un enlace. • Si un router no pueda enviar un paquete porque es más grande que el MTU permitido por el enlace, genera un mensaje “Packet To Big” que será enviado al origen. • En este caso TIPO = 2 y CODIGO = 0. • En el CUERPO, los 4 primeros bytes indican el MTU válido. Introducción a IPv6 3.1. ICMPv6 3.1.1. Los mensajes – (b) Mensajes de error • TIEMPO AGOTADO → TIPO = 3 • Time Exceeded (mensaje utilizado por Traceroute). • Cuando un router envía un paquete, decrementa su “HOP LIMIT” en 1. • Se evita que un paquete pueda viajar indefinidamente. • Si un router recibe un paquete con “hop limit” = 1 y lo decrementa poniéndolo a 0, descartará el paquete y enviará un “Time Exceeded” al host origen. • “CÓDIGO” = 0. En el “CUERPO”, el mensaje original. • Error indicativo de bucle en el enrutado o de “hop limit” demasiado bajo. Introducción a IPv6 3.1. ICMPv6 3.1.1. Los mensajes – (b) Mensajes de error • PROBLEMA CON PARAMETROS → TIPO = 4 • Parameter Problem. • Un nodo IPv6 con problemas para procesar un paquete por no poder identificar un campo en la cabecera IPv6 o en una cabecera de Extensión, descartará el paquete y devolverá el mensaje “Parameter Problem”. • Este es el mensaje utilizado cuando el error que se produce no se ajusta a ninguno de los anteriores. • En el CUERPO, los 4 primeros bytes actúan como puntero, señalando el punto del paquete donde se ha detectado la irregularidad. También se envía de vuelta la mayor porción posible del paquete original. Introducción a IPv6 3.1. ICMPv6 3.1.1. Los mensajes – (c) Mensajes informativos • La RFC 4443 define “Solicitud de eco” (Echo Request) y “Respuesta de eco” (Echo Reply). • En las RFC 4861 y 1981 se definen mensajes “Path MTU Discovery” y “Neighbor Discovery”. • Los primeros se utilizan en el famoso “ping”. • Se usa para determinar si un host está disponible. • El host origen pone en circulación un mensaje “Echo Request” dirigido al destino. • El host destino, si está disponible, responde con un mensaje “Echo Reply”. Introducción a IPv6 3.1. ICMPv6 3.1.1. Los mensajes – (c) Mensajes informativos • El formato de estos mensajes es el siguiente: Introducción a IPv6 3.1. ICMPv6 3.1.1. Los mensajes – (c) Mensajes informativos • MENSAJE DE SOLICITUD DE ECO • Echo Request Message. TIPO = 128. • En el “CUERPO”, “Identificador” y “Número de secuencia”que se usan para emparejar las solicitudes con las respuestas. La respuesta debe contener siempre los mismos números que la solicitud. • El que se utilice un identificador y un número de secuencia y el tipo de datos arbitrarios que se incluyen en la solicitud depende de la pila TCP/IP que se esté utilizando. Introducción a IPv6 3.1. ICMPv6 3.1.1. Los mensajes – (c) Mensajes informativos • MENSAJE DE RESPUESTA DE ECO • Echo Reply message. TIPO = 129 • Como se indica en la figura, los valores del Identificador y del Número de Secuencia coinciden con los recibidos en la solicitud del eco. • Los mensajes de solicitud y respuesta de eco ICMPv6 se pueden autenticar por medio de una cabecera de autenticación IPv6. Esto es, se puede configurar un nodo para ignorar aquellos pings ICMPv6 que no estén autenticados y conseguir así protección contra distintos ataques ICMPv6. Introducción a IPv6 3.1. ICMPv6 3.1.1. Los mensajes – (d) Captura de mensajes • Lo explicado hasta aquí se puede puede ver con una simple captura de paquetes en un sniffer. • En la siguiente imagen se ve la captura, con Wireshark, de un ping6 lanzado desde un portatil con GNU/Linux UBUNTU a un switch IPv6 al que está conectado. • El comando ejecutado es: ping6 -I eth0 -c 1 FE80::221:91FF:FEAA:BE00 • Se usa la interfaz eth0, se envía un ping y la dirección es la del switch IPv6. Introducción a IPv6 3.1. ICMPv6 3.1.1. Los mensajes – (d) Captura de mensajes Introducción a IPv6 3.1. ICMPv6 3.1.1. Los mensajes – (d) Captura de mensajes • En la cabecera IPv6, “Next Header” = 0x3a = 58. Éste es el valor asignado a ICMPv6. • Las direcciones de origen y destino, son del tipo “de enlace local”, porque empiezan por 0xFE80. • Ya en la cabecera ICMPv6, “Type = 128”, que es el código del mensaje “Echo Request”. • El ID (= Identificador) es 0x2c20 y el número de secuencia es 0x0001 • Después van los 54 bytes de datos arbitrarios. En Windows se usan las letras de la “a” a la “w”. Introducción a IPv6 3.1. ICMPv6 3.1.1. Los mensajes – (d) Captura de mensajes • En la siguiente imagen se ve la respuesta. • La cabecera IPv6 mantiene el “Next Header” = 0x3a = 58 correspondiente a ICMPv6. • Se han intercambiado las dirs de origen y destino • En la cabecera ICMPv6, el Type = 129 indica que es la respuesta de eco (Echo Reply). • Los campos ID, Secuence y Data son una copia de los enviados en la Solicitud de Eco. Introducción a IPv6 3.1. ICMPv6 3.1.1. Los mensajes – (d) Captura de mensajes Introducción a IPv6 3.1. ICMPv6 3.1.2. Neighbor Discovery (ND) = Descubrimiento de Vecinos • La RFC 4861 sustituye a la RFC 2461. • Usos del Neighbor Discovery Protocol (NDP): • Neighbor Discovery (ND) = el descubrimiento en sí. • Autoconfiguración de direcciones IPv6. • Determinación de prefijos de red, rutas... • Detección de IPs duplicadas (DAD = Duplicate Address Detection) • Búsqueda de MACs de vecinos y detección de cambios • Router Discovery (RD) = Búsqueda de routers vecinos. • Control de vecinos disponibles (NUD = Neighbor Unreachability Detection). Introducción a IPv6 3.1. ICMPv6 3.1.2. Neighbor Discovery (ND) = Descubrimiento de Vecinos • El protocolo ND consta de 5 mensajes ICMP que serán tratados en las siguientes secciones: • Router Solicitation. • Router Advertisement. • Neighbor Solicitation. • Neighbor Advertisement. • ICMP Redirect. Introducción a IPv6 3.1. ICMPv6 3.1.2. ND – (a) Router Solicitation y Router Advertisement • Es decir, "Solicitud de Router" y "Anuncio de Router". • Los routers envían regularmente mensajes del tipo "RA" para anunciar su presencia. • Los hosts pueden solicitar mensajes de RA con mensajes de Router Solicitation. • El router que lo recibe responde inmediatamente con un RA, aunque no le tocara enviarlo todavía. • La dir. destino en la cabecera IP del mensaje RS es la dirección multicast all-routers (FF02::2). Introducción a IPv6 3.1. ICMPv6 3.1.2. ND – (a) Router Solicitation y Router Advertisement • Ya en el mensaje, Tipo = 133. • En Opciones se envía la MAC del solicitante si su IP es conocida. • Si la Dir. Origen de la cabecera IP es la dir. All-zeros, no se usa el campo Opciones. Introducción a IPv6 3.1. ICMPv6 3.1.2. ND – (a) Router Solicitation y Router Advertisement • En cuanto al RA, su formato es → • Con “Current Hop Limit” se da info. para configurar nodos. • Flag M = 1 indica que el DHCPv6 está disponible. Introducción a IPv6 3.1. ICMPv6 3.1.2. ND – (b) Neighbor Solicitation y Neighbor Advertisement • “Solicitud de Vecinos" y "Anuncio de Vecinos". • Estos dos mensajes tienen varios usos: • La resolución de dirs. MAC (como el ARP en IPv4) • Para resolución de MAC se usa como dirección destino la “dirección multicast de nodo solicitado”. • La autoconfiguración Stateless (dir.origen All-zeros). • El mecanismo de detección de vecinos no alcanzables (Neighbor Unreachability Detection = NUD). • Para verificar la disponibilidad de un vecino (la dirección de destino será una unicast). • DAD (Duplicate IP Address Detection). Introducción a IPv6 3.1. ICMPv6 3.1.2. ND – (b) Neighbor Solicitation y Neighbor Advertisement • El formato del Neighbor Solicitation es el sgte: Introducción a IPv6 3.1. ICMPv6 3.1.2. ND – (b) Neighbor Solicitation y Neighbor Advertisement • El formato del Neighbor Solicitation es el sgte: Introducción a IPv6 3.1. ICMPv6 3.1.2. ND – (b) Neighbor Solicitation y Neighbor Advertisement • Este paquete puede ir dirigido a una dir. IP concreta si se trata de una respuesta a un NS. • Si el mensaje es la respuesta a un mensaje DAD (Duplicate IP Address Detection) originado desde un host desconocido, la respuesta irá dirigida a la dirección multicast “all-nodes” FF02::1. • “Router flag” = 1, indica equipo origen = router. • “Solicited flag” = 1 indica mensaje respuesta a NS • “Flag de Override” = 1 indica que se envía inform. para anular/actualizar la Neighbor Cache. Introducción a IPv6 3.1. ICMPv6 3.1.2. ND – (b) Neighbor Solicitation y Neighbor Advertisement • En anuncios solicitados, la “Dirección Objetivo” (Target Address) contiene la dirección de la interfaz que envía la solicitud. • En los anuncios no solicitados, este campo contiene la dirección de la interfaz cuya dirección de la capa de enlace ha cambiado. • Una posible opción para el campo de Opciones es la dirección destino de la capa de enlace. Introducción a IPv6 3.1. ICMPv6 3.1.2. ND – (c) Otros usos del Protocolo Neighbor Discovery El mensaje de Redirección ICMP • Son los mensajes de Tipo = 137 • Los lanzan los routers informando a un nodo de cuál es el mejor “1er salto” para llegar a un destino determinado. • También puede informar a un nodo de que el destino solicitado no es un nodo de otra subred si no un vecino. Resolución de direcciones de capa de enlace • Equivale al ARP de IPv4. • Se usa solo con nodos vecinos, enviando un mensaje NS a la dir. multicast de “nodo solicitado” del vecino. • Si dicho equipo es alcanzable, responderá con un NA. Introducción a IPv6 3.1. ICMPv6 3.1.2. ND – (c) Otros usos del Protocolo Neighbor Discovery Inverse Neighbor Discovery (IND) (RFC 3122) • Esto es, Descubrimiento Inverso de Vecinos. • IND es el equivalente al RARP (Reverse ARP) de IPv4. • IND utiliza dos tipos de mensajes: • IND Solicitation (Tipo = 141), que es enviado por el equipo que quiere hacer la resolución a la dirección multicast all-nodes (FF02::1). • IND Advertisement (Tipo = 142), que es enviado por el equipo objetivo y que contiene las direcciones de dicho equipo. Introducción a IPv6 3.1. ICMPv6 3.1.2. ND – (c) Otros usos del Protocolo Neighbor Discovery Neighbor Unreachability Detection (NUD) (1/3) • “Detección de disponibilidad de vecino” • Para considerar que un equipo está al alcance debe haber alguna prueba de que la comunicación es posible. • Por ejemplo, si su capa IP está recibiendo los paquetes que se le envían. • Si se recibe un NA como respuesta a un NS. • Si se están recibiendo ACKs de TCP. • Para llevar el control de las conexiones activas y alcanzables, ND usa dos tablas: la caché de vecinos o Neighbor Cache y la de destino o Destination Cache. Introducción a IPv6 3.1. ICMPv6 3.1.2. ND – (c) Otros usos del Protocolo Neighbor Discovery Neighbor Unreachability Detection (NUD) (2/3) • Neighbor Cache • Es como la Caché ARP de IPv4. • Contiene información de los vecinos con los que se ha intercambiado tráfico recientemente. • Se guarda la IP unicast, su MAC y un flag que indica si el vecino es un router o un host. • Además tambíen indica si hay algún paquete en espera para ser enviado, si el destino está al alcance y cuando se producirá la siguiente comprobación NUD. Introducción a IPv6 3.1. ICMPv6 3.1.2. ND – (c) Otros usos del Protocolo Neighbor Discovery Neighbor Unreachability Detection (NUD) (3/3) • Destination Cache • Contiene exactamente la misma información que la Neighbor Cache más la información de los destinos remotos. Es decir, la Neighbor Cache es una parte de la Destination Cache. • Para los destinos remotos, la entrada de la caché contiene la MAC del siguiente router al que saltar. • Esta caché se actualiza con los mensajes de Redirección de ICMPv6. Introducción a IPv6 3.1. ICMPv6 3.1.3. Otras posibilidades de ICMPv6 Autoconfiguración (1/3) • Esta capacidad va a ser una de las características clave de IPv6, ahorrando mucho trabajo a los administradores. • Permite que cualquier dispositivo pueda conseguir una IP sin necesidad de tener que ser configurado manualmente. • Hay dos tipos de autoconfiguración: la stateless y la DHCPv6 (antes llamada “stateful”). • Para generar su IP, los hosts combinan información local, su dirección MAC, e información recibida de los routers. • Los routers pueden anunciar múltiples prefijos, y los hosts extraen la información del prefijo de esos anuncios. Introducción a IPv6 3.1. ICMPv6 3.1.3. Otras posibilidades de ICMPv6 Autoconfiguración (2/3) • Para la renumeración sencilla de un sitio completo solo hay que cambiar la información del prefijo en el router. • Si no hay routers, cada host se genera una dirección de enlace local (link-local address) con el prefijo FE80. • Esta es como la dirección de la red 169.254.0.0/16 que se tomaba en IPv4 cuando el servidor DHCP no estaba listo. • La gran diferencia en IPv6: ahora, esa dirección FE80... es suficiente para comunicar todos los nodos del enlace. • Stateless y DHCPv6 también se pueden combinar. Un host puede usar stateless para generar una dir. IPv6 y después DHCPv6 para conseguir los demás parámetros. Introducción a IPv6 3.1. ICMPv6 3.1.3. Otras posibilidades de ICMPv6 Autoconfiguración (3/3) • Las dirs. IPv6 se asignan a los nodos de forma temporal. • La dirección es válida durante un tiempo (lifetime). • Una dirección IPv6 pasa por los siguientes estados: • Tentativa: justo antes de ser asignada, cuando se está aplicando DAD para garantizar que no está en uso. • Preferida: estado de la dirección finalmente asignada. • Obsoleta (deprecated): es el estado de la dirección cuyo “lifetime” está a punto de expirar. • Válida: direcciones activas (la preferida y la obsoleta). • Inválida: dirección cuyo “lifetime” ha expirado y deja de estar vinculada a la interfaz del host. Introducción a IPv6 3.1. ICMPv6 3.1.3. Otras posibilidades de ICMPv6 Renumeración de red • RFC 4192 "Procedures for Renumbering an IPv6 Network without a Flag Day". • El "Flag Day" (Día de la Bandera) es el día clave en el que se va a interrumpir el funcionamiento de la red para realizar una tarea de mantenimiento programada. • Esto es lo que ocurre cuando hay que realizar un cambio en el prefijo de la red, por ej., debido a un cambio de ISP. • ICMPv6 permite enviar mensajes para informar del nuevo prefijo a utilizar, manteniendo activo el antiguo. • Una vez todos los equipos están enterados del nuevo prefijo se "desactiva" el anterior. Introducción a IPv6 3.1. ICMPv6 3.1.3. Otras posibilidades de ICMPv6 Path MTU Discovery • En IPv4, los routers pueden fragmentar los paquetes que son demasiado grandes. • En IPv6 los routers no fragmentan paquetes, dejan esta tarea en manos del host de origen. • Hay que conocer cuál es el menor MTU de todo el path. • Esta información la da “Path MTU Discovery” de ICMPv6. • El tamaño mínimo de MTU en IPv6 es de 1280 bytes. • Dado que la ruta no es fija, el “Path MTU” puede cambiar. • En multicast se usa el MTU más pequeño de los que hay en los caminos a lo múltiples destinos. Introducción a IPv6 3.1. ICMPv6 3.1.3. Otras posibilidades de ICMPv6 Multicast Listener Discovery (MLD)( 1/4) • A veces interesa enviar paquetes a un grupo de hosts. • El broadcast no es la opción adecuada, porque no se puede enrutar (alcance limitado al enlace local). Además obliga a todos los nodos del enlace a procesar la info. • Multicast posibilita el envío simultáneo de paquetes a un grupo de hosts configurados con una dirección multicast de grupo (clase D). Solo procesan los miembros del grupo • Los mensajes multicast son enrutables y se usa IGMP (Internet Group Management Protocol) para asegurar que el mensaje solo se propaga a enlaces con miembros del grupo multicast. Introducción a IPv6 3.1. ICMPv6 3.1.3. Otras posibilidades de ICMPv6 Multicast Listener Discovery (MLD)( 2/4) • En IPv6, multicast está disponible en todos los nodos. • La 2ª versión deIGMP (IGMPv2) se implementa en IPv6 mediante mensajes ICMPv6. • Esto es lo que se llama Multicast Listener Discovery (MLD) • La segunda versión(MLDv2) se basa en IGMPv3 de IPv4. • Se diferencia por soportar SSM=Source Specific Multicast • Un nodo puede elegir escuchar solo el multicast de una dirección concreta, o de todas las fuentes excepto de una. • Esto no es posible en MLDv1, donde se utiliza ASM (Any Source Multicast) en lugar de SSM. Introducción a IPv6 3.1. ICMPv6 3.1.3. Otras posibilidades de ICMPv6 Multicast Listener Discovery (MLD)( 3/4) • MLD permite a los oyentes multicast registrar las direcciones multicast que quieren utilizar. • Los routers usan MLD para descubrir qué dirs. multicast tienen oyentes en los links a los que están conectados. • El router mantiene una lista de dirs. con oyentes para cada enlace, sin controlar los oyentes activos que hay. • Mientras haya algún miembro del grupo en el enlace, la dirección se mantiene. • El oyente envía un mensaje al router y éste incluye la dirección multicast es su lista de control. Introducción a IPv6 3.1. ICMPv6 3.1.3. Otras posibilidades de ICMPv6 Multicast Listener Discovery (MLD)( 4/4) • Del mismo modo, un oyente puede darse de baja de un grupo por medio de un mensaje. • Si el último oyente de un grupo se da de baja, el router elimina la dirección de ese link de su lista de control. • En todos los mensajes MLD se usan direcciones de enlace local como origen y el “hop limit” = 1. Así se limita el alcance al enlace local. • También se usa la opción “Hop By Hop” y se activa el flag Router Alert garantizando que el paquete será procesado por el router aunque no sea miembro del grupo multicast. Introducción a IPv6 3.1. ICMPv6 3.1.3. Otras posibilidades de ICMPv6 Multicast Router Discovery (MRD) • Mecanismo basado en paquetes ICMPv6 para descubrir routers capaces de propagar tráfico multicast. • Consta de tres mensajes, dos de los cuales, Multicast Router Advertisement (Tipo = 151) y Multicast Router Termination (Tipo = 153) permiten al router anunciar la activación / desactivación de la difusión multicast. • El tercer mensaje, Multicast Router Solicitation (Tipo = 152), permite que cualquier host pueda preguntar a todos los routers (FF02::2) si alguno trabaja con multicast. • Al igual que en MLD, todos estos mensajes se envían con “Hop Limit” = 1 y con la opción “Router Alert” activa.