Prologo: diseñar una topología ideal para implementar y probar los métodos para asignar direcciones IP a los dispositivos. DHCPv6-IPv6 disponemos de un abanico de posibilidades que se adaptan a diferentes necesidades de gestión y seguridad. Ese laboratorio-10 realmente es un “tres por uno”, SLAAC (Stateless Address Autoconfiguration), Stateless (Sin estado – SLAAC + DHCPv6) y Stateful (Con estado).
Nota: Desglosa cada uno de estos métodos, explorando su funcionamiento, casos de uso, y los procesos de configuración y verificación en un entorno de red, con un enfoque práctico en la interfaz de línea de comandos (CLI) de Cisco IOS router-c7200 y uno o dos Clientes Docker para GNS3 usando el terminal de Ubuntu22.04.
Resumen de Audio:
GNS3-Laboratorio-10:
Configuración para SLAAC:
Conceptos Importantes de SLAAC:
-. SLAAC (Stateless Address Autoconfiguration) es un mecanismo fundamental en IPv6 que permite a los dispositivos configurar automáticamente una dirección-IPv6–global sin la necesidad de un servidor de gestión de estado, como DHCP. A continuación, presento los conceptos de SLAAC.
Nota: Protocolo de Descubrimiento de Vecinos (NDP – Neighbor Discovery Protocol): SLAAC se basa en mensajes ICMPv6 de NDP. Los mensajes clave son:
- Router Solicitation (RS): Un dispositivo lo envía para preguntar a los routers de la red si existen.
- Router Advertisement (RA): El router responde a un RS o envía estos mensajes periódicamente para anunciar la presencia del router, el prefijo de la red (/64), el tiempo de vida de la dirección, y si se debe usar DHCPv6 para información adicional.
-. Detección de Dirección Duplicada (DAD – Duplicate Address Detection): Antes de que un dispositivo comience a usar cualquier dirección (link-local o global), envía un mensaje de «Solicitud de Vecino» (NS) para verificar que la dirección que ha autoconfigurado no esté ya en uso por otro dispositivo en la red. Si no recibe una respuesta, asume que la dirección es única y puede comenzar a usarla.
-. Combinación de Prefijo y Identificador de Interfaz: El proceso de SLAAC para generar una dirección–IPv6 global funciona así: el router envía un mensaje RA que contiene el prefijo de la red (por ejemplo, 2001:db8:abcd:1::/64). El dispositivo toma este prefijo y le agrega su propio Identificador de Interfaz de 64 bits para formar su dirección–IPv6 completa (por ejemplo, 2001:db8:abcd:1::[Interface ID]).
Nota: Flags M y O en RA: Los mensajes de Router Advertisement (RA) tienen flags que informan a los dispositivos cómo deben autoconfigurarse:
- Flag M (Managed): Si está en 1, indica que el dispositivo debe usar DHCPv6 para obtener su dirección IPv6. SLAAC no se utiliza.
- Flag O (Other): Si está en 1, indica que el dispositivo debe usar DHCPv6 para obtener información adicional, como servidores DNS, pero aún puede usar SLAAC para autoconfigurar su dirección. Este es el modo «SLAAC con DHCPv6 sin estado».
Configuración para SLAAC:
Nota: SLAAC es una característica que está habilitada por defecto en los routers Cisco y en la mayoría de los sistemas operativos, incluyendo Ubuntu 22.04, por lo que la configuración requerirá pocos pasos.
Configuración del Router Cisco C7200:
Nota: Habilitar el enrutamiento IPv6 “Este comando es esencial para que el router pueda procesar y reenviar paquetes IPv6”.
- R1(config)#ipv6 unicast-routing
Configurar la interfaz:
Nota: En el primer comando sera interfaz física que usarás.
- R1(config)#interface FastEthernet0/0
Nota: El segundo comando asigna una dirección IPv6 a la interfaz y define el prefijo de red (/64) que es el que se utilizará para que los clientes se autoconfiguren. ::1 es la dirección del router dentro de ese prefijo.
- R1(config-if)#ipv6 address 2001:db8:acad:1::1/64
Nota: Finalmente, el comando no shutdown activa la interfaz y guardar.
- R1(config-if)#no shutdown
- R1(config-if)#end
- R1#copy running-config startup-config
Verificación: (del “servidor”Router Cisco C7200):
Nota: Este comando te permitirá verificar que la interfaz está activa, tiene la dirección IPv6 configurada y que el Neighbor Discovery Protocol (NDP) está funcionando correctamente. El router comenzará a enviar mensajes de Router Advertisement (RA) periódicamente. Estos mensajes son la base de SLAAC.
- R1#show ipv6 interface FastEthernet0/0
Nota: Verificar la tabla de vecinos. Este comando muestra la tabla de vecinos IPv6, que es similar a la tabla ARP de IPv4. Aquí puedes ver la dirección IPv6 de los clientes que se han autoconfigurado, junto con sus direcciones MAC correspondientes. Esto confirma que el router ha recibido tráfico de los clientes y ha aprendido sus direcciones.
- In: R1#show ipv6 neighbors
Nota :Mostrar la tabla de ruteo IPv6. Este comando muestra la tabla de ruteo del router. Deberías ver las rutas conectadas directamente (C) y las rutas link-local (L). Esto es útil para verificar que el router puede enrutar tráfico a la red donde los clientes están autoconfigurados.
- In: R1#show ipv6 route
Nota: Ubuntu 22.04 ya tiene SLAAC habilitado por defecto, al conectarse a una red con un router SLAAC, el cliente se autoconfigurará automáticamente. para fines de laboratorio y diagnóstico, es útil saber que las herramientas de red están instaladas y que los comandos ip a e ip -6 route son los que se deben usar para verificar el funcionamiento de SLAAC en el cliente.
Verificación del Lado del Cliente: (Contenedor Docker Ubuntu 22.04)
Nota: Verificar la dirección IPv6 autoconfigurada
- In: root@client-v6-1:/# ip -6 addr show eth0
Nota:Este es el comando clave para el cliente. La salida te mostrará todas las direcciones IPv6 asignadas a la interfaz eth0. Deberías ver al menos dos direcciones: una dirección link-local (fe80::…) y una dirección IPv6 global que comienza con el prefijo que configuraste en el router. La presencia de la dirección global es la prueba de que SLAAC ha funcionado correctamente.
Nota: Verificar la tabla de ruteo IPv6:
- In: root@client-v6-1:/# ip -6 route
GNS3-Laboratorio-10:
(stateless) DHCPv6-laboratorio:
Conceptos Importantes de DHCPv6 Stateless:
-. Stateless (Sin estado – SLAAC + DHCPv6): Este es el método que configuraremos. El cliente obtiene su dirección–IPv6 automáticamente a través de SLAAC (Stateless Address Autoconfiguration), para lo cual escucha los mensajes de Router Advertisement (RA) que envía el router. Sin embargo, el router le indica (con una bandera especial, la «O» flag) que debe buscar un servidor–DHCPv6 para obtener información adicional, como servidores–DNS y el nombre de dominio. El servidor–DHCPv6 no asigna ni lleva un registro de las direcciones–IPv6.
Nota: para una configuración de DHCPv6 stateless (sin estado) en un entorno GNS3, utilizamos, un servidor Cisco c7200 corriendo IOS y dos cliente ubuntu:22.04: Utiliza la versión más reciente de Ubuntu LTS (Long-Term Support) como base. Es un sistema operativo estable y ampliamente usado. Esta configuración permite que el cliente obtenga información como DNS, dominio, etc. vía DHCPv6, pero la dirección IPv6 la asigna el router mediante SLAAC (Router Advertisement). Esto es característico de DHCPv6 stateless.
Nota: El router enviará RA (Router Advertisement) con el bit O (Other Configuration) en 1 y el bit M (Managed) en 0. El router actuará también como servidor DHCPv6, entregando información complementaria como DNS y dominio.
Configuración para DHCPv6 (stateless)
Habilitar enrutamiento IPv6: (servidor Cisco c7200)
Nota: Esto es fundamental para que el router pueda procesar y reenviar paquetes IPv6. (Habilitar routing IPv6)
- R1(config)#ipv6 unicast-routing
Crear el Pool de DHCPv6:
Nota: Este «pool» no contendrá direcciones, solo la información adicional que queremos entregar a los clientes.
Nota: Crea un pool de DHCPv6 con un nombre descriptivo. (DNS solamente)
- R1(config)#ipv6 dhcp pool DNS_POOL
Nota: Asigna el servidor DNS que recibirán los clientes. Servidor DNS (Google)
- R1(config-dhcpv6)#dns-server 2001:4860:4860::8888
Nota: Asigna el nombre de dominio. (Opcional: nombre de dominio)
- R1(config-dhcpv6)#domain-name ejemplo.com
Nota: En stateless NO se definen rangos de direcciones.
- R1(config-dhcpv6)#exit
- R1(config)#
Configurar la Interfaz de Red:
Nota: Esta es la parte más importante configuraremos la interfaz que se conecta a la red local FastEthernet0/0.
Nota: Entra en el modo de configuración de la interfaz.
- R1(config)#interface FastEthernet0/0
Nota: Asigna una dirección IPv6 a la interfaz del router. (según diagrama)
- R1(config-if)#ipv6 address 2001:db8:1::1/64
Nota: Habilita IPv6 en la interfaz para que genere su dirección Link-Local.
- R1(config-if)#ipv6 enable
Nota: La clave del modo Stateless: (Flags para DHCPv6 Stateless)
Activa la bandera «Other configuration» (O=1) en los Router Advertisements. Esto le dice al cliente: «Usa SLAAC para tu IP, pero pídeme el resto de datos».
- R1(config-if)#ipv6 nd other-config-flag
Nota: Vincular pool DHCP (Asigna el pool a la interfaz)
- R1(config-if)#ipv6 dhcp server DNS_POOL
Nota: Levanta la interfaz.
- R1(config-if)#no shutdown
- R1(config-if)#end
- R1#
Nota: Guarda la configuración.
- R1#copy running-config startup-config
Verificar el Servidor DNS: (servidor Cisco c7200)
Nota: Mostrar configuraciones DHCPv6.
- In: R1#show ipv6 dhcp pool
Nota: Verificar parámetros ND en la interfaz.
- R1#show ipv6 interface FastEthernet0/0
Verificar la Dirección IPv6:(Ubuntu-cliente)
- Una que empieza con fe80:: (la dirección Link-Local).
- Una que empieza con 2001:db8:cafe:1:… (la dirección global autoconfigurada por SLAAC).
- In: root@client-v6-1:/# ip a show eth0
Configuración del cliente en GNS3 para DHCPv6 (Stateless)
Usando dhcpcd (el más recomendado para IPv6 stateless):
- In: root@client-v6-1:/# dhcpcd -6 eth0
Usando dhclient:
- In: root@client-v6-1:/#dhclient -6 -r eth0 # Detiene cualquier proceso dhclient anterior
- In: root@client-v6-1:/#dhclient -6 eth0 # Inicia un nuevo proceso
Nota: Alternativa más moderna (netplan): En Ubuntu 22.04, netplan es la forma recomendada de configurar interfaces permanentemente. Crea un archivo llamado start_services.sh en el mismo directorio que tu Dockerfile con el contenido que deseamos.
GNS3-Laboratorio-10:
(Stateful) DHCPv6-laboratorio:
-. Stateful (Con estado): En este modo, el servidor-DHCPv6 asigna y gestiona activamente las direcciones–IPv6 de los clientes, de forma similar a como lo hace DHCP para IPv4. El router le indica al cliente (con la «M» flag) que obtenga toda su configuración, incluida la dirección, de un servidor–DHCPv6.
-. Esta configuración te proporciona un entorno laboratorio completo de DHCPv6 stateful en GNS3. El Router–Cisco c7200 actuará como Servidor-DHCPv6 y el Cliente-Ubuntu 18.04 obtendrá automáticamente su configuración IPv6.
Nota: Para realizar una configuración completa y funcional de DHCPv6 en modo stateful en GNS3, utilizando:
- Servidor DHCPv6: El router Cisco c7200 está configurado con un pool que asigna direcciones del rango 2001:db8:1::/64 con servidores–DNS y dominio.
- Cliente Ubuntu: Imagen Docker personaliza para Cliente–DHCPv6 diseñado específicamente como un cliente de laboratorio–GNS3 para practicar de DHCPv6–Stateful. Interactuar con: configuración, comandos, verificación y detalles relevantes para ambos extremos (cliente y servidor).
Configuración del Servidor DHCPv6 (Cisco c7200):
Activar IPv6:
Nota: Entra al modo de configuración global y habilita IPv6.
- R1# configure terminal
- R1(config)# ipv6 unicast-routing
Configurar la interfaz:
Nota: Asignar una dirección IPv6 a la interfaz conectada al cliente.
- R1(config)# interface FastEthernet0/0
- R1(config-if)# ipv6 address 2001:db8:1::1/64
- R1(config-if)# no shutdown
Crear el pool DHCPv6 stateful:
Nota: Este pool asignará direcciones y otros parámetros (DNS, dominio) de forma stateful.
- R1(config)# ipv6 dhcp pool DHCPv6-STATEFUL
- R1(config-dhcpv6)# address prefix 2001:db8:1::/64
- R1(config-dhcpv6)# dns-server 2001:4860:4860::8888
- R1(config-dhcpv6)# domain-name ejemplo.local
- Enlazar el pool a la interfaz:
Nota: La directiva managed-config-flag le indica al cliente que debe utilizar DHCPv6 stateful.
- R1(config)# interface FastEthernet0/0
- R1(config-if)# ipv6 dhcp server DHCPv6-STATEFUL
- R1(config-if)# ipv6 nd managed-config-flag
- R1#copy running-config startup-config
Comprobación de su funcionalidad
Verificar dirección IPv6 asignada:
- In: root@client-v6-1:/# ip -6 addr show eth0
Configuración del Pool DHCPv6:
- In: R1#show ipv6 dhcp pool
Configuración del cliente en GNS3:
Nota: Para que el cliente Docker obtenga una dirección del servidor DHCPv6 en un laboratorio GNS3, una vez que el contenedor esté en ejecución, se debe ejecutar un comando para solicitar una dirección. Puedes hacerlo manualmente o agregar un script al contenedor que lo haga al inicio. Comandos del cliente (en el shell del contenedor):
Verificar la interfaz de red:
- In: root@client-v6-2:/# ip a
Ejecutar el cliente DHCPv6: (Si usas isc-dhcp-client)
- In: root@client-v6-2:/# dhclient -6 -v eth0
Ejecutar el cliente DHCPv6: (Si usas dhcpcd)
- In: root@client-v6-2:/# dhcpcd -6 eth0
Nota: Alternativa más moderna (netplan): En Ubuntu 22.04, netplan es la forma recomendada de configurar interfaces. Podrías crear un archivo de configuración en /etc/netplan/ para solicitar una dirección DHCPv6 automáticamente, lo cual sería más acorde a un entorno de producción.
Resumiendo: En resumen, las configuraciones que proporcionaste son correctas para el propósito de un laboratorio de GNS3. La configuración del servidor está perfectamente alineada con los conceptos de DHCPv6 stateful, y el Dockerfile del cliente es una base sólida para crear un cliente de pruebas.
Recopilando:
-. Veamos los puntos mas importantes de este post:
- Los métodos para asignar direcciones IP en IPv6 incluyen SLAAC (Stateless Address Autoconfiguration), Stateless (SLAAC + DHCPv6) y Stateful (DHCPv6), cada uno diseñado para satisfacer diferentes necesidades de gestión y seguridad en la red.
- SLAAC es un mecanismo fundamental que permite a los dispositivos configurar automáticamente una dirección IPv6 global sin la necesidad de un servidor de gestión de estado, basándose en mensajes ICMPv6 del Protocolo de Descubrimiento de Vecinos (NDP) como Router Advertisement (RA).
- Mediante SLAAC, un dispositivo autoconfigura su dirección IPv6 global tomando el prefijo de red (/64) anunciado por el router en un mensaje RA y agregándole su propio Identificador de Interfaz de 64 bits, además de realizar una Detección de Dirección Duplicada (DAD) para asegurar la unicidad.
- Los mensajes Router Advertisement (RA) incluyen flags M (Managed) y O (Other) que informan a los dispositivos cómo deben autoconfigurarse: el Flag M en 1 indica que DHCPv6 es necesario para la dirección IP, mientras que el Flag O en 1 indica que DHCPv6 es para información adicional, permitiendo aún el uso de SLAAC para la dirección.
- La configuración de SLAAC en un router Cisco C7200 requiere habilitar el enrutamiento IPv6 y asignar una dirección IPv6 con un prefijo /64 a la interfaz, siendo SLAAC una característica que generalmente está habilitada por defecto en la mayoría de los sistemas operativos, incluyendo Ubuntu.
- El modo Stateless (Sin estado) es una combinación en la que el cliente obtiene su dirección IPv6 automáticamente a través de SLAAC, pero se le indica (mediante la «O» flag en los RA) que debe buscar un servidor DHCPv6 para obtener información adicional como servidores DNS y el nombre de dominio, sin que el servidor DHCPv6 gestione direcciones IP.
- Para configurar DHCPv6 Stateless, el router Cisco envía mensajes RA con el bit O (Other Configuration) en 1 y el bit M (Managed) en 0, y se crea un pool DHCPv6 que no contiene direcciones, sino solo la información adicional que se desea entregar a los clientes.
- En el modo Stateful (Con estado), el servidor DHCPv6 es el responsable de asignar y gestionar activamente las direcciones IPv6 de los clientes, de manera similar a como lo hace DHCP para IPv4.
- Para la configuración Stateful, el router indica al cliente (con la «M» flag en 1 en los RA) que debe obtener toda su configuración, incluida la dirección IPv6, de un servidor DHCPv6, y el pool DHCPv6 en el router debe definir rangos de direcciones para asignar.
- La verificación en el lado del cliente (como un contenedor Docker Ubuntu 22.04) para cualquiera de estos métodos se realiza típicamente usando comandos como ip -6 addr show eth0 para confirmar la dirección IPv6 autoconfigurada y cat /etc/resolv.conf para verificar la información de DNS obtenida.
- Referencias: moreluz.entorno
- Referencias: Cisco
- Referencias: NotebookLM