Jornadas Técnicas RedIRIS 2003Palma de Mallorca
Guía de IPv6Grupo de Coordinación iris-ipv6
JT2003 - [email protected] 2
Agenda
¿por qué IPv6? Cabecera IPv6 Direccionamiento Autoconfiguración DNS Configuración de routers Routing Mecanismos de transición Migración de una red Seguridad
JT2003 - [email protected] 3
Por qué IPv6
Para tener más direcciones. Es la razón principal
Si yo no necesito más direcciones… IPv6 está de moda -> muchos proyectos La gente va añadiendo soporte, será necesario
soportar IPv6 para no quedarse ‘atrás’ Facilita las conexiones end-to-end
Técnicamente: Seguridad en capa de red
IPsec es un añadido para IPv4 Autoconfiguración Routing más eficiente, jerárquico
Aprender de los errores-delegación de dir. sin optimización ni agregación
Cabecera más sencilla
JT2003 - [email protected] 4
Por qué IPv6
Y cada vez hay más dispositivos conectados a una red de datos
Ahora…
Antes…
JT2003 - [email protected] 5
Por qué IPv6
En los países con carencia (teórica) de direccionamiento, la implantación de IPv6 es mayor
En el resto, la demanda surgirá a medida que aumente el número de cacharros conectados a Internet
Empresas comerciales como Sony o Microsoft incluirán IPv6 en sus productos
Así será necesario soportar IPv6 para no estar desconectado de una parte de la red.
De todas formas…posiblemente IPv4 no desaparecerá nunca
JT2003 - [email protected] 7
Campos de la cabecera
Class es el type of service de IPv4, que se ha cambiado de nombre
Hop limit es el time to live de IPv4 Flow label, utilizado en QoS Payload length es la longitud de los datos Next header, la siguiente cabecera
Se simplifica la cabecera, y si hay más cosas, se ponen en cabeceras contiguas
No hay checksum No hay fragmentación, sólo extremo a
extremo MTU discovery
JT2003 - [email protected] 8
Extensiones de cabecera e ICMP
Tipos de extensiones de cabecera: Routing Fragmentación Opciones Hop-by-Hop Opciones de destino Autenticación
ICMP Completamente nuevo Incluye IGMP
JT2003 - [email protected] 9
Direccionamiento
Hay unicast, anycast y multicast (pero de 128 bits): muchas DNS básico (como es hexadecimal, hay truquitos…)
No hay broadcast (mcast hace su papel) P.ej.:todo 0s y todo 1s son direcciones válidas
Sintaxis: aaaa:bbbb:cccc:dddd:eeee:ffff:0000:1111 Pueden suprimirse un bloque de ceros por :: No hay máscaras, sino /número bits (notación CIDR)
JT2003 - [email protected] 10
Direccionamiento
Este es el formato de una dirección:
Las direcciones unicast «globales» empiezan por 001 todo lo que se ve ahora en la tabla de rutas es
2001::… o 3ffe::… A cada centro se asigna un /48
Global routing prefix Una red es un /64 (o sea, el equivalente a
una clase C, más o menos…) ID Interfaz
¡Tengo 16 bits para direccionar mi centro! ID Subred
ID interfazprefijo global routing ID subred
JT2003 - [email protected] 11
Distribución de mis direcciones En RedIRIS me han dado 2001:720:cafe::/48
¿Qué hago? Se puede dejar asignado todo el
direccionamiento de un tirón, y despreocuparnos
Lo primero, tener en cuenta que, por ejemplo 2001:720:cafe:f000::/55 nos obliga a crear dos
ficheros en la configuración del DNS, para un mismo prefijo (nibble bit):
2001:720:cafe:f000/56 2001:720:cafe:f100/56
Mejor evitar molestias innecesarias Pensar en reservar No pensar en desperdiciar (como hay tanto...)
JT2003 - [email protected] 12
Asignación de direccionamiento Tened en cuenta:
A redes finales un /64 Se recomienda un /64 para interfaces de routers
Nosotros usamos un /126 (4 direcciones) GÉANT también En otras redes un /127, /117, …
Entonces, podemos asignar un /56 a cada facultad/edificio/sede/lo-que-sea Tenemos para 256 (56-48=8 bits, 2^8=256) Y cada uno de ellos tiene para 256 redes (64-56=8
bits, 2^8=256)
JT2003 - [email protected] 13
Asignación de direccionamiento De ese rango, un ‘trozo inicial’ se puede usar
para direccionamiento del core, direccionamiento para proyectos, etc...
Por ejemplo, reservo los 32 primeros /56 para estas cosas: De 2001:720:cafe:0000/56 A 2001:720:cafe:1f00/56 son míííos, ¡mi tesssoro!
Por sencillez, elegimos2001:720:cafe:0000/56 para las interfaces del core (lo primero es lo primero)
Las interfaces de los routers de cada centro, se eligen del rango específico Buscad la agregación
JT2003 - [email protected] 14
Asignación de direccionamiento Entonces, si reservamos un /56 por cada
asignación que hagamos, quedaría como sigue: 2001:720:cafe:2000/56 - centro 1 2001:720:cafe:2001/56 - reservado 2001:720:cafe:2002/56 - centro 2 2001:720:cafe:2003/56 - reservado ...
Interfaces de los routers: Algo fácil de recordar Si IPv4 es 130.206.1.8, IPv6 es 2001:cafe::8 ¡Hay letras! (hexadecimal)
egrep “^[a-foA-FO]{4}.$” <dic_esp.txt Todas las combinaciones (cero por o)
JT2003 - [email protected] 15
Direcciones de hosts
¿Cómo configuro mis máquinas?
Cuando está habilitado IPv6 en un host, ya tengo una dirección link-local Algo así como direccionamiento privado Empieza por fe80: No enrutable Es única en la red local Esta dirección se configura automáticamente
usando el identificador de interfaz fe80::<interface id> Se usan para descubrimiento de vecino y
descubrimiento de router
JT2003 - [email protected] 16
Direcciones de hosts
El Identificador de interfaz Los últimos 64 bits de la dirección Único en cada red local Dir. IPv6 orientada a interfaz, no a host La dir. MAC está mapeada (no siempre, ya que la
dir. IPv6 también se puede configurar manualmente).
Configuración automática (no es DHCPv6, aunque también exista):
A partir de la dirección MAC EUI-48 (IPv4) a EUI-64 (IPv6) La dirección se configura automáticamente gracias a
los mensajes router advertisement y router solicitation
Los hosts descubren automáticamente a los routers
JT2003 - [email protected] 17
Direcciones de hosts
Un ejemplo: El router anuncia 3ffe:3328:5:1::/64 La MAC de mi máquina es
00:60:08:3a:9e:b7 Mi ID de interfaz EUI-64 se construye como:
0260:08ff:fe3a:9eb7 0260:08ff:fe3a:9eb7 es la dir. MAC sin el 00: Se inserta ff:fe El 02 del comienzo:
0000 0010 Este bit indica dir. Universal/Local Por lo tanto, mi dirección será
3ffe:3328:0005:0001:0260:08ff:fe3a:9eb7 ¡Ah! Mi dirección de loopback es ::1
JT2003 - [email protected] 18
Direcciones en mi red
¿Cómo se completa la dirección con el prefijo que anuncia el router?
Se necesita: Direccionamiento multicast Direccionamiento multicast de solicitud de nodo En los nodos
Link-local address Dirección multicast para todos los nodos Dirección multicast de solicitud de nodo Dirección de loopback
ICMPv6 Protocolo de descubrimiento de vecino
JT2003 - [email protected] 19
Direcciones multicast
Direcciones multicast: Empiezan por
F F 0 0Flags: 0,1 (permanente, no permanente)
Ámbito:1,2,5,8,e (nodo, link, site, organización, global)
FF02::1 Todos los nodos de una red FF02::2 Todos los routers de una red
Dirección multicast de solicitud de nodo FF02:0:0:0:0:1:FF00::/104 Los últimos 24 bits son los de la parte más baja de
la dirección IPv6 del nodo
JT2003 - [email protected] 20
Autoconfiguración
El protocolo utilizado para la autoconfiguración de los nodos es el neighbor discovery (descubrimiento de vecino)
El host pide al router que mande un mensaje de Router Advertisement inmediatamente mediante un mensaje de solicitud de router ICMP de tipo 133
Los routers mandan un mensaje de router advertisement periódicamente ICMP de tipo 134 Se incluye el prefijo que anuncia el router, con un
tiempo de vida
JT2003 - [email protected] 21
Autoconfiguración
Un nodo manda un mensaje de solicitud de vecino para determinar la dirección de enlace de un vecino ICMP de tipo 135
Se manda un mensaje de neighbor advertisement como respuesta al mensaje anterior ICMP de tipo 136
Los routers mandan mensajes de cambio o redirección de router para encontrar el mejor salto para un destino
JT2003 - [email protected] 22
Autoconfiguración
La configuración de un host puede ser entonces: Manual o por DHCP (stateful) Automática (stateless)
En el caso de configuracion automática, ¿cómo detecto direcciones duplicadas? Hago un join a FF02::1 (todos los nodos de la red) Hago un join a la dir. multicast de solicitud de nodo,
la última parte de la dir. será la de la dir. IPv6 que se quiere comprobar
Se manda un mensaje de solicitud de vecino en la dir. multicast de solicitud de nodo
Si no se recibe un mensaje de neighbor advertisement entonces ¡¡¡la dir. es buena!!!
JT2003 - [email protected] 23
Ejemplo:
PC1 tiene 3ffe:8::F1 Dir. de solicitud de nodo FF02::1:FF00:F1
PC2 tiene 3ffe:8::F2 Dir. de solicitud de nodo FF02::1::FF00:F2
Entra PC3 Intento 3ffe:8::F3
Join a FF02::1 Join a FF02::1:FF00:F3 Manda un mensaje de solicitud de vecino a esta dir. Escucha la respuesta en FF02::1
Autoconfiguración
JT2003 - [email protected] 24
Ethernet
En una red Ethernet los host IPv6 usan el ID de interfaz EUI-64 Recordad: el bit aquel, que indica si es local (0) o
global (1), en este caso es 1, es decir, global: globalmente único
Se utiliza la solicitud de vecino para obtener una dirección de nivel de enlace Ya no hay ARP
Una cosa más respecto al direccionamiento Las direcciones Site-local no se van a tener en
cuenta
JT2003 - [email protected] 25
Direcciones anycast
Queda un tipo de direcciones por ver: direcciones anycast
Se usan para un grupo de interfaces que tienen la misma dirección
Un paquete enviado a esta dirección va al host más cercano que tenga esa dirección
La cercanía se puede medir con un protocolo de routing
Puede usarse para redundancia o balanceo, como VRRP o HSRP
JT2003 - [email protected] 26
Configuración de routers en mi red Para no tener que configurar mi host manualmente, en
un CISCO pongo en la interfaz Ethernet:
ipv6 nd prefix-advertisement <prefijo> 86400 86400 onlink autoconfig
Y en mi Juniper pongo:
router-advertisement { interface fe-1/3/0.0 {
prefix 2001:720:4:0::/64;}
}
JT2003 - [email protected] 27
Autoconfiguración de mi host
Entonces, si mi maquina tiene activado IPv6… En mi dirección de loopback aparece
::1/128 Scope: Host En las interfaces aparece una link-local:
eth0 Link encap:Ethernet HWaddr 00:60:08:3A:9E:B7 inet addr:130.206.1.157 Bcast:130.206.1.255 Mask:255.255.255.128 inet6 addr: fe80::260:8ff:fe3a:9eb7/10 Scope:Link…
Mi máquina se va a configurar «sola» (y tanto rollo anterior, ¿para qué?), a través del prefijo que anuncia el router, pasando a tener conectividad IPv6 total:
eth0 Link encap:Ethernet HWaddr 00:60:08:3A:9E:B7 inet addr:130.206.1.157 Bcast:130.206.1.255 Mask:255.255.255.128 inet6 addr: 3ffe:3328:5:1:260:8ff:fe3a:9eb7/64 Scope:Global inet6 addr: fe80::260:8ff:fe3a:9eb7/10 Scope:Link
JT2003 - [email protected] 28
Tabla de rutas en mi host
¿Qué rutas tengo?
[root@nevado /root]# netstat -nr -Ainet6 Kernel IPv6 routing table Destination Next Hop Flags Metric
Ref Use Iface::1/128 :: U 0 15 2 lo 3ffe:3328:5:1:260:8ff:fe3a:9eb7/128 :: U 0 1090 0 lo 3ffe:3328:5:1::/64 3ffe:3328:5:1::1 UG 1 0 0 eth0 3ffe:3328:5:1::/64 :: UA 256 2 0 eth0 2000::/3 3ffe:3328:5:1::1 UG 1 120 0 eth0 fe80::210:5aff:fed0:3550/128 :: U 0 0 0 lo fe80::260:8ff:fe3a:9eb7/128 :: U 0 12 0 lo
fe80::/10 :: UA 256 0 0 eth0 fe80::/10 :: UA 256 0 0 eth1 ff00::/8 :: UA 256 0 0 eth0
ff00::/8 :: UA 256 0 0 eth1
JT2003 - [email protected] 29
Tabla de rutas en mi host
Tengo rutas para Mi prefijo Direcciones link-local Direcciones multicast 2000::/3
Esto es el equivalente a la dir. utilizada para la ruta por defecto ::0/0
Recordad que las direcciones unicast enrutables globales son las que empiezan por 001
El router _NO_ anuncia la ruta por defecto en este tipo de autoconfiguración
Una alternativa, DHCP En resumen, es bastante sencillo tener IPv6
plenamente operativo en mis hosts
JT2003 - [email protected] 30
Configuración manual
Mis hosts también los puedo configurar manualmente, al estilo IPv4:
http://www.bieringer.de/linux/IPv6//etc/sysconfig/networkNETWORKING_IPV6=yes#Valores por defecto de los dos siguientes parametros:
no/yes #Si habilitamos IPv6 forwarding se deshabilita la
autoconfiguracion#La unica forma de deshabilitar la autoconfig es
habilitar el ipv6 forwardingIPV6FORWARDING=yes #IPV6_AUTOCONF=noIPV6_DEFAULTGW=2001:720:418:CAFE::1IPV6_DEFAULTDEV=eth0
JT2003 - [email protected] 31
Configuración manual
/etc/sysconfig/network-scripts/ifcfg-eth0 IPV6INIT="yes"IPV6ADDR="2001:720:418:CAFE::XXX/64“
/etc/sysconfig/static-routes-ipv6 (Posiblemente haya que crear el fichero)
eth0 2000::/3 2001:720:418:CAFE::1
JT2003 - [email protected] 32
¿Qué pasa con Windows?
¿Si mi máquina es Windows? Si es Windows 98, mejor actualizo Si es Windows 2000, debo instalar SP2
http://msdn.microsoft.com Si es Windows XP:
Sin SP1 Hay que activarlo (“Developer Preview”) NO permite consultas DNS sobre IPv6Con SP1 Viene ya, se supone que es parte integral
En cualquier caso http://www.microsoft.com/ipv6
Podemos probar mensajería sobre IPv6 http://www.threedregrees.com
JT2003 - [email protected] 33
A tener en cuenta…
Pero, ahora las aplicaciones se comportan de manera diferente, ¡¡IPv6 siempre irá antes que IPv4!! Primero me preguntarán por IPv6(timeout…) Si la aplicación está bien hecha me preguntará por
IPv4 Hay que tener mucho cuidado a la hora de
poner un servicio en producción en IPv6 Entonces debe tener tan buena conectividad como
IPv4, si no queremos degradación del servicio Hay que ser muy cuidadosos a la hora de
configurar una dirección IPv6 en el DNS ¡Negación del servicio!
JT2003 - [email protected] 34
DNS
Ya tengo configurado los hosts de mi red, así como mi router Es aconsejable el DNS, debido a la longitud de mis
direcciones
Bind v9 soporta peticiones IPv6 Peticiones IPv6 sobre IPv6:
options {listen-on-v6 { any; };
} Peticiones IPv6 sobre IPv4
JT2003 - [email protected] 35
DNS
Se recomienda que mi_centro.es sea el mismo, es decir, no crear una zona especial para IPv6 (del tipo ipv6.mi_centro.es) Sin embargo, puede ser peligroso para los servicios
ya en producción Durante un tiempo de pruebas, es mejor
ftp.ipv6.mi_centro.es que ftp.mi_centro.es En cualquier caso, suponemos que usamos la
misma zona directa
Zona directa Utiliza los mismos ficheros de configuración que
IPv4 (en vez de un registro A, es uno AAAA)
JT2003 - [email protected] 36
DNS
Zona inversa: A6/DNAME/bitlabels desechadas
A pesar de todo, en la documentación de Bind 9, por ej. se indica lo contrario
\[x20010720/32].ip6.arpa NO VALE RIPE no las delega Cuidado con las versiones antiguas de glibc en
Linux, porque miran este formato nslookup utiliza este formato al consultar
resolución inversa
AAAA/nibble bit es el formato a usar
JT2003 - [email protected] 37
DNS
Zona inversa (cont.)
Notación nibble-bit con .int
0.2.7.0.1.0.0.2.ip6.int (que es 2001:0720) La antigua usada por el 6bone para 3ffe: A desechar Todavía se mantiene para tener compatibilidad
con aplicaciones antiguas RIPE soporta esta delegación
JT2003 - [email protected] 38
DNS
Zona inversa (cont.)
Notación nibble-bit con .arpa: es la buena
0.2.7.0.1.0.0.2.ip6.arpa Zona a utilizar, los root servers están
configurados para soportar este formato La que se recomienda y la que delega RIPE Las últimas versiones de glibc soportan este
formato Problema, e.f.f.3.ip6.arpa todavía no está
delegado, y las últimas versiones de glibc no son capaces de resolver
Sólo preguntan por e.f.f.3.ip6.arpa Habría que preguntar por e.f.f.3.ip6.int
JT2003 - [email protected] 39
DNS
Zona inversa (cont.) RedIRIS delega:
Nibble-bit con .int Nibble-bit con .arpa NO se delega bitstrings con .arpa
Aunque se pueden configurar de manera local para la zona, sólo para comprobar la configuración
Es conveniente tener actualizada la glibc Las aplicaciones deben preguntar por nibble
bit con .arpa 0.2.7.0.1.0.0.2.ip6.arpa es la buena (por ahora) Formato soportado por Bind 8 y Bind 9
JT2003 - [email protected] 40
Aplicaciones
Actualmente, la mayoría de aplicaciones, traen soporte IPv6, al menos en sus últimas versiones. O si no, basta con un parche.
Bind, Apache, Mozilla, sendmail, clientes de correo, news, NTP, aplicaciones de red (ping, traceroute, etc...).
En muchas de ellas, hace falta compilar el soporte, y luego configurarlas. Ejemplo: Bind o sendmail (fichero M4):
DAEMON_OPTIONS(‘Name=MTA-v4, Family=inet’) DAEMON_OPTIONS(‘Name=MTA-v6, Family=inet6’)
JT2003 - [email protected] 41
Routers
Cisco: soporte sin problemas desde la 12.2 o 12.3 Lamentablemente para los Catalyst 6000…
Necesario nueva procesadora para soporte Hardware Habilito IPv6
ipv6 unicast-routing Configuro los interfaces
ipv6 address ….. Routing
Estático – ipv6 route <prefijo> <next-hop> Dinámico – ISIS, RIP, OSPF
ipv6 router isis 766 Dinámico – BGP
address family ipv6 unicast neighbor ….network ….
En general, ipv6 en lugar de ip..ipv6 access-list 101 permit <prefijo> anyipv6 access-class 101 in
JT2003 - [email protected] 42
Routers
Juniper: soporte sin problemas desde la version 5.x
Routing integrado Habilito interfaces
family inet6 address … Configuro protocolos de routing y RIBs
Al estilo IPv4, siempre IPv6 bajo family inet6 Estático: Bajo [routing-options rib inet6.0]
static route <prefijo> next-hop <host> Dinámico
Igual a IPv4, pero bajo family inet6 Políticas, filtros, etc.
family inet6
JT2003 - [email protected] 43
Routing
Una vez configurado mi router, la salida hacia Internet v6 la hago a través de RedIRIS:ipv6 route ::/0 <dir. extremo RedIRIS IPv6>
Si mi router de salida no tiene soporte IPv6, podemos utilizar un túnel, aunque la idea es conseguir conectividad nativa.
El routing es similar a IPv4 Tened en cuenta la agregación ¡Cread topologías consistentes!
JT2003 - [email protected] 44
Mecanismos de transición
Dual-stack, todos mis equipos con soporte IPv4/IPv6 El más aconsejable Permite realizar una migración periódica, con
soporte gradual de las aplicaciones a IPv6. Mecanismos de transición basados en túneles
Encapsulación de tramas IPv6 en IPv4 Métodos manuales (túneles) ISATAP 6to4
Mecanismos de transición basados en traducción de direcciones Una extensión de las técnicas de NAT Los nodos IPv6 están detrás de un traductor
JT2003 - [email protected] 45
Túneles
Manuales Especifico explícitamente la dir. IPv4 origen y
destino de mi túnel, y el prefijo IPv6 usado en la interfaz tunnelx
Para compatibilidad Cisco-Juniper es conveniente usar tipo GRE
Puedo usar un túnel configurado en mi conexión IPv6 a RedIRIS, si mi router de salida no soporta IPv6.
Automáticos Al nodo se le asigna una dirección IPv6 de tipo
compatible IPv4 ::130.206.1.2
JT2003 - [email protected] 46
Túneles
6to4
Conecto dos mundos IPv6 separados por un mundo IPv4
El router de salida crea un túnel 6to4 al otro dominio
Las dir IPv4 de los extremos del túnel están identificados en el prefijo del dominio IPv6
Se utiliza el prefijo 2002::/16
JT2003 - [email protected] 47
Migración de mi red
Así, para migrar toda la red a IPv6, tenemos estos problemas
Mis routers no soportan IPv6 Actualizarlo, o bien, utilizar un router Linux, o un
router alternativo, con un túnel a RedIRIS. Tengo un Catalyst 6xxx/76xx de salida (un caso en
sí mismo) IOS estable para ese equipo no tiene soporte IPv6 En este caso es mejor utilizar un router alternativo, y
crear un túnel hasta RedIRIS Tengo un cortafuegos de salida
Hasta ahora hay pocas soluciones ¿Más cosas?
JT2003 - [email protected] 48
Migración de mi red
Migración a nivel 2, integrar un router IPv6 en la misma vlan
CoreRouter
Switch
Switch
SwitchPequeño
router IPv6
JT2003 - [email protected] 49
Migración de mi red
Es una migración más natural, incluyendo dual-stack
Core Switch
CoreRouter
v4
Switch1
Switch2
RouterIPv6
(v4 y v6)
Hostv4/v6
VLAN1VLAN1
VLAN2
VLAN1
VLAN1 VLAN2
Hostv4
JT2003 - [email protected] 50
Migración de mi red
Migración a nivel 3, con 6to4
CoreRouter
Router6to4
Router1
Router2
Router2
Host 6to4
JT2003 - [email protected] 51
Seguridad
Respecto a las consideraciones de seguridad, el soporte de cortafuegos + IPv6 + túneles, etc… no está muy extendido
Aunque IPv6 tiene como parte intrínseca del protocolo a IPsec Igual que en IPv4, pero en este caso como parte del
protocolo (cabecera de seguridad)
En cualquier caso, la seguridad es bastante alta…puesto que casi nadie tiene IPv6 :-)
JT2003 - [email protected] 52
IPv6 en el mundo En la tabla de routing se verá:
2002::/16 Prefijos 6to4
2001::… Asignaciones de RIPE, ARIN, etc…
3ffe::… Del 6bone Tiende a desaparecer – 6/6/2006 fin del proyecto Malla de túneles
Cada vez más empieza a haber sitios web con IPv6 Podemos leer El Mundo utilizando IPv6 También podemos jugar al Quake Y bastantes FTPs y webs, sobre todo de universidades
y centros de investigación, tienen soporte IPv6 Sólo un root server (F) DNS con conectividad IPv6
JT2003 - [email protected] 53
Finalmente…
Las direcciones IPv4 NO se acabarán en el 2005 ¿2010?, ¿2020?
IPv4 posiblemente no desaparezca…
Un periodo muuuuuuuuuy largo de convivencia
Conviene familiarizarse con IPv6, e ir implantándolo en nuestras redes