alvaro.gonzalezsotillo@educa.madrid.org

Protocolo IPv6

Álvaro González Sotillo

Created: 2024-09-08 dom 17:53

1. Introducción

  • En IPv4, las direcciones son de 32 bits
    • 232 direcciones posibles, unos 4000 millones
    • Inicialmente fueron direcciones suficientes
    • Actualmente, se encuentran agotadas
  • Ante la escasez de direcciones, se palia el problema con
    • CIDR
    • Direcciones privadas, con acceso NAT (siguientes temas)
    • Direcciones dinámicas (DHCP), para los accesos ADSL
  • Estas soluciones solo son temporales

2. IPv6

  • Las direcciones tienen 128 bits de longitud
    • 2128 son más o menos 300 trillones de trillones de direcciones
    • De momento parecen suficientes
  • Ejercicio comparativo: La tierra tiene un radio de 6370 Km aproximadamente ¿Cuántas direcciones IPv4 hay por m2? ¿Cuántas direcciones IPv6 hay por m2?

2.1. Direcciones IPv6

  • Se especifican en hexadecimal, separando grupos de 16 bits con “:”
  • Ejemplo de dirección IPv6 2001:0db8:85a3:0000:0000:8a2e:0370:7334
  • Simplificaciones
    • Se pueden omitir los ceros iniciales de cada grupo 2001:db8:85a3:0:0:8a2e:370:7334
    • Se pueden omitir varios grupos que valgan 0 (solo una vez) 2001:db8:85a3::8a2e:370:7334

2.2. Direcciones reservadas

Dirección Descripción
::/128 Dirección indefinida. Ningún host puede tener esta dirección. Como 0.0.0.0 en IPv4
::1/128 El propio host (127.0.0.0/8 en IPv4)
fe80::interfaz/10 link-local. Equivalentes a APIPA (169.254.0.0/16 en IPv4). El identificador de interfaz es el EUI-64 bits. Se usa notación %
ffc0::subred:interfaz/10 site-local. Como link-local, pero permitiendo subredes. Ya no se usan.
fc00::/7 Unique-local. Parecidas a las redes privadas de IPv4
ff00::/8 Grupos multicast.
2001:0DB8::/32 Ejemplos para documentación
2000::/3 Global Unicast Address. Internet.

(https://en.wikipedia.org/wiki/Reserved_IP_addresses)

2.3. link-local con eui-64

  • Inicialmente, Windows y Linux calculaban las direcciones link-local con el eui-64
  • Actualmente, Windows utiliza una dirección aleatoria

2.4. Tipos de comunicación

  • Unicast
    • El paquete se envía a una dirección concreta de destino
    • Esto también existe en IPv4 y en Ethernet
  • Broadcast
    • En IP4, con todos los bits de host a 1
    • En Ethernet hay broadcast a toda la red (todos los bits a 1)
    • En IPv6, no hay, aunque se puede usar FF01::1 (Multicast: All Nodes Address)
  • Multicast
    • El paquete se envía a varios hosts de, posiblemente, varias redes (FF01::/16)
    • En IPv4, con direcciones de clase D
  • Anycast
    • El paquete se envía a un solo host de un conjunto de hosts

2.5. Subnetting en IPv6

  • Conceptualmente es igual que en IPv4
  • El IETF recomienda en su RFC 3177 que todas las redes sean al menos /64
  • Se recomienda:
    • Usuarios en el ámbito doméstico, con conexiones permanentes o bajo demanda deberían recibir una máscara /48.
    • Pequeñas y grandes empresas deberían recibir /48.
    • Conjuntos muy grandes de abonados deberían recibir un /47.
    • Redes móviles, como vehículos o teléfonos móviles, un /64.
This document provides recommendations to the addressing registries
(APNIC, ARIN and RIPE-NCC) on policies for assigning IPv6 address
blocks to end sites.  In particular, it recommends the assignment of
/48 in the general case, /64 when it is known that one and only one
subnet is needed and /128 when it is absolutely known that one and
only one device is connecting.

2.6. Ejercicio subnetting

Dada la red 2001:0DB8:7200::/39, se desea dividirla en 8 redes de igual tamaño. Indica en forma de tabla las redes resultantes, primer host, último host y cantidad de hosts en cada red

3. Configuración de IPv6

3.1. Linux Debian

iface eth0 inet6 static 
  address 2607:f0d0:2001:000a:0000:0000:0000:0002/64
  gateway 2607:f0d0:2001:000a:0000:0000:0000:0001

Activar enrutamiento IPv6:

sysctl net.ipv6.conf.all.forwarding=1

Añadir una ruta

route -A inet6 add <red>/<mascara> gw <gateway> [dev <interfaz>]

3.2. Windows

  • En las propiedades del adaptador, como IPv4

3.3. IOS

  • Se puede utilizar el sufijo eui64, o indicar completamente la dirección

      ipv6 address 2001:0DB8:c18:1::/64 eui 64
      ipv6 address 2001:0DB8:c18:1::1/64
    
  • Para añadir rutas: En el ejemplo, se indica que para llegar a la red 2001:db8::/32 se va por el router 2001:db8:3000:1.

      ipv6 route 2001:DB8::/32 2001:DB8:3000:1
    
  • Para activar el enrutamiento y consultar las rutas

      ipv6 unicast-routing 
      show ipv6 route
    

4. Convivencia IPv4/IPv6

  • Todos los sistemas operativos actuales cuentan con pila IPv6
  • Los backbones de Internet funcionan con IPv6
  • Los ISP siguen funcionando con IPv4
  • Pocas empresas utilizan IPv4 de forma general
  • Para hacerlo interoperable hay varias soluciones
    • IPv4 mapeada a IPv6
    • Túneles dinámicos de IPv6 sobre IPv4
    • DSLite

4.1. Interoperabilidad

Rango Tipo de túnel
::ffff:0:0/96 IPv4-mapeada. En un entorno IPv6, los programas que sólo entiendan IPv4 utilizan este tipo de direcciones, traducidas por IPv6 directamente
::0:0/96 Túnel dinámico, para transmitir IPv6 sobre IPv4 de forma automática
  • Cuando se mezclan direcciones IPv4 e IPv6, la notación es mixta
    • ::ffff:192.168.10.6: IPv4 mapeada
    • ::192.168.10.6: túnel dinámico

4.1.1. IPv4 mapeada a IPv6

image/svg+xml IPv4 IPv4 IPv4 IPv6 IPv4 IPv6 IPv6 192.168.1.5 192.168.1.5 ::FFFF:192.168.1.5 Red intermedia IPv6 Red origen IPv4 Red destino IPv4

Figura 1: IPv4 viajando por red IPv6

Figura 2: IPv4 mapeada a IPv6

Fuente: tcpipguide

4.1.2. IPv6 compatible con IPv4 (túnel dinámico)

image/svg+xml IPv6 IPv6 IPv6 IPv4 IPv6 IPv4 IPv4 :::192.168.1.5 192.168.1.5 :::192.168.1.5 Red origen IPv6 Red intermedia IPv4 Red destino IPv6

Figura 3: IPv6 viajando por red IPv4

Figura 4: IPv6 compatible con IPv4 (túnel dinámico)

Fuente: tcpipguide

5. Ejercicios

5.1. Linux

  • Configura una máquina virtual linux en modo bridged con ip6
    • Dirección fe80::xx/112
    • xx es tu número de ordenador (1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, 11, …)
  • Haz ping al resto de ordenadores de tus compañeros

      ping6 -I <interfaz> fe80::xx
    

5.2. Windows

  • Configura una máquina virtual Windows 7 en modo bridged con ipv6
    • Dirección fe80::xx00/112
    • xx es tu número de ordenador (1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, 11, …)
  • Haz ping al resto de ordenadores de tus compañeros (interfaz hace falta si hay más de una interfaz)

      ping -6 fe80::xx%interfaz
      ping -6 fe80::xx00%interfaz
    
  • Haz ping desde tu Linux a los Windows

5.3. Windows

  • Configura una máquina Windows con dos tarjetas en diferentes redes internas
  • Configura máquinas virtuales en cada una de las redes, con la misma dirección ipv6 link local
  • Haz ping desde windows a esas direcciones link local sin determinar la interfaz, y comprueba cuál de las dos máquinas encuentra.

5.4. IOS

Completa el ejercicio de packettracer, de forma que todos los ordenadores tengan conexión entre sí.

  • Activar unicast routing: Router(config)# ipv6 unicast-routing
  • Activar RIP: Router(config-if)# ipv6 rip process1 enable

Fichero PKT

6. NDP

  • ARP es un protocolo para IPv4
  • IPv6 utiliza Network Discovery Protocol
  • Linux: ip -6 neigh show
  • Windows: netsh interface ipv6 show neighbors

¿Cómo se distribuye un NDP?

7. Referencias