IPv6
Contenido complementario
Este tema no está en las notas de tus cursos que tengo (la lección de IPv6 de PCNSE está pendiente de ver); está completado con conocimiento general de PAN-OS. Compáralo con lo que veas en la lección y corrígelo si difiere.
Resumen
IPv6 es la versión moderna del protocolo IP, con direcciones de 128 bits (por ejemplo
2001:db8:10::15/64) en lugar de los 32 de IPv4. El firewall puede trabajar con IPv6 igual que con IPv4: interfaces con direcciones IPv6, zonas, rutas, Security Policy y NAT. Pero hay diferencias importantes: IPv6 no usa ARP (usa Neighbor Discovery, ND), los equipos pueden obtener su dirección sin DHCP mediante Router Advertisements (RA) y la configuración es independiente de IPv4 (se activa por separado en cada interfaz y en el Virtual Router).
En PAN-OS, IPv6 se habilita de forma global (Enable IPv6 Firewalling), y luego se asigna una dirección IPv6 a cada interfaz Layer 3, se crean rutas IPv6, y se reutilizan las mismas zonas y reglas de seguridad (con direcciones IPv6 en los objetos). También existe NPTv6, una traducción 1 a 1 de prefijos (no es NAT con puertos como en IPv4). Esta nota cubre la activación, direcciones en la interfaz, Router Advertisement, rutas, reglas y la verificación.
Requisitos previos
- Un plan de direccionamiento IPv6 (prefijo asignado por el proveedor o prefijo ULA/documentación para laboratorio, por ejemplo
2001:db8::/32) - Interfaces Layer 3 funcionando en IPv4 o al menos con Virtual Router y zona asignados (ver L3 Interfaces, Subinterfaces y DHCP)
- Un Virtual Router para las rutas IPv6 (ver Static Routing y Path Monitoring)
- Equipos o routers vecinos con IPv6 habilitado
- Interface Management Profile que permita Ping (solo para responder a echo ICMP/ICMPv6; Neighbor Discovery se controla con la Security Policy)
- Conocer que ICMPv6 es esencial en IPv6 (descubrimiento de vecinos, MTU): no lo bloquees en bloque
Conceptos clave
| Concepto | Qué es |
|---|---|
| Dirección global (GUA) | Dirección pública enrutable (por ejemplo 2001:...) |
Link-local (fe80::/10) | Dirección automática válida solo en el enlace local; se usa en ND y como next hop |
ULA (fc00::/7) | Direcciones privadas, equivalentes a RFC1918 |
| Neighbor Discovery (ND) | Reemplaza a ARP: resuelve la MAC de un vecino y detecta rutas |
| Router Advertisement (RA) | Mensaje con el que el router anuncia el prefijo; los equipos arman su dirección (SLAAC) |
| SLAAC | Autoconfiguración sin estado: el host crea su IP a partir del prefijo del RA |
| DHCPv6 | Alternativa o complemento para entregar direcciones y opciones |
| EUI-64 | Forma de generar la parte del host de la dirección a partir de la MAC |
| NPTv6 | Traducción 1 a 1 de prefijos (sin puertos) |
graph LR H["Host IPv6<br/>(SLAAC)"] -- "Router Solicitation" --> FW["Firewall<br/>ethernet1/1<br/>2001:db8:10::1/64"] FW -- "Router Advertisement<br/>(prefijo 2001:db8:10::/64)" --> H FW -- "Ruta ::/0" --> ISP["Router del proveedor"]
Configuración (Ejemplo)
Prefijo de laboratorio: 2001:db8:10::/64 en inside y 2001:db8:ff::/64 hacia el proveedor (direcciones de documentación; cambia por las reales).
1. Habilitar IPv6 en el firewall
- Device > Setup > Session > Session Settings (engranaje).
- Marca Enable IPv6 Firewalling.
- OK y Commit.
Sin esta opción, el firewall descarta el tráfico IPv6 que atraviesa.
2. Dirección IPv6 en la interfaz
- Network > Interfaces > Ethernet >
ethernet1/1(tipo Layer3, con zona y Virtual Router). - Pestaña IPv6: marca Enable IPv6 on the interface.
- Interface ID:
EUI-64(genera la parte del host desde la MAC) o un valor manual. - Addresses > Add:
2001:db8:10::1/64. Marca Enable address on interface. Si quieres que se anuncie el prefijo en el RA, marca Enable Router Advertisement/Prefix según corresponda (puede variar según la versión). - OK y Commit.
set network interface ethernet ethernet1/1 layer3 ipv6 enabled yes
set network interface ethernet ethernet1/1 layer3 ipv6 address 2001:db8:10::1/64 enable-on-interface yes
commit
Si un comando no coincide con tu versión, usa Tab o ?.
3. Router Advertisement (para que los hosts se autoconfiguren)
- Edita la interfaz > pestaña IPv6 > Enable Router Advertisement.
- Opciones comunes: Managed Configuration y Other Configuration (si usarás DHCPv6), Router Lifetime, Link MTU, Reachable Time, Retrans Time.
- Prefijo: en Addresses, activa Advertise (con On-link y Autonomous) para que los hosts creen su IP con SLAAC.
- OK y Commit.
Los hosts recibirán el prefijo y generarán su dirección. Para que usen el firewall como gateway, el RA lo anuncia como router por defecto.
4. Ruta por defecto IPv6
- Network > Virtual Routers >
default> Static Routes > pestaña IPv6 > Add. - Name
default-v6, Destination::/0, Interfaceethernet1/6, Next HopIPv6 Address(por ejemplo2001:db8:ff::1o la link-local del routerfe80::1; si usas link-local debes indicar la interfaz). - OK y Commit.
5. Objetos y reglas de Security Policy
- Objects > Addresses > Add: Name
LAN-v6, TypeIP Netmask,2001:db8:10::/64. - Policies > Security > Add: Source Zone
inside, Source AddressLAN-v6, Destination Zoneoutside, Applicationany(o las necesarias), ActionAllow. - Las reglas aplican a IPv4 e IPv6 según las direcciones que contengan; una regla con
anyen direcciones cubre ambos. - Commit.
ICMPv6
Permite las aplicaciones
ipv6-icmp(yicmp6según versión) que necesites: sin ellas se rompe Neighbor Discovery y Path MTU Discovery. Hay reglas implícitas para parte de ND/RA en el propio firewall, pero revisa tu versión.
6. NPTv6 (traducción de prefijos, opcional)
- Policies > NAT > Add.
- En la pestaña General: Name
nptv6-out, NAT TypeNPTv6(sin esto la regla es NAT IPv4 y no traduce prefijos). Original Packet: Source Zoneinside, Destination Zoneoutside, Source Address el prefijo interno (por ejemplo2001:db8:10::/64, noany). - Translated Packet > Source Address Translation > Translation Type
Static IP, Translated Address2001:db8:aa::/64, y activa Bi-directional si quieres también entrante. - OK y Commit.
NPTv6 traduce el prefijo manteniendo la parte de host; no hay PAT ni puertos como en IPv4 (ver Source NAT para IPv4).
Verificación
| Comando o lugar | Qué debes ver | Si no lo ves |
|---|---|---|
| Device > Setup > Session | Enable IPv6 Firewalling marcado | Si no está, el tráfico IPv6 se descarta |
show interface ethernet1/1 | La dirección IPv6 en la interfaz | Si falta, la IPv6 no está habilitada en la interfaz |
show routing route type ipv6 (verificar con Tab o ?) | La ruta ::/0 y las conectadas IPv6 | Si falta, revisa la pestaña IPv6 de rutas |
ping inet6 source 2001:db8:10::1 host 2001:db8:ff::1 (verificar con Tab o ?) | Respuestas | Si falla, revisa el vecino, ND y permisos |
show neighbor interface ethernet1/1 (verificar con Tab o ?) | Entradas ND (vecinos IPv6 y su MAC) | Si está vacío, no hay vecinos o ICMPv6 está bloqueado |
Desde un host: ipconfig o ip -6 addr | Dirección global del prefijo anunciado | Si no la tiene, el RA no está habilitado o llega bloqueado |
| Desde un host: ping a una dirección IPv6 externa | Respuestas | Si falla, revisa ruta, regla y el proveedor |
| Monitor > Logs > Traffic | Sesiones con direcciones IPv6 | Si no aparecen, revisa si la regla cubre esas direcciones |
Errores comunes
El tráfico IPv6 no pasa por el firewall
- Causa: Enable IPv6 Firewalling no está activo, o no hay regla que cubra esas direcciones.
- Solución: actívalo en Device > Setup > Session y crea la regla con objetos IPv6.
Los hosts no obtienen dirección IPv6
- Causa: no hay Router Advertisement en la interfaz, o el prefijo no tiene Autonomous activado.
- Solución: habilita RA y el anuncio del prefijo en la interfaz.
Hay conectividad local pero no hacia afuera
- Causa: falta la ruta
::/0, o el next hop link-local no tiene interfaz indicada. - Solución: crea la ruta IPv6 y especifica interfaz si usas link-local.
Se rompe Neighbor Discovery o MTU
- Causa: una regla bloquea ICMPv6 en bloque.
- Solución: permite el ICMPv6 necesario (ND, RA, Packet Too Big).
Una regla con un objeto de dirección no cubre IPv6
- Causa: la regla usa un objeto de dirección que solo contiene IPv4 (con
anysí cubre ambos). - Solución: agrega el prefijo IPv6 al objeto o crea objetos separados.
NPTv6 no traduce
- Causa: los prefijos tienen distinta longitud, o falta la regla bidireccional.
- Solución: usa prefijos de la misma longitud (por ejemplo /64 a /64) y revisa la regla.
Confundo link-local con global
- Causa: las direcciones
fe80::no se enrutan fuera del enlace. - Solución: úsalas solo como next hop o para ND; para todo lo demás usa direcciones globales o ULA.