Introducción al tunneling


En las comunicaciones de red, el término "Tunneling", también conocido como "túnel", se refiere a la forma en que un protocolo de red se encapsula dentro de otro protocolo de red

Introducción al tunneling
oscar Escrito por oscar 17 July 2023 2481 0

En el mundo de las redes y la infraestructura, el tunneling, también conocido como tunelización, es una técnica que permite transportar datos entre dos puntos a través de una red intermedia. La idea fundamental consiste en tomar un paquete de datos y encapsularlo dentro de otro paquete para que pueda viajar por una red que, en condiciones normales, podría no soportar directamente el protocolo o la comunicación original.

Introducción a tunneling
Introducción a tunneling

Una forma sencilla de entenderlo es imaginar un túnel físico. Una carretera puede tener obstáculos, montañas o fronteras que dificultan el desplazamiento. El túnel crea un camino controlado entre dos puntos. En redes ocurre algo parecido: un túnel crea un canal lógico entre dos extremos y permite que la información viaje a través de una infraestructura intermedia.

Este concepto es fundamental para comprender tecnologías como VPN, SSH Tunneling, port forwarding, reverse tunneling, IPsec, WireGuard y otras soluciones utilizadas en redes, cloud computing, DevOps y ciberseguridad.

¿Qué es Tunneling?

El tunneling es una técnica de comunicación en la que un protocolo o paquete de red es encapsulado dentro de otro protocolo o paquete para transportar información entre dos puntos a través de una red intermedia.

De forma simplificada, el proceso puede representarse así:

que es tunneling
Que es tunneling

El dispositivo o servidor que recibe el paquete externo puede desencapsularlo, extraer el paquete original y continuar su procesamiento.

La tunelización funciona principalmente mediante dos operaciones:

Encapsulación

La encapsulación consiste en envolver el paquete original dentro de otro paquete. El paquete externo contiene la información necesaria para transportar los datos hasta el extremo remoto del túnel.

Por ejemplo, un paquete IP original podría ser transportado dentro de otro protocolo utilizado por una VPN o por un mecanismo de forwarding.

Desencapsulación

Cuando el paquete llega al extremo final del túnel, el sistema retira la capa externa y recupera el paquete original.

Origen 
│ 
Paquete original 
▼ 
[ Encapsulación ] 
│ 
Paquete encapsulado 
▼ 
======================== RED INTERMEDIA ======================== 
│ 
Paquete encapsulado 
▼ 
[ Desencapsulación ] 
│ 
Paquete original 
▼ 
Destino 

Conceptos fundamentales relacionados

Tunnel Endpoints

Los tunnel endpoints son los extremos del túnel. Normalmente existen dos:

Por ejemplo, en una VPN entre dos oficinas, cada router puede actuar como un extremo del túnel.

Encapsulación

Es el proceso de introducir un protocolo dentro de otro. Esta es la característica técnica principal de la tunelización.

Desencapsulación

Es el proceso inverso. El receptor elimina la información de transporte externa y obtiene el paquete original.

Protocolo de transporte del túnel

El túnel necesita algún mecanismo para transportar la información. Dependiendo del caso, puede utilizar protocolos o tecnologías como:

Cifrado

Es importante entender que tunneling y cifrado no son exactamente lo mismo.

Un túnel puede transportar información sin cifrar. Por ejemplo, algunas técnicas de encapsulación únicamente cambian la forma en que se transporta el paquete.

Sin embargo, tecnologías como una VPN normalmente combinan:

Por eso, no todo túnel es automáticamente seguro. La seguridad depende del protocolo y de la configuración utilizados.

Tunneling y Routing: ¿son lo mismo?

No. Aunque ambos permiten transportar datos entre redes, cumplen funciones diferentes.

El routing decide cuál es el camino que debe seguir un paquete para llegar a su destino. Los routers utilizan tablas de enrutamiento y protocolos de routing para tomar estas decisiones.

El tunneling, en cambio, crea una forma de transportar un paquete dentro de otro mecanismo de comunicación.

Tunneling y routing
Tunneling y routing

En la práctica, ambas técnicas pueden trabajar juntas. Por ejemplo, una VPN puede crear un túnel entre dos servidores y, dentro de ese túnel, el tráfico puede seguir utilizando mecanismos normales de routing.

¿Dónde puedo utilizar Tunneling?

1. VPN entre usuarios y redes

Uno de los usos más conocidos del tunneling son las VPN. Una VPN crea un canal lógico entre un cliente y una red remota o entre dos redes.

Usuario │ │ Internet ▼ ┌──────────────┐ │ VPN Tunnel │ └──────────────┘ │ ▼ Red privada 10.0.0.0/24 

Esto permite que un usuario remoto pueda acceder a recursos internos como:

2. Conectar dos redes mediante Site-to-Site VPN

Una empresa puede tener dos oficinas o dos redes cloud separadas. Mediante un túnel, ambas redes pueden comunicarse como si existiera una conexión privada entre ellas.

Este modelo es muy común en infraestructuras empresariales y cloud.

3. SSH Tunneling

SSH puede utilizarse para transportar conexiones a través de una sesión SSH. Esta técnica es especialmente útil para acceder de forma segura a servicios que no están directamente expuestos a Internet.

Por ejemplo, puedes tener:

Tu ordenador 
│ 
SSH 
▼ 
Servidor intermedio 
│ 
Red interna 
▼ 
Base de datos privada 

El servidor SSH actúa como punto intermedio. Esto permite acceder a servicios internos sin tener que publicar directamente la base de datos en Internet.

Un ejemplo conceptual de local port forwarding sería:

ssh -L 5433:localhost:5432 usuario@servidor 

En este caso, una conexión realizada contra el puerto local 5433 puede ser transportada mediante SSH hasta el puerto 5432 del destino accesible desde el servidor remoto.

4. Reverse Tunneling

El reverse tunneling es especialmente útil cuando una máquina está detrás de un firewall, NAT o una red sin IP pública.

Un caso común sería:

Máquina local 192.168.1.100 
│ 
Conexión saliente 
▼ 
Servidor público IP pública 
▲  
│ 
Acceso mediante el túnel 
│ 
Usuario externo 

La máquina interna inicia una conexión hacia el servidor público. Una vez establecido el túnel, el servidor público puede utilizar esa conexión para acceder a un servicio de la máquina interna.

Este patrón es muy utilizado en:

Por ejemplo, en una arquitectura con una máquina local detrás de un router y una máquina virtual pública en la nube, puedes establecer una conexión persistente mediante SSH y autossh.

5. Cloud Computing

En entornos cloud, el tunneling puede utilizarse para conectar redes privadas, centros de datos y servicios que no deben exponerse públicamente.

Un ejemplo conceptual sería:

Red local 
│ 
Túnel seguro 
▼ 
Cloud VPC 
│ 
├── Aplicación 
├── Base de datos 
└── Kubernetes 

Esto permite que determinados servicios cloud sean accesibles desde una red privada sin necesidad de abrirlos directamente a Internet.

6. DevOps e infraestructura

En DevOps, los túneles pueden utilizarse para acceder a componentes de infraestructura que no deben estar públicamente expuestos.

Por ejemplo:

Un ejemplo típico sería utilizar un túnel SSH para acceder a PostgreSQL:

ssh -L 5432:10.0.0.20:5432 usuario@servidor-bastion 

El servidor bastion puede tener acceso a la red privada donde se encuentra PostgreSQL, mientras que el usuario solamente necesita conectarse al bastion.

7. Kubernetes

En Kubernetes, el tunneling aparece en varias situaciones, especialmente cuando se necesita acceder a servicios internos del cluster desde una máquina externa.

Por ejemplo:

kubectl port-forward service/mi-servicio 8080:80 

El concepto es similar: una conexión local se transporta hasta un recurso que normalmente no está expuesto directamente fuera del cluster.

Esto resulta útil para:

8. IoT y dispositivos remotos

Los dispositivos IoT normalmente se encuentran detrás de routers, redes privadas o conexiones con NAT. En estos casos, un dispositivo puede establecer una conexión saliente hacia un servidor central y mantener un túnel persistente.

Dispositivo IoT │ │ Conexión saliente ▼ Servidor central │ │ Túnel persistente ▼ Administrador 

Esto permite administrar dispositivos sin necesidad de abrir puertos entrantes en cada red donde se encuentran instalados.

Principales tipos de Tunneling

VPN Tunneling

Se utiliza para crear conexiones privadas sobre redes públicas. Normalmente combina encapsulación con mecanismos de autenticación y cifrado.

SSH Tunneling

Utiliza una conexión SSH como canal para transportar conexiones de red.

Sus formas más conocidas son:

GRE Tunneling

GRE permite encapsular determinados protocolos dentro de paquetes IP. Es utilizado para conectar redes y crear túneles entre routers.

IPsec Tunneling

IPsec se utiliza frecuentemente para crear túneles VPN seguros entre dispositivos o redes.

WireGuard

WireGuard es una tecnología moderna utilizada para crear VPNs. En una arquitectura basada en WireGuard, los dispositivos establecen una comunicación privada mediante una interfaz de red virtual y el tráfico se transporta de forma segura a través de la red subyacente.

Tunneling, NAT y Firewalls

Uno de los motivos más importantes para utilizar tunneling es superar limitaciones de conectividad causadas por NAT y firewalls.

Supongamos que tenemos un servidor local:

Internet │ ▼ Router / NAT │ ▼ Servidor local 192.168.1.50 

Desde Internet, el servidor local puede no ser directamente accesible porque utiliza una dirección privada. Sin embargo, el servidor puede iniciar una conexión saliente hacia un servidor público:

Servidor local │ │ Conexión saliente permitida ▼ Servidor público │ │ ▼ Acceso mediante túnel 

Este patrón es uno de los fundamentos de los túneles reversos.

Ventajas del Tunneling

Seguridad

Cuando el túnel utiliza un protocolo seguro, puede proteger la comunicación contra la interceptación y manipulación de los datos.

Acceso remoto

Permite acceder a recursos que se encuentran en redes privadas o que no tienen una dirección pública.

Integración de redes

Permite conectar redes que están separadas físicamente o que utilizan diferentes infraestructuras de comunicación.

Abstracción de la infraestructura

Las aplicaciones pueden comunicarse con un destino remoto sin necesitar conocer todos los detalles de la red intermedia.

Riesgos y consideraciones de seguridad

Un túnel no debe considerarse automáticamente seguro. Si se configura incorrectamente, puede convertirse en un punto de entrada no autorizado a una red.

Al utilizar tunneling es importante considerar:

Por ejemplo, crear un túnel SSH hacia un servidor con acceso completo a toda una red interna puede ser peligroso si el usuario no necesita realmente ese nivel de acceso.

Ejemplo conceptual completo

Imagina que tienes una aplicación web ejecutándose en tu ordenador:

localhost:8000 

Tu ordenador está detrás de un router y no tiene una dirección IP pública. Sin embargo, tienes un servidor en la nube con una IP pública.

Ordenador local localhost:8000 │ │ Túnel SSH ▼ Servidor cloud IP pública │ ▼ Usuario externo 

El ordenador local inicia una conexión hacia el servidor cloud. El servidor cloud puede utilizar el túnel para redirigir tráfico hacia el servicio local.

Este concepto puede utilizarse para construir soluciones como:

Conclusión

El tunneling es una técnica fundamental de redes que permite transportar datos entre dos puntos mediante la encapsulación de paquetes dentro de otro mecanismo de comunicación.

Su importancia radica en que permite resolver problemas muy comunes de infraestructura: conectar redes separadas, acceder a servicios privados, atravesar NAT, trabajar con firewalls, conectar entornos locales con cloud y crear comunicaciones seguras mediante VPNs.

Desde el punto de vista de un profesional de DevOps o infraestructura, el tunneling es especialmente importante porque aparece constantemente en tecnologías como SSH, VPN, WireGuard, Kubernetes, cloud networking, bastion hosts, reverse proxies y sistemas de acceso remoto.

Una buena forma de continuar aprendiendo es estudiar el tunneling en este orden: primero encapsulación y redes IP, después port forwarding, posteriormente SSH tunneling, reverse tunneling, VPNs y finalmente soluciones más avanzadas como WireGuard, IPsec y túneles entre redes cloud.

Fuentes consultadas

Cloudflare: ¿Qué es la tunelización?

Cloudflare: What is tunneling?


Comentario

Debe aceptar antes de enviar