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

ConceptoQué 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)
SLAACAutoconfiguración sin estado: el host crea su IP a partir del prefijo del RA
DHCPv6Alternativa o complemento para entregar direcciones y opciones
EUI-64Forma de generar la parte del host de la dirección a partir de la MAC
NPTv6Traducció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

  1. Device > Setup > Session > Session Settings (engranaje).
  2. Marca Enable IPv6 Firewalling.
  3. OK y Commit.

Sin esta opción, el firewall descarta el tráfico IPv6 que atraviesa.

2. Dirección IPv6 en la interfaz

  1. Network > Interfaces > Ethernet > ethernet1/1 (tipo Layer3, con zona y Virtual Router).
  2. Pestaña IPv6: marca Enable IPv6 on the interface.
  3. Interface ID: EUI-64 (genera la parte del host desde la MAC) o un valor manual.
  4. 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).
  5. 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)

  1. Edita la interfaz > pestaña IPv6 > Enable Router Advertisement.
  2. Opciones comunes: Managed Configuration y Other Configuration (si usarás DHCPv6), Router Lifetime, Link MTU, Reachable Time, Retrans Time.
  3. Prefijo: en Addresses, activa Advertise (con On-link y Autonomous) para que los hosts creen su IP con SLAAC.
  4. 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

  1. Network > Virtual Routers > default > Static Routes > pestaña IPv6 > Add.
  2. Name default-v6, Destination ::/0, Interface ethernet1/6, Next Hop IPv6 Address (por ejemplo 2001:db8:ff::1 o la link-local del router fe80::1; si usas link-local debes indicar la interfaz).
  3. OK y Commit.

5. Objetos y reglas de Security Policy

  1. Objects > Addresses > Add: Name LAN-v6, Type IP Netmask, 2001:db8:10::/64.
  2. Policies > Security > Add: Source Zone inside, Source Address LAN-v6, Destination Zone outside, Application any (o las necesarias), Action Allow.
  3. Las reglas aplican a IPv4 e IPv6 según las direcciones que contengan; una regla con any en direcciones cubre ambos.
  4. Commit.

ICMPv6

Permite las aplicaciones ipv6-icmp (y icmp6 segú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)

  1. Policies > NAT > Add.
  2. En la pestaña General: Name nptv6-out, NAT Type NPTv6 (sin esto la regla es NAT IPv4 y no traduce prefijos). Original Packet: Source Zone inside, Destination Zone outside, Source Address el prefijo interno (por ejemplo 2001:db8:10::/64, no any).
  3. Translated Packet > Source Address Translation > Translation Type Static IP, Translated Address 2001:db8:aa::/64, y activa Bi-directional si quieres también entrante.
  4. 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 lugarQué debes verSi no lo ves
Device > Setup > SessionEnable IPv6 Firewalling marcadoSi no está, el tráfico IPv6 se descarta
show interface ethernet1/1La dirección IPv6 en la interfazSi falta, la IPv6 no está habilitada en la interfaz
show routing route type ipv6 (verificar con Tab o ?)La ruta ::/0 y las conectadas IPv6Si falta, revisa la pestaña IPv6 de rutas
ping inet6 source 2001:db8:10::1 host 2001:db8:ff::1 (verificar con Tab o ?)RespuestasSi 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 addrDirección global del prefijo anunciadoSi no la tiene, el RA no está habilitado o llega bloqueado
Desde un host: ping a una dirección IPv6 externaRespuestasSi falla, revisa ruta, regla y el proveedor
Monitor > Logs > TrafficSesiones con direcciones IPv6Si 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 any sí 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.
  • 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.