Introducción: La base y sus debilidades
TCP (Protocolo de Control de Transmisión) es la “ruta de envío estándar” de internet. Es la capa de transporte predeterminada para casi todo el tráfico confiable de la red, incluido el uso web (HTTPS), inicios de sesión seguros (SSH), transmisión de video y envío de archivos. Si estás en internet, estás usando TCP. Cuando configuras V2Ray sin especificar un método de transporte, este utiliza TCP de forma predeterminada.
Comprender TCP es fundamental porque establece la línea base tanto del rendimiento como del sigilo. Aunque es extremadamente confiable y garantiza que los datos lleguen intactos, fue diseñado para un internet abierto y amigable. No fue creado para ocultarse de los sistemas modernos de censura. Precisamente su previsibilidad y fiabilidad hacen que sea fácil de identificar y bloquear por los firewalls.
Sección 1: La previsibilidad del TCP “en bruto”
Incluso cuando tus datos están ocultos dentro de una caja segura de V2Ray (usando el cifrado VMess o VLESS), el camión que transporta esa caja (TCP) se mueve de una manera muy específica y reconocible. Los sistemas avanzados de censura, conocidos como Inspección Profunda de Paquetes (DPI), no solo intentan abrir la caja; también observan cómo se mueve el camión, su tamaño y su temporización.
1. El “three-way handshake” (el golpe en la puerta)
Antes de que se pueda intercambiar cualquier dato, TCP requiere una rutina estricta de establecimiento llamada “three-way handshake”. Es como un saludo formal:
- SYN: el cliente dice “quiero conectarme”.
- SYN-ACK: el servidor responde “de acuerdo, conectémonos”.
- ACK: el cliente confirma “perfecto, conexión establecida”.
El problema: este saludo tiene patrones muy específicos de tiempo y tamaño de paquetes. Si un firewall ve exactamente este patrón en un puerto no estándar (por ejemplo, el 10086 en lugar del típico 443), lo marca inmediatamente como sospechoso. Es como alguien llamando a la puerta trasera de un banco de forma demasiado formal: llama la atención.
2. Bloqueo por cabecera de línea (Head-of-Line Blocking)
TCP es estricto con el orden. Garantiza que los datos lleguen exactamente en la secuencia en que se enviaron. El paquete 1 debe llegar y procesarse antes que el paquete 2.
Analogía: imagina un túnel de un solo carril. Si el primer coche se avería (pérdida de paquetes), todos los coches detrás deben detenerse y esperar. No importa que los demás estén en perfecto estado; el carril queda bloqueado.
Resultado: en una red congestionada o de mala calidad, la pérdida de un solo paquete puede congelar por completo un video, un juego o una descarga mientras V2Ray espera a que ese paquete se reenvíe. Este fenómeno se llama Head-of-Line Blocking (HOLB) y es una de las principales causas de conexiones lentas e inestables en redes poco fiables.
3. Huella estadística
La navegación web normal es “a ráfagas”: haces clic en un enlace, llega una ráfaga de datos para cargar la página y luego hay silencio mientras lees. Los túneles de V2Ray, en cambio, suelen parecer un flujo largo, continuo y estable de datos, similar a una descarga muy larga o a una videollamada. Esta “conexión de larga duración” destaca ante los firewalls modernos, que pueden identificarla y limitarla o bloquearla solo por este patrón estadístico.
Sección 2: Ofuscación básica TCP en V2Ray (encabezado HTTP)
Para ayudar a ocultar una conexión TCP “desnuda” frente a filtros básicos, V2Ray ofrece un disfraz simple llamado Header Obfuscation. Funciona como ponerle un disfraz a tus paquetes de datos: agrega información falsa al inicio de la conexión para que parezca que alguien está navegando por un sitio web normal.
Configuración de tcpSettings
Esta configuración va dentro del bloque streamSettings del Inbound (en el servidor) o del Outbound (en el cliente).
- network: «tcp»
Indica a V2Ray que use TCP estándar como protocolo de transporte. Es la base sobre la que se añade el disfraz. - security: «none»
Asegura que no se agregue una capa extra de TLS aquí. Se confía en el cifrado VMess/VLESS y en el disfraz HTTP. - type: «http»
Especifica el tipo de disfraz a usar. Simula una solicitud HTTP web estándar. - request (objeto)
Detalles específicos del disfraz (host falso, user-agent falso del navegador). Hace que el tráfico parezca legítimo para filtros antiguos y básicos.
Ejemplo práctico: TCP con ofuscación HTTP
En este ejemplo completo, configuramos V2Ray para que “se vista” como un navegador Chrome en Windows visitando www.google.com.
"streamSettings": {
"network": "tcp",
"security": "none",
"tcpSettings": {
"header": {
"type": "http",
"request": {
"version": "1.1",
"method": "GET",
"path": ["/"],
"headers": {
"Host": ["www.google.com", "www.amazon.com"],
"User-Agent": [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
],
"Accept-Encoding": ["gzip, deflate"],
"Connection": ["keep-alive"],
"Pragma": "no-cache"
}
}
}
}
}
Por qué esto es (en gran parte) obsoleto
Aunque este truco funcionaba en el pasado, los firewalls modernos usan una técnica llamada Active Probing. Cuando detectan una solicitud falsa con Host: www.google.com, el propio firewall puede intentar conectarse a tu servidor y preguntar: “¿de verdad eres Google?”. Cuando tu servidor V2Ray no responde como lo haría un servidor real de Google, el firewall detecta el engaño y bloquea la conexión. Este método ya no es fiable contra censura avanzada.
Sección 3: Cómo probar tu configuración TCP
Antes de pasar a configuraciones más complejas, es esencial verificar que tu configuración básica TCP funcione.
- Comprobación en el servidor: revisa los logs de V2Ray en tu VPS (
journalctl -u v2ray -fo/var/log/v2ray/access.log). Busca conexiones entrantes exitosas cuando intentes conectarte desde el cliente. - Comprobación en el cliente: en los logs del cliente V2Ray, busca mensajes de establecimiento de conexión. Una conexión exitosa mostrará que el handshake se completó.
- Prueba con Telnet: desde la línea de comandos de tu computadora, usa telnet para verificar si el puerto está abierto y acepta conexiones TCP. Comando:
telnet tu.ip.del.servidor 10086Éxito: la pantalla queda en blanco o muestra “Connected”.
Fallo: aparece “Connection Refused” o se agota el tiempo de espera.
Sección 4: Cuándo usar TCP (y cuándo avanzar)
A pesar de sus debilidades, TCP no es inútil. Tiene su lugar en escenarios específicos.
Usa TCP en bruto cuando:
- Configuración y diagnóstico: es la base más simple. Si no puedes hacer funcionar VMess + TCP, no tiene sentido añadir capas más complejas.
- Redes libres: si estás en un país sin censura y solo quieres un túnel privado para protegerte en WiFi público.
- Servidores de retransmisión: al conectar dos servidores que controlas, TCP suele ser más rápido y estable.
Evita TCP en bruto cuando:
- Alta censura: en países con firewalls avanzados (China, Irán, Rusia), TCP se detecta y bloquea rápidamente.
- Uso de CDN: no puedes ocultar TCP en bruto detrás de un CDN como Cloudflare.
- Redes inestables: el Head-of-Line Blocking hará que la conexión sea lenta y con pausas constantes.
Conclusión
TCP en bruto es el sabor “vainilla” de los transportes de V2Ray: simple y confiable en buenas condiciones, pero fácil de detectar y bloquear. Para un proxy moderno y sigiloso, diseñado para sobrevivir en entornos de red hostiles, es necesario avanzar hacia transportes más avanzados que se mezclen mejor con el tráfico legítimo.
Próximo artículo: el Artículo 12 abordará el transporte WebSocket de V2Ray y explicará por qué se ha convertido en el estándar moderno para el sigilo y la integración con CDN.