Si desea que todo el tráfico de su red pase a través de un proxy — sin configuración manual en cada computadora portátil, teléfono inteligente o servidor — un proxy transparente en el router OpenWrt a través del mecanismo TPROXY es justo lo que necesita. En esta guía, analizaremos la configuración completa: desde la instalación de los paquetes necesarios hasta las reglas de iptables y la verificación del funcionamiento.
Qué es TPROXY y para qué sirve
TPROXY (Proxy Transparente) es un mecanismo del núcleo de Linux que permite interceptar tráfico TCP y UDP sin alterar la dirección IP de destino en el paquete. A diferencia de la redirección NAT clásica (REDIRECT), TPROXY conserva la dirección original del destinatario, lo que es crucial para el correcto funcionamiento del cliente proxy: este "ve" a dónde intenta conectarse exactamente el dispositivo en la red.
¿Para qué se necesita esto en la práctica? Imagina que tienes una oficina o un laboratorio doméstico con decenas de dispositivos: computadoras, teléfonos inteligentes, dispositivos IoT, máquinas virtuales de prueba. Configurar el proxy manualmente en cada uno de ellos significa horas de trabajo y un dolor de cabeza constante al cambiar el servidor proxy. Un proxy transparente en el router resuelve el problema de manera centralizada: todo el tráfico de la red pasa automáticamente a través del proxy, y los dispositivos ni siquiera se dan cuenta.
Escenarios típicos de uso de TPROXY en OpenWrt:
- Enrutamiento de todo el tráfico a través de proxies residenciales o móviles para eludir bloqueos geográficos
- Monitoreo y filtrado centralizados del tráfico en la red corporativa
- Pruebas de aplicaciones a través de proxies de diferentes regiones sin cambiar la configuración en las máquinas cliente
- Suplantación automática de IP para todos los dispositivos conectados al router
- Trabajo con navegadores anti-detección (Dolphin Anty, AdsPower, GoLogin) a través de una única puerta de enlace
La ventaja clave de TPROXY sobre el REDIRECT normal: soporte para UDP. Esto es importante para protocolos modernos (QUIC, DNS sobre UDP, tráfico de juegos), que REDIRECT simplemente no puede manejar correctamente.
Cómo funciona un proxy transparente en OpenWrt
El esquema de funcionamiento de TPROXY en OpenWrt es el siguiente:
- Un dispositivo en la red envía un paquete a una dirección IP externa (por ejemplo,
93.184.216.34:443). - El router intercepta el paquete con la regla
iptables TPROXYaún en la cadena PREROUTING — antes de tomar la decisión de enrutamiento. - El paquete se marca con un fwmark especial y se redirige al socket local del cliente proxy (por ejemplo, al puerto 7893).
- El cliente proxy (redsocks, Xray, sing-box) "ve" la dirección de destino original a través del mecanismo
IP_TRANSPARENTy establece la conexión a través del servidor proxy remoto. - La respuesta se devuelve al dispositivo — de manera transparente, sin cambios en el lado del cliente.
💡 Punto importante
TPROXY solo funciona en la cadena PREROUTING de la tabla mangle. Esto significa que solo se intercepta el tráfico de tránsito (de los dispositivos de la red), pero no el tráfico del propio router. Para interceptar el tráfico del router, se requerirá una configuración adicional a través de OUTPUT y enrutamiento a través de loopback.
Requisitos: router, firmware, paquetes
Antes de comenzar la configuración, asegúrese de que su configuración cumpla con los requisitos mínimos.
Requisitos para el router
| Parámetro | Mínimo | Recomendado |
|---|---|---|
| RAM | 64 MB | 256 MB o más |
| Flash / Almacenamiento | 16 MB | 128 MB o más |
| Arquitectura de CPU | MIPS, ARM | ARM Cortex-A7/A53 y superior |
| Versión de OpenWrt | 21.02 | 23.05 o snapshot |
| Núcleo de Linux | 5.4 con TPROXY | 5.15 / 6.1 |
Modelos bien establecidos para esta tarea: GL.iNet GL-MT6000 (Flint 2), Xiaomi AX3000T, Banana Pi BPi-R3, Raspberry Pi 4 con OpenWrt, así como cualquier router x86 con suficiente RAM.
Verificación del soporte de TPROXY en el núcleo
Conéctese al router por SSH y ejecute:
zcat /proc/config.gz | grep TPROXY
Debería ver la línea CONFIG_NETFILTER_XT_TARGET_TPROXY=y o =m. Si la salida está vacía, el núcleo no soporta TPROXY y será necesaria una recompilación o un cambio de firmware.
Instalación de los paquetes necesarios
Para que TPROXY funcione en OpenWrt, se necesitarán varios paquetes. Conéctese por SSH y actualice la lista de paquetes:
opkg update
Instale los componentes necesarios:
# Módulo del núcleo para TPROXY
opkg install kmod-nft-tproxy
# Si usa iptables (stack antiguo)
opkg install iptables-mod-tproxy
# Utilidades de ip rule / ip route
opkg install ip-full
# Adicionalmente para trabajar con fwmark
opkg install kmod-ipt-tproxy
Dependiendo del cliente proxy elegido, instale uno de los siguientes paquetes:
| Cliente proxy | Paquete OpenWrt | Soporte para TPROXY |
|---|---|---|
| redsocks | redsocks |
TCP (UDP a través de redsocks2) |
| Xray-core | xray-core |
TCP + UDP (nativamente) |
| sing-box | sing-box |
TCP + UDP (nativamente) |
| mihomo (Clash Meta) | mihomo |
TCP + UDP (nativamente) |
Para la mayoría de las tareas, recomendamos sing-box o mihomo — ambos soportan TPROXY de manera nativa, incluyendo UDP, y tienen un formato de configuración conveniente.
Configuración de las reglas de iptables y ip rule
Este es un paso clave. Necesitamos hacer tres cosas: marcar los paquetes necesarios con fwmark, configurar una tabla de enrutamiento especial y agregar una regla TPROXY en iptables.
Paso 1: Crear la tabla de enrutamiento
# Agregamos una ruta especial: los paquetes marcados van a loopback
ip rule add fwmark 1 table 100
ip route add local default dev lo table 100
Esto le dice al núcleo: "todos los paquetes con la etiqueta fwmark=1 considéralos locales y envíalos a loopback". Así es como el cliente proxy podrá recibirlos a través de su socket.
Paso 2: Reglas de iptables (mangle/PREROUTING)
# Creamos una cadena para TPROXY
iptables -t mangle -N TPROXY_RULES
# Excluimos direcciones locales (no las proxy)
iptables -t mangle -A TPROXY_RULES -d 0.0.0.0/8 -j RETURN
iptables -t mangle -A TPROXY_RULES -d 10.0.0.0/8 -j RETURN
iptables -t mangle -A TPROXY_RULES -d 127.0.0.0/8 -j RETURN
iptables -t mangle -A TPROXY_RULES -d 169.254.0.0/16 -j RETURN
iptables -t mangle -A TPROXY_RULES -d 172.16.0.0/12 -j RETURN
iptables -t mangle -A TPROXY_RULES -d 192.168.0.0/16 -j RETURN
iptables -t mangle -A TPROXY_RULES -d 224.0.0.0/4 -j RETURN
iptables -t mangle -A TPROXY_RULES -d 240.0.0.0/4 -j RETURN
# Redirigimos TCP al puerto del cliente proxy (7893)
iptables -t mangle -A TPROXY_RULES -p tcp \
-j TPROXY --on-port 7893 --on-ip 127.0.0.1 --tproxy-mark 1
# Redirigimos UDP al puerto del cliente proxy (7893)
iptables -t mangle -A TPROXY_RULES -p udp \
-j TPROXY --on-port 7893 --on-ip 127.0.0.1 --tproxy-mark 1
# Aplicamos la cadena al tráfico de tránsito
iptables -t mangle -A PREROUTING -j TPROXY_RULES
📌 Puerto 7893
El puerto 7893 es el puerto en el que el cliente proxy (sing-box, mihomo, Xray) escucha en modo tproxy. Asegúrese de que coincida con la configuración de su cliente.
Paso 3: Guardar las reglas al reiniciar
Cree un script de inicio automático en /etc/init.d/tproxy o agregue los comandos en /etc/rc.local. Para OpenWrt 23.05 con nftables en lugar de iptables, use reglas similares en la sintaxis de nft:
nft add table ip tproxy_table
nft add chain ip tproxy_table prerouting \
'{ type filter hook prerouting priority mangle; policy accept; }'
nft add rule ip tproxy_table prerouting \
ip daddr { 10.0.0.0/8, 127.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 } return
nft add rule ip tproxy_table prerouting \
tcp tproxy to 127.0.0.1:7893 meta mark set 1
nft add rule ip tproxy_table prerouting \
udp tproxy to 127.0.0.1:7893 meta mark set 1
Configuración del cliente proxy: redsocks, Xray, sing-box
El cliente proxy en el router es un programa que recibe el tráfico interceptado y lo envía a través de un servidor proxy remoto. Veamos la configuración para las opciones más populares.
Opción 1: redsocks (simple, solo TCP)
Adecuado para tareas básicas con un proxy SOCKS5. El archivo de configuración /etc/redsocks.conf:
base {
log_debug = off;
log_info = on;
log = "file:/var/log/redsocks.log";
daemon = on;
redirector = tproxy;
}
redsocks {
local_ip = 127.0.0.1;
local_port = 7893;
// Dirección de su proxy SOCKS5
ip = 185.220.101.50;
port = 1080;
type = socks5;
// Si el proxy requiere autenticación:
login = "your_login";
password = "your_password";
}
Opción 2: sing-box (recomendado — TCP + UDP)
sing-box soporta TPROXY de manera nativa y trabaja con la mayoría de los tipos de proxy: SOCKS5, HTTP, Shadowsocks, VLESS, Trojan. Ejemplo de configuración /etc/sing-box/config.json:
{
"inbounds": [
{
"type": "tproxy",
"listen": "127.0.0.1",
"listen_port": 7893,
"tcp_fast_open": false,
"udp_fragment": true,
"sniff": true
}
],
"outbounds": [
{
"type": "socks",
"tag": "proxy-out",
"server": "185.220.101.50",
"server_port": 1080,
"version": "5",
"username": "your_login",
"password": "your_password"
},
{
"type": "direct",
"tag": "direct"
}
],
"route": {
"rules": [
{
"geoip": ["private"],
"outbound": "direct"
}
],
"final": "proxy-out"
}
}
Inicie sing-box y agréguelo al inicio automático:
/etc/init.d/sing-box enable
/etc/init.d/sing-box start
Opción 3: mihomo / Clash Meta
mihomo es un fork de Clash con capacidades ampliadas. En la sección tproxy-port, especifique el puerto para la interceptación:
mixed-port: 7890
tproxy-port: 7893
allow-lan: false
mode: rule
log-level: info
proxies:
- name: "my-socks5"
type: socks5
server: 185.220.101.50
port: 1080
username: your_login
password: your_password
udp: true
proxy-groups:
- name: "PROXY"
type: select
proxies:
- my-socks5
rules:
- IP-CIDR,192.168.0.0/16,DIRECT
- IP-CIDR,10.0.0.0/8,DIRECT
- MATCH,PROXY
Protección contra fugas de DNS
Un proxy transparente sin la configuración adecuada de DNS es una vulnerabilidad seria. Si las consultas DNS se envían directamente a través del proveedor, y no a través del proxy, la ubicación real se revela, a pesar de la suplantación de IP. Esto es crítico para tareas donde la anonimidad o la suplantación geográfica son importantes.
Método 1: Interceptar DNS a través de TPROXY
Agregue una regla para interceptar tráfico UDP en el puerto 53:
# Interceptamos consultas DNS de los dispositivos de la red
iptables -t mangle -A TPROXY_RULES -p udp --dport 53 \
-j TPROXY --on-port 7893 --on-ip 127.0.0.1 --tproxy-mark 1
Método 2: DNS a través de sing-box / mihomo
sing-box y mihomo pueden manejar consultas DNS por sí mismos y enviarlas a través del proxy. En la configuración de sing-box, agregue la sección DNS:
"dns": {
"servers": [
{
"tag": "remote",
"address": "8.8.8.8",
"detour": "proxy-out"
},
{
"tag": "local",
"address": "192.168.1.1",
"detour": "direct"
}
],
"rules": [
{
"geoip": ["private"],
"server": "local"
}
],
"final": "remote",
"independent_cache": true
}
Método 3: dnsmasq con upstream a través del proxy
Si no está utilizando sing-box/mihomo, configure dnsmasq (el servidor DNS estándar de OpenWrt) para que reenvíe consultas a un servidor DNS cifrado. En el archivo /etc/dnsmasq.conf:
# Deshabilitamos el uso de DNS del proveedor
no-resolv
# Usamos DoH/DoT a través del resolutor local
server=127.0.0.1#5335
# Prohibimos a los dispositivos usar DNS externo directamente
# (regla de iptables para bloquear consultas DNS directas)
# iptables -t nat -A PREROUTING -p udp --dport 53 ! -d 192.168.1.1 -j DNAT --to 192.168.1.1
Verificación y depuración
Después de la configuración, asegúrese de verificar el correcto funcionamiento del proxy transparente. Aquí hay una lista de verificación paso a paso.
Paso 1: Verificación de las reglas de iptables
# Ver la cadena TPROXY_RULES
iptables -t mangle -L TPROXY_RULES -v -n
# Verificar la tabla de enrutamiento 100
ip rule show
ip route show table 100
Paso 2: Verificar que el cliente proxy escucha en el puerto
ss -tlnp | grep 7893
# o
netstat -tlnp | grep 7893
Debería ver el proceso sing-box, mihomo o redsocks escuchando en 127.0.0.1:7893.
Paso 3: Verificación de IP desde el dispositivo cliente
Conéctese al router desde cualquier dispositivo en la red y abra en el navegador ifconfig.me o 2ip.ru. La IP mostrada debe coincidir con la IP de su servidor proxy, y no con la IP real del proveedor.
Paso 4: Verificación de fugas de DNS
Vaya a dnsleaktest.com y realice una prueba extendida. Los servidores DNS en los resultados deben pertenecer a su proveedor de proxy o al servidor DoH elegido, pero no a su proveedor de internet.
Problemas comunes y sus soluciones
| Síntoma | Causa | Solución |
|---|---|---|
| Internet no funciona en absoluto | El cliente proxy no está en ejecución | Verifique el estado del servicio, los registros del cliente |
| IP no cambia | Las reglas de iptables no se aplicaron | Verifique iptables -t mangle -L -v |
| UDP no funciona | redsocks no soporta UDP | Cámbiese a sing-box o mihomo |
| Bucle de enrutamiento | El tráfico del cliente proxy también se intercepta | Excluya el UID o cgroup del cliente proxy de las reglas |
| Error de objetivo TPROXY | El módulo del núcleo no está cargado | modprobe xt_TPROXY |
Qué tipo de proxy es adecuado para TPROXY en OpenWrt
La elección del tipo de proxy influye críticamente en el resultado. No todas las opciones son adecuadas para un proxy transparente en el router — es importante considerar el protocolo, la estabilidad de la conexión y la tarea.
Proxy SOCKS5
La opción más versátil para TPROXY. Soporta TCP y UDP (al usar sing-box/mihomo). Adecuado para la mayoría de las tareas: eludir bloqueos geográficos, suplantación de IP para toda la red, trabajo con marketplaces. Los proxies de centros de datos en formato SOCKS5 ofrecen alta velocidad y estabilidad — la opción óptima si la velocidad es prioritaria, no la camuflaje como un usuario real.
Proxies residenciales
Los proxies residenciales utilizan direcciones IP de usuarios domésticos reales. Al enrutarse a través de TPROXY en el router, esto significa que todo el tráfico de su red se verá como tráfico de un usuario de internet doméstico normal del país deseado. Ideal para:
- Monitoreo de precios en marketplaces extranjeros (Amazon, eBay, Zalando)
- Pruebas de anuncios publicitarios de diferentes regiones
- Trabajo con plataformas que bloquean activamente IP de centros de datos
- Tareas donde se requiere el máximo camuflaje como un usuario real
Proxies móviles
Los proxies móviles funcionan a través de IP de operadores de telefonía móvil (4G/5G). Tienen el nivel más alto de confianza por parte de las plataformas — Facebook, Instagram, TikTok rara vez bloquean IP móviles, ya que detrás de una dirección pueden estar miles de usuarios reales. Al usarse a través de TPROXY en el router, todo el tráfico de su red recibe una IP móvil, lo que es crítico para:
- Arbitraje de tráfico a través de Facebook Ads y TikTok Ads
- Creación de cuentas en redes sociales
- Trabajo con navegadores anti-detección (Dolphin Anty, AdsPower, GoLogin) a través de una única puerta de enlace
| Tipo de proxy | Velocidad | Confianza de las plataformas | Mejor escenario |
|---|---|---|---|
| Centro de datos | ⚡ Alta | ★★☆☆☆ | Raspado, monitoreo de precios |
| Residenciales | ⚡⚡ Media | ★★★★☆ | Pruebas geográficas, e-commerce |
| Móviles | ⚡ Media | ★★★★★ | Redes sociales, arbitraje de tráfico |
Conclusión
Un proxy transparente a través de TPROXY en OpenWrt es una herramienta poderosa para la gestión centralizada del tráfico de toda la red. Las principales ventajas del enfoque: no es necesario configurar el proxy en cada dispositivo por separado, se soporta tanto tráfico TCP como UDP, y la configuración se escala de manera flexible para cualquier tarea — desde el uso doméstico hasta la infraestructura corporativa.
Los pasos clave que hemos analizado: verificación del soporte de TPROXY en el núcleo de OpenWrt, instalación de los paquetes necesarios, configuración de las reglas de iptables/nftables con el fwmark correcto, configuración del cliente proxy (redsocks, sing-box o mihomo) y protección contra fugas de DNS. Cada uno de estos pasos es importante — omitir cualquiera de ellos llevará a un funcionamiento incorrecto o a la fuga de la IP real.
Si su tarea es enrutear a través de un proxy el tráfico de toda la red con el máximo nivel de confianza por parte de las plataformas (Facebook, Instagram, TikTok, marketplaces extranjeros), recomendamos utilizar proxies residenciales — proporcionan IP domésticas reales del país deseado y un riesgo mínimo de bloqueos al trabajar a través de un proxy transparente en el router.
```