530 likes | 680 Views
Jornadas Técnicas RedIRIS 2003 Palma de Mallorca Guía de IPv6. Grupo de Coordinación iris-ipv6. 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. Por qué IPv6.
E N D
Jornadas Técnicas RedIRIS 2003Palma de MallorcaGuía de IPv6 Grupo de Coordinación iris-ipv6
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
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
Por qué IPv6 • Y cada vez hay más dispositivos conectados a una red de datos • Ahora… • Antes…
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
Un vistazo a la cabecera • La cabecera es más sencilla
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
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
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)
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 prefijo global routing ID subred ID interfaz
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...)
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)
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, elegimos 2001: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
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)
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
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
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:9eb7es 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
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
Direcciones multicast • Direcciones multicast: • Empiezan por • F F 0 0 Flags: 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
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
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
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!!!
Autoconfiguración • 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
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
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
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; } }
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
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
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
Configuración manual • Mis hosts también los puedo configurar manualmente, al estilo IPv4: • http://www.bieringer.de/linux/IPv6/ /etc/sysconfig/network NETWORKING_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 forwarding IPV6FORWARDING=yes #IPV6_AUTOCONF=no IPV6_DEFAULTGW=2001:720:418:CAFE::1 IPV6_DEFAULTDEV=eth0
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
¿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 IPv6 Con 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
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!
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
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)
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
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
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
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 nibblebit 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
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’)
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> any ipv6 access-class 101 in
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
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!
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
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
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
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?
Migración de mi red Migración a nivel 2, integrar un router IPv6 en la misma vlan Switch Switch Switch Pequeño router IPv6 Core Router
Migración de mi red Es una migración más natural, incluyendo dual-stack Host v4/v6 Switch1 VLAN2 VLAN1 Core Switch Switch2 VLAN1 Host v4 VLAN1 VLAN1 VLAN2 Core Router v4 Router IPv6 (v4 y v6)
Migración de mi red Migración a nivel 3, con 6to4 Host 6to4 Router1 Core Router Router2 Router2 Router 6to4