Ir al contenido

Entradas etiquetadas como ‘protocolos’

22
oct

Configuración de 6to4

Introducción

En el curso dictado en Brasil vimos, entre otros temas, mecanismos de trancisión a IPv6. Entre los mencionados se encuentra 6to4, que permite tener una red local con IPv6 y acceder con direcciones globalmente ruteables a todos aquellos sitios que tengan IPv6 habilitado por medio de una red IPv4.

Si bien no es el objetivo de este post explicar los fundamentos teóricos de 6to4 sí haré una breve introducción al mismo, aunque recomiendo la lectura de material adicional como el disponible en Wikipedia. Básicamente, 6to4 es un mecanismo de tunelización, en el cuál se envían los paquetes IPv6 encapsulados dentro de paquetes IPv4. Se utilizan diversos servidores distribuidos por el mundo con la dirección IP anycast 192.88.99.1 que están conectados tanto a la red IPv4 como a la red IPv6. Los mismos reciben paquetes IPv6 encapsulados en paquetes IPv4 y los reenvían a la red IPv6, realizando el proceso inverso con las respuestas.

Lo que permite 6to4 en pocas palabras es poder conectar una red IPv6 con otras redes IPv6 utilizando la infraestructura IPv4 existente. El caso típico es hacer el deploy de IPv6 en nuestra red cuando el proveedor de Internet no nos asigne direcciones IPv6, en cuyo caso nuestra red no podría comunicarse con el resto del mundo.

Si bien 6to4 es a priori una solución para las situaciones mencionadas, el rendimiento de la red puede llegar a ser muy pobre, dado que las latencias pueden aumentar en grandes proporciones al utilizar este mecanismo de tunelización. En particular, en una prueba que hice los tiempos de alrededor de 30ms que tengo de mi casa al trabajo con IPv4 aumentaron a un promedio de 460ms utilizando 6to4.

Topología de ejemplo

En el siguiente diagrama se puede apreciar que se tiene una red LAN IPv6 con tres máquinas conectadas por medio de un router y éste último conectado a la red IPv4 pública de su proveedor. Finalmente se tiene un servidor Linux con IPv6 nativo al que se desea acceder.

Preparando para el deploy

Las direcciones 6to4 tienen la siguiente estructura:

2002:XXXX:XXXX:YYYY:ZZZZ:ZZZZ:ZZZZ:ZZZZ

Donde:

  • 2002: prefijo que indica que se trata de una dirección 6to4. Nunca varía.
  • XXXX:XXXX: es la dirección IPv4 pública expresada en formato hexadecimal que tiene el router que tendrá el tunel 6to4 configurado.
  • YYYY: es el identificador de subred. Las direcciones 6to4 utilizan 48 bytes, dejando luego 16 bytes que nos permiten crear subredes 6to4.
  • ZZZZ:ZZZZ:ZZZZ:ZZZZ: es el identificador de host que puede ser o configurado manualmente o utilizando un mecanismo de autoconfiguración.

Entendido lo anterior, lo que se necesita para que el túnel 6to4 de la red de ejemplo funcione correctamente es primero generar la dirección 6to4 a partir de la dirección IPv4 pública. En este caso sería:

167 = 10100111 = A7
80  = 01010000 = 50
129 = 10000001 = 81
210 = 11010010 = D2

Lo que da como resultado:

2002:A750:81D2::/48

Se puede utilizar una función de C (una simple línea de código que podrá ejecutarse en cualquier Unix) que puede hacer el trabajo anterior más sencillo:

scarlet:~ leandro$ printf "2002:%02x%02x:%02x%02x\n" 167 80 129 210
2002:a750:81d2

Ahora bien, una vez que se tiene la dirección IPv6 6to4 de la red que se utilizará para el túnel se pueden definir:

  • IP para la interfaz del túnel en el router: debe ser una IP en dicha red. Ejemplo: 2002:A750:81D2::1/128.
  • Red para el segmento de LAN: se utiliza una subred de la obtenida 6to4. Un ejemplo puede ser: 2002:A750:81D2:2222::/64.
  • IP para el router en el segmento de LAN: debe estar en la red definida en el paso anterior. Por facilidad en la administración se asignará la primer IP en el rango: 2002:A750:81D2:2222::1/64.

Configuración

Ahora bien, llegó el momento de configurar efectivamente 6to4 en el router y dejar que la autoconfiguración de IPv6 se encargue del trabajo de configurar los hosts. Mi intención es explicar a continuación cómo efectuar la configuración de 6to4 suponiendo tanto que el router es un Mikrotik como un Cisco, que son los equipos con los que he hecho las pruebas. Si extiendo las mismas a un equipo de otra marca lo agregaré aquí.

Configuración con Mikrotik

/interface 6to4 add mtu=1280 name=ipv6-tunnel local-address=167.80.129.210 remote-address=192.88.99.1 disabled=no
/ipv6 address add address=2002:A750:81D2::1/128 interface=ipv6-tunnel
/ipv6 address add address=2002:A750:81D2:2222::1/64 interface=LAN advertise=yes disabled=no
/ipv6 route add gateway=ipv6-tunnel

Configuración con Cisco

router# configure terminal
router(config)# ipv6 unicast-routing
router(config)# interface Tunnel2002
router(config-if)# no ip address
router(config-if)# no ip redirects
router(config-if)# ipv6 address 2002:A750:81D2::1/128
router(config-if)# tunnel source FastEthernet
10
oct

Curso de IPv6 en Brasil

Desde el día miércoles 13 hasta el lunes 18 de octubre se estará dictando en la ciudad brasilera de San Pablo un curso de IPv6 al que estaré asistiendo junto con un compañero. El mismo trata los aspectos básicos del protocolo, con un marco teórico general que se cubrirá en 16 horas de clases y varias prácticas de laboratorio, que alcanzan un total de 20 horas. Organizado por Nic.br, pretende capacitar al personal empleado en las áreas de redes para difundir el uso de IPv6 en Brasil y el resto del mundo.

Existe una breve introducción al mismo que está disponible en online en el sitio dedicado a IPv6 que tiene Nic.br, un lugar muy interesante en el que se puede encontrar mucha información útil.

De ser posible, durante el transcurso del curso estaré comentando cuestiones que crea interesantes y si no lo haré a la vuelta del mismo.

5
mar

Configuración básica de DHCP en Cisco

En un post anterior he explicado en qué consiste el protocolo DHCP. En esta oportunidad la intención es mostrar la configuración de DHCP básico en un router Cisco.

Se asume un router conectado a un switch al que además se conectan dos PCs. Se le indicará al router que brinde direcciones IP de la red 192.168.10.0/24, les indique a los hosts que la ruta por defecto es la 192.168.10.1 y que no asigne la 192.168.10.10, dado que utilizaremos dicha IP para un servidor.

Router(config)# ip dhcp pool LAN_pool
Router(dhcp-config)# network 192.168.10.0 255.255.255.0
Router(dhcp-config)# default-router 192.168.10.1
Router(dhcp-config)# dns-server 192.168.10.2
Router(dhcp-config)# exit
Router(config)# ip dhcp excluded-address 192.168.10.1 192.168.10.10

Ahora bien, para asegurarse que el DHCP está funcionando correctamente es posible consultar las direcciones IP asignadas con el siguiente comando:

Router# show ip dhcp binding
IP address       Client-ID/              Lease expiration        Type
                 Hardware address
192.168.10.2     0060.472D.E92B           --                     Automatic
192.168.10.3     00E0.8F03.BC37           --                     Automatic
3
mar

DHCP: protocolo de configuración dinámica de hosts

DHCP es un protocolo muy difundido en las redes tanto LAN como WAN porque su implementación simplifica mucho el trabajo del administrador de una red. Además, brinda una comodidad a los usuarios móviles debido a que no deben preocuparse por la asignación de direcciones IP en cada nueva red a la que se conectan. El mismo se encuentra definido en la RFC 2131. La función básica de DHCP es asignar direcciones IP de un pool de direcciones a los nuevos hosts que se agregan a la red. Los parámetros más elementales que provee DHCP son la asignación de dirección IP de host, su máscara, la dirección IP de la puerta de enlace y las direcciones de los servidores DNS.

Funcionamiento de DHCP

DHCP se basa en un esquema cliente-servidor para su funcionamiento y tiene básicamente cuatro etapas, desde que un host requiere su configuración hasta que finalmente la obtiene. Para ello, cuando un nuevo equipo se conecta a la red se suceden los siguientes pasos:

  • DHCP discovery: el nuevo host envía una solicitud de descubrimiento de DHCP con el objetivo de ver si existe algún servidor de DHCP en la red. Los parámetros que incluye en el datagrama son los siguientes:
    • ID de transacción.
    • IP origen: 0.0.0.0.
    • Puerto origen: UDP 68.
    • IP destino: 255.255.255.255.
    • Puerto destino: UDP 67.
  • DHCP offer: los servidores de DHCP que puedan estar escuchando en la red tomarán el requerimiento del equipo y responderán con un datagrama de oferta de DHCP. El mismo incluirá la siguiente información:
    • ID de transacción.
    • IP origen: 192.168.1.1 (la IP del servidor DHCP).
    • Puerto origen: UDP 67.
    • IP destino: 255.255.255.255.
    • Puerto destino: UDP 68.
    • Opciones de configuración: IP de host, máscara, puerta de enlace, servidores DNS.
  • DHCP request: un host puede llegar a recibir varias ofertas de DHCP debido a que puede haber múltiples servidores en la red. Lo que hará en tal caso es escoger una de las ofertas y responder a dicha oferta con un DHCP request, que será identificado por el servidor en cuestión por el ID de transacción. Los datos de este datagrama serán iguales a los de DHCP discovery. No obstante, el cliente incluirá además la IP ofrecida con algún otro dato de configuración.
  • DHCP acknowledgement: este último datagrama es el que hace efectiva la cesión de la dirección IP y confirma los parámetros negociados con el cliente. A partir de aquí, el cliente ya cuenta con su dirección IP y el servidor la marca como utilizada.

DHCP utiliza también otros mensajes y es incluso un poco más complejo. No obstante, con lo dicho es suficiente para contar con una introducción al mismo.

1
mar

PPP con autenticación CHAP en Cisco

En este post explicaré cómo utilizar CHAP en PPP para realizar la autenticación. La configuración la llevaré a cabo con la CLI de Cisco. Recomiendo leer antes el post que explica el proceso de autenticación chap donde se detalla cómo se lleva a cabo este tipo de autenticación y el que explica cómo configurar PPP en un equipo Cisco, ya que se continúa con la topología y los comandos descriptos en él (lógicamente, sin la configuración de PAP).

Configuración CHAP

LaPlata# configure terminal
LaPlata(config)# username BuenosAires password 1234
LaPlata(config)# interface serial 0/0/0
LaPlata(config-if)# ppp authentication chap

BuenosAires# configure terminal
BuenosAires(config)# username LaPlata password 1234

Los comandos anteriores nos dejan ante el siguiente escenario:

  • La autenticación es unidireccional, donde LaPlata es el autenticador y BuenosAires el autenticante.
  • El nombre de usuario que se define en un equipo debe coincidir con el hostname del equipo que autenticará contra él.
  • La contraseña debe ser la misma en ambos equipos.

Para lograr una autenticación bidireccional sólo basta con agregar la línea ppp authentication chap a la interfaz serial 0/0/0 en BuenosAires.

BuenosAires# configure terminal
BuenosAires(config)# interface serial 0/0/0
BuenosAires(config-if)# ppp authentication chap