Túneles IPv6
Introducción
En este post detallado, exploramos el proceso de configuración de túneles IPv6 a IPv4 y viceversa en entornos Linux y Cisco. A medida que la migración hacia IPv6 gana importancia, la capacidad de establecer comunicaciones entre redes IPv4 e IPv6 se vuelve fundamental. Cubriremos los conceptos básicos de la configuración de túneles, incluyendo los tipos de túneles más comunes, como 6to4 y Teredo. Además, proporcionaremos instrucciones paso a paso para la configuración tanto en sistemas Linux como en dispositivos Cisco.
Túneles 6to4 en Cisco
1. Configuración de las interfaces de red de los routers
R1
- FastEthernet 0/0
- Prefijo de red:
3333:db7::/64
- Enlace:
FE80::C801:20FF:FE69:0
- Global:
3333:DB7::C801:20FF:FE69:0
- Prefijo de red:
- FastEthernet 1/0
- FastEthernet 2/0
Para los clientes del router R1, configuraremos SLAAC:
R2
- FastEthernet 0/0
- Prefijo de red:
3333:db7:1::/64
- Enlace:
FE80::C802:20FF:FE79:0
- Global:
3333:DB7:1:0:C802:20FF:FE79:0
- Prefijo de red:
- FastEthernet 1/0
- FastEthernet 2/0
Para los clientes del router R2, configuraremos SLAAC:
R3
- FastEthernet 0/0
- Prefijo de red:
3333:db7:2::/64
- Enlace:
FE80::C803:20FF:FE89:0
- Global:
3333:DB7:2:0:C803:20FF:FE89:0
- Prefijo de red:
- FastEthernet 1/0
- FastEthernet 2/0
Para los clientes del router R3, configuraremos SLAAC:
Nota: En este escenario, no es necesario configurar rutas IPv4 manualmente, ya que con la configuración dada en las tarjetas de red, el tráfico será enrutable en IPv4.
2. Túneles GRE
GRE es un protocolo de túnel VPN de sitio a sitio no seguro que puede encapsular una amplia variedad de paquetes de protocolos dentro de túneles IP. Esto permite que una organización transmita otros protocolos a través de una WAN basada en IP.
Esto permite agregar una cabecera IPv4 a un paquete IPv6 para que pueda viajar por redes IPv4.
R1 → R3
Crearemos una interfaz de túnel:
Configuración de Túnel GRE con IPv6 sobre IPv4
Establecemos el modo del túnel a GRE con IP que encapsulará nuestros paquetes IPv6 dentro de IPv4:
Le asignamos una dirección IPv4 a nuestro túnel:
Establecemos la dirección WAN de nuestro router, FastEthernet 1/0:
Establecemos la dirección WAN del extremo del túnel (R2):
Habilitamos OSPF, que es un protocolo de enrutamiento dinámico:
Este comando agrega la red del túnel a OSPF:
Asignamos una dirección IPv6 a nuestro túnel, con el prefijo de red 2002
a partir de la IPv4 del router 2002:0A00:0001::1/64
:
Creamos la ruta para llegar a la red:
Creamos una interfaz de túnel:
Establecemos el modo del túnel a GRE con IP que encapsulará nuestros paquetes IPv6 dentro de IPv4:
Le asignamos una dirección IPv4 a nuestro túnel:
Establecemos la dirección WAN de nuestro router, FastEthernet 1/0:
Establecemos la dirección WAN del extremo del túnel (R2):
Habilitamos OSPF, que es un protocolo de enrutamiento dinámico:
Este comando agrega la red del túnel a OSPF:
Asignamos una dirección IPv6 a nuestro túnel, con el prefijo de red 2002
a partir de la IPv4 del router 2002:0A00:0002::1/64
:
Creamos la ruta para llegar a la red:
Creamos una interfaz de túnel:
Establecemos el modo del túnel a GRE con IP que encapsulará nuestros paquetes IPv6 dentro de IPv4:
Le asignamos una dirección IPv4 a nuestro túnel:
Establecemos la dirección WAN de nuestro router, FastEthernet 1/0:
Establecemos la dirección WAN del extremo del túnel (R2):
Habilitamos OSPF, que es un protocolo de enrutamiento dinámico:
Este comando agrega la red del túnel a OSPF:
Asignamos una dirección IPv6 a nuestro túnel, con el prefijo de red 2002
a partir de la IPv4 del router 2002:1400:0001
:
Creamos la ruta para llegar a la red:
R3 → R1
Creamos una interfaz de túnel:
Establecemos el modo del túnel a GRE con IP, que encapsulará nuestros paquetes IPv6 dentro de IPv4:
Asignamos una dirección IPv4 a nuestro túnel:
Establecemos la dirección WAN de nuestro router, FastEthernet 1/0:
Establecemos la dirección WAN del extremo del túnel (R2):
Habilitamos OSPF, que es un protocolo de enrutamiento dinámico:
Este comando agrega la red del túnel a OSPF:
Asignamos una dirección IPv6 a nuestro túnel, con el prefijo de red 2002
a partir de la IPv4 del router 2002:1400:0002::1/64
:
Creamos la ruta para llegar a la red:
R3 → R2
Creamos una interfaz de túnel:
Establecemos el modo del túnel a GRE con IP, que encapsulará nuestros paquetes IPv6 dentro de IPv4:
Asignamos una dirección IPv4 a nuestro túnel:
Establecemos la dirección WAN de nuestro router, FastEthernet 1/0:
Establecemos la dirección WAN del extremo del túnel (R2):
Habilitamos OSPF, que es un protocolo de enrutamiento dinámico:
Este comando agrega la red del túnel a OSPF:
Asignamos una dirección IPv6 a nuestro túnel, con el prefijo de red 2002
a partir de la IPv4 del router 30.0.0.2 → 2002:1e00:0002::1/64
:
Creamos la ruta para llegar a la red:
R2 → R3
Creamos una interfaz de túnel:
Establecemos el modo del túnel a GRE con IP, que encapsulará nuestros paquetes IPv6 dentro de IPv4:
Asignamos una dirección IPv4 a nuestro túnel:
Establecemos la dirección WAN de nuestro router, FastEthernet 1/0:
Establecemos la dirección WAN del extremo del túnel (R2):
Habilitamos OSPF, que es un protocolo de enrutamiento dinámico:
Este comando agrega la red del túnel a OSPF:
Asignamos una dirección IPv6 a nuestro túnel, con el prefijo de red 2002
a partir de la IPv4 del router 30.0.0.1 → 2002:1e00:0001::1/64
:
Creamos la ruta para llegar a la red:
3. Comprobaciones de funcionamiento
Vamos a comprobar que se han creado los túneles. Para ello, introduciremos el siguiente comando en los tres routers de nuestro escenario:
Esto aparecerá una vez ambos extremos del túnel se hayan creado. Si no, no aparecerá nada. En nuestro caso, podemos ver que los túneles se han creado exitosamente.
Ping
Comprobaremos el funcionamiento de los túneles haciendo un ping.
- PC1 → 3333:db7::e60:ddff:fea6:0
- PC2 → 3333:db7:1:0:e2e:3bff:fe83:0
- PC3 → 3333:db7:2:0:e62:5dff:fedf:0
PC1 → PC2
PC1 → PC3
PC2 → PC1
PC2 → PC3
PC3 → PC1
PC3 → PC2
Vemos que tenemos conectividad entre todas nuestras máquinas del escenario con IPv6, aunque tengamos que atravesar redes IPv4.
Traceroute
Vamos a comprobar la trayectoria que siguen los paquetes.
Trayectoria que sigue un paquete PC1 a PC2:
Trayectoria que sigue un paquete PC1 a PC3:
Trayectoria que sigue un paquete PC2 a PC1:
Trayectoria que sigue un paquete PC2 a PC3:
Trayectoria que sigue un paquete PC3 a PC1:
Trayectoria que sigue un paquete PC3 a PC2:
4. Estudio de un paquete encapsulado
Antes de pasar por el túnel
Paquete que viaja de PC1 a PC2.
Vemos que, al no haber atravesado el túnel aún, no tiene las cabeceras IPv4, solo tiene las IPv6. Podemos ver que el origen es PC1 y el destino es PC3:
Veremos cómo, en el siguiente tramo, una vez atraviese el túnel, el router le pondrá una cabecera IPv4 para que pueda atravesar ese tramo.
Después de atravesar el túnel
Si nos fijamos en un paquete que ha atravesado un túnel, podemos ver que tiene “2 niveles de red”:
Si nos fijamos en el nivel de red, vemos que las IPs de origen y destino son las de los extremos del túnel. Además, vemos que utiliza el protocolo 47, lo que significa que ha atravesado un túnel GRE.
Por último, podemos ver en la cabecera IPv6 que no se distingue de una que no ha atravesado un túnel.
Una vez llega a la red de destino
Vemos que, una vez llega al destino (es decir, una vez ha recorrido el tramo IPv4 y vuelve a entrar a la red IPv6), el router eliminará la cabecera correspondiente a IPv4 y dejará la de IPv6 para que el paquete llegue a su destino.
Vemos que la cabecera IPv6 sigue intacta, es la misma durante todo el trayecto del paquete:
Túneles 6to4 en Linux
1. Configuración de las interfaces de red
Voy a respetar las direcciones IPv4 del escenario con Cisco.
R1
Para aplicar la configuración, haremos un sudo systemctl restart networking.service
.
Voy a configurar SLAAC para configurar los clientes de nuestra red IPv6. Previamente, tendremos que tener instalado el paquete radvd
con sudo apt install radvd
.
Una vez configurado el servicio, reiniciaremos radvd
y nuestros clientes se configurarán automáticamente con el prefijo indicado.
R2
Para aplicar la configuración, haremos un sudo systemctl restart networking.service
.
Voy a configurar SLAAC para configurar los clientes de nuestra red IPv6. Previamente, tendremos que tener instalado el paquete radvd
con sudo apt install radvd
.
Una vez configurado el servicio, reiniciaremos radvd
y nuestros clientes se configurarán automáticamente con el prefijo indicado.
R3
Para aplicar la configuración, haremos un sudo systemctl restart networking.service
.
Voy a configurar SLAAC para configurar los clientes de nuestra red IPv6. Previamente, tendremos que tener instalado el paquete radvd
con sudo apt install radvd
.
Una vez configurado el servicio, reiniciaremos radvd
y nuestros clientes se configurarán automáticamente con el prefijo indicado.
Nota: En este escenario no es necesario que configuremos rutas IPv4 manualmente, ya que con la configuración dada en las tarjetas de red, el escenario estará enrutado en IPv4.
Sin embargo, será necesario para todos los routers que habilitemos el bit de forwarding tanto para IPv4 como para IPv6.
Para ello, editamos el fichero sudo nano /etc/sysctl.conf
y descomentamos las siguientes líneas:
Esto mismo lo repetiremos para cada uno de nuestros routers y reiniciaremos para que se apliquen los cambios.
2. Configuración de los túneles SIT
El funcionamiento es similar a los túneles GRE en Cisco. Este cogerá nuestros paquetes y, a través de una interfaz tipo túnel, le añadirá una cabecera IPv4 para que pueda atravesar redes IPv4.
Una vez el túnel esté levantado, le diremos al router que, para llegar al prefijo de la red X, tendrá que utilizar este túnel para que le añada la cabecera a nuestros paquetes.
Para mayor comodidad, he creado un pequeño script en cada router con los comandos necesarios para que el túnel funcione.
Consta de 4 comandos:
- Creará la interfaz de túnel con el destino y, a continuación, el origen de este.
- Levantará la tarjeta de red.
- Le asignará la IPv6 al túnel a partir de la dirección IPv4 de origen del mismo.
- Crearemos la ruta del tráfico que utilizará el túnel.
Podemos ponerle al túnel el nombre que deseemos. En mi caso, he puesto tunnel
seguido de un número para poder identificarlos.
Túneles de R2
Así quedaría el “script” de los túneles de R2:
Una vez creado el script, le daremos permiso y lo ejecutaremos:
Comprobaremos que las interfaces se han creado correctamente:
Túneles de R3
Así quedaría el “script” de los túneles de R3:
Una vez creado el script, le daremos permiso y lo ejecutaremos:
Comprobaremos que las interfaces se han creado correctamente:
3. Comprobación de funcionamiento
- PC1 → 3333:db7::e47:bfff:fe86:0
- PC2 → 2222:db7::ebc:f6ff:fe7d:0
- PC3 → 4444:db7::e43:78ff:fec6:0
Ping
PC1 → PC2
PC1 → PC3
PC2 → PC1
PC2 → PC3
PC3 → PC1
PC3 → PC2
Traceroute
Una vez que hemos comprobado que tenemos conectividad, vamos a ver si los paquetes utilizan los túneles.
PC1 → PC2
PC1 → PC3
PC2 → PC1
PC2 → PC3
PC3 → PC1
PC3 → PC2
4. Estudio de un paquete encapsulado
Antes de pasar por el túnel
Paquete que viaja de PC1 a PC2.
Vemos que, al no haber atravesado el túnel aún, no tiene las cabeceras IPv4, solo tiene las IPv6. Podemos ver que el origen es PC1 y el destino es PC3:
Veremos cómo, en el siguiente tramo, una vez atraviese el túnel, el router le pondrá una cabecera IPv4 para que pueda atravesar ese tramo.
Después de atravesar el túnel
Si nos fijamos en un paquete que ha atravesado un túnel, podemos ver que tiene “2 niveles de red”.
Si nos fijamos en el nivel de red, vemos que las IPs de origen y destino son las de los extremos del túnel. Además, vemos que utiliza el protocolo 47, lo que significa que ha atravesado un túnel GRE.
Por último, podemos ver en la cabecera IPv6 que no se distingue de una que no ha atravesado un túnel.
Una vez llega a la red de destino
Vemos que, una vez llega al destino (es decir, una vez ha recorrido el tramo IPv4 y vuelve a entrar a la red IPv6), el router eliminará la cabecera correspondiente a IPv4 y dejará la de IPv6 para que el paquete llegue a su destino.
Vemos que la cabecera IPv6 sigue intacta, es la misma durante todo el trayecto del paquete: