Se você deseja que todo o tráfego da sua rede passe por um proxy — sem configuração manual em cada laptop, smartphone ou servidor — um proxy transparente no roteador OpenWrt via mecanismo TPROXY é exatamente o que você precisa. Neste guia, abordaremos a configuração completa: desde a instalação dos pacotes necessários até as regras do iptables e a verificação do funcionamento.
O que é TPROXY e para que serve
TPROXY (Proxy Transparente) é um mecanismo do núcleo Linux que permite interceptar tráfego TCP e UDP sem alterar o endereço IP de destino no pacote. Ao contrário do redirecionamento NAT clássico (REDIRECT), o TPROXY mantém o endereço original do destinatário, o que é crucial para o funcionamento correto do cliente proxy: ele "vê" para onde exatamente o dispositivo na rede está tentando se conectar.
Para que isso é necessário na prática? Imagine: você tem um escritório ou laboratório doméstico com dezenas de dispositivos — computadores, smartphones, dispositivos IoT, máquinas virtuais de teste. Configurar o proxy manualmente em cada um deles é horas de trabalho e uma dor de cabeça constante ao trocar o servidor proxy. Um proxy transparente no roteador resolve o problema de forma centralizada: todo o tráfego da rede passa automaticamente pelo proxy, e os dispositivos nem desconfiam disso.
Cenários típicos de uso do TPROXY no OpenWrt:
- Roteamento de todo o tráfego através de proxies residenciais ou móveis para contornar bloqueios geográficos
- Monitoramento e filtragem centralizados do tráfego em uma rede corporativa
- Teste de aplicativos através de proxies de diferentes regiões sem alterar as configurações nas máquinas clientes
- Substituição automática de IP para todos os dispositivos conectados ao roteador
- Trabalho com navegadores anti-detect (Dolphin Anty, AdsPower, GoLogin) através de um único gateway
A principal vantagem do TPROXY em relação ao REDIRECT: suporte a UDP. Isso é importante para protocolos modernos (QUIC, DNS sobre UDP, tráfego de jogos), que o REDIRECT simplesmente não consegue processar corretamente.
Como funciona o proxy transparente no OpenWrt
O esquema de funcionamento do TPROXY no OpenWrt é o seguinte:
- Um dispositivo na rede envia um pacote para um endereço IP externo (por exemplo,
93.184.216.34:443). - O roteador intercepta o pacote com a regra
iptables TPROXYainda na cadeia PREROUTING — antes de tomar uma decisão sobre o roteamento. - O pacote é marcado com um fwmark especial e redirecionado para o socket local do cliente proxy (por exemplo, na porta 7893).
- O cliente proxy (redsocks, Xray, sing-box) "vê" o endereço original de destino através do mecanismo
IP_TRANSPARENTe estabelece uma conexão através do servidor proxy remoto. - A resposta é retornada ao dispositivo — de forma transparente, sem quaisquer alterações do lado do cliente.
💡 Ponto importante
O TPROXY funciona apenas na cadeia PREROUTING da tabela mangle. Isso significa que apenas o tráfego de trânsito (dos dispositivos da rede) é interceptado, mas não o tráfego do próprio roteador. Para interceptar o tráfego do roteador, será necessária uma configuração adicional através do OUTPUT e roteamento através do loopback.
Requisitos: roteador, firmware, pacotes
Antes de começar a configuração, verifique se sua configuração atende aos requisitos mínimos.
Requisitos do roteador
| Parâmetro | Mínimo | Recomendado |
|---|---|---|
| RAM | 64 MB | 256 MB ou mais |
| Flash / Armazenamento | 16 MB | 128 MB ou mais |
| Arquitetura da CPU | MIPS, ARM | ARM Cortex-A7/A53 e superior |
| Versão do OpenWrt | 21.02 | 23.05 ou snapshot |
| Núcleo Linux | 5.4 com TPROXY | 5.15 / 6.1 |
Modelos bem recomendados para essa tarefa: GL.iNet GL-MT6000 (Flint 2), Xiaomi AX3000T, Banana Pi BPi-R3, Raspberry Pi 4 com OpenWrt, além de qualquer roteador x86 com RAM suficiente.
Verificação do suporte ao TPROXY no núcleo
Conecte-se ao roteador via SSH e execute:
zcat /proc/config.gz | grep TPROXY
Você deve ver a linha CONFIG_NETFILTER_XT_TARGET_TPROXY=y ou =m. Se a saída estiver vazia — o núcleo não suporta TPROXY e será necessária a recompilação ou troca de firmware.
Instalação dos pacotes necessários
Para o funcionamento do TPROXY no OpenWrt, serão necessários alguns pacotes. Conecte-se via SSH e atualize a lista de pacotes:
opkg update
Instale os componentes necessários:
# Módulo do núcleo para TPROXY
opkg install kmod-nft-tproxy
# Se você estiver usando iptables (pilha antiga)
opkg install iptables-mod-tproxy
# Utilitários ip rule / ip route
opkg install ip-full
# Adicional para trabalhar com fwmark
opkg install kmod-ipt-tproxy
Dependendo do cliente proxy escolhido, instale um dos seguintes pacotes:
| Cliente proxy | Pacote OpenWrt | Suporte a TPROXY |
|---|---|---|
| redsocks | redsocks |
TCP (UDP via redsocks2) |
| Xray-core | xray-core |
TCP + UDP (nativo) |
| sing-box | sing-box |
TCP + UDP (nativo) |
| mihomo (Clash Meta) | mihomo |
TCP + UDP (nativo) |
Para a maioria das tarefas, recomendamos sing-box ou mihomo — eles suportam TPROXY nativamente, incluindo UDP, e têm um formato de configuração conveniente.
Configuração das regras do iptables e ip rule
Esta é uma etapa crucial. Precisamos fazer três coisas: marcar os pacotes necessários com fwmark, configurar uma tabela de roteamento especial e adicionar uma regra TPROXY no iptables.
Passo 1: Criando a tabela de roteamento
# Adicionando uma rota especial: pacotes marcados vão para o loopback
ip rule add fwmark 1 table 100
ip route add local default dev lo table 100
Isso diz ao núcleo: "todos os pacotes com a marca fwmark=1 devem ser considerados locais e entregues ao loopback". É assim que o cliente proxy poderá aceitá-los através de seu socket.
Passo 2: Regras do iptables (mangle/PREROUTING)
# Criando uma cadeia para TPROXY
iptables -t mangle -N TPROXY_RULES
# Excluindo endereços locais (não os 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
# Redirecionando TCP para a porta do 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
# Redirecionando UDP para a porta do 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
# Aplicando a cadeia ao tráfego de trânsito
iptables -t mangle -A PREROUTING -j TPROXY_RULES
📌 Porta 7893
A porta 7893 é a porta na qual o cliente proxy (sing-box, mihomo, Xray) escuta em modo tproxy. Certifique-se de que ela corresponda às configurações do seu cliente.
Passo 3: Salvando as regras na reinicialização
Crie um script de inicialização em /etc/init.d/tproxy ou adicione os comandos em /etc/rc.local. Para OpenWrt 23.05 com nftables em vez de iptables, use regras semelhantes na sintaxe 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
Configuração do cliente proxy: redsocks, Xray, sing-box
O cliente proxy no roteador é um programa que aceita o tráfego interceptado e o envia através de um servidor proxy remoto. Vamos considerar a configuração para as opções mais populares.
Opção 1: redsocks (simples, apenas TCP)
Adequado para tarefas básicas com proxy SOCKS5. O arquivo de configuração /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;
// Endereço do seu proxy SOCKS5
ip = 185.220.101.50;
port = 1080;
type = socks5;
// Se o proxy requer autenticação:
login = "seu_login";
password = "sua_senha";
}
Opção 2: sing-box (recomendado — TCP + UDP)
O sing-box suporta TPROXY nativamente e funciona com a maioria dos tipos de proxy: SOCKS5, HTTP, Shadowsocks, VLESS, Trojan. Exemplo de configuração /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": "seu_login",
"password": "sua_senha"
},
{
"type": "direct",
"tag": "direct"
}
],
"route": {
"rules": [
{
"geoip": ["private"],
"outbound": "direct"
}
],
"final": "proxy-out"
}
}
Inicie o sing-box e adicione à inicialização automática:
/etc/init.d/sing-box enable
/etc/init.d/sing-box start
Opção 3: mihomo / Clash Meta
O mihomo é um fork do Clash com recursos expandidos. Na seção tproxy-port, especifique a porta para interceptação:
mixed-port: 7890
tproxy-port: 7893
allow-lan: false
mode: rule
log-level: info
proxies:
- name: "meu-socks5"
type: socks5
server: 185.220.101.50
port: 1080
username: seu_login
password: sua_senha
udp: true
proxy-groups:
- name: "PROXY"
type: select
proxies:
- meu-socks5
rules:
- IP-CIDR,192.168.0.0/16,DIRECT
- IP-CIDR,10.0.0.0/8,DIRECT
- MATCH,PROXY
Proteção contra vazamentos de DNS
Um proxy transparente sem a configuração correta de DNS é uma vulnerabilidade séria. Se as consultas DNS estão indo diretamente através do provedor, e não através do proxy, a localização real é revelada, apesar da substituição do IP. Isso é crítico para tarefas onde a anonimidade ou a substituição geográfica são importantes.
Método 1: Interceptação de DNS via TPROXY
Adicione uma regra para interceptar tráfego UDP na porta 53:
# Interceptando consultas DNS dos dispositivos da rede
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 via sing-box / mihomo
O sing-box e o mihomo podem processar consultas DNS de forma independente e enviá-las através do proxy. No config do sing-box, adicione a seção 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 com upstream via proxy
Se você não estiver usando sing-box/mihomo, configure o dnsmasq (servidor DNS padrão do OpenWrt) para encaminhar consultas para um servidor DNS criptografado. No arquivo /etc/dnsmasq.conf:
# Desativando o uso de DNS do provedor
no-resolv
# Usando DoH/DoT através do resolvedor local
server=127.0.0.1#5335
# Proibindo dispositivos de usar DNS externo diretamente
# (regra iptables para bloquear consultas DNS diretas)
# iptables -t nat -A PREROUTING -p udp --dport 53 ! -d 192.168.1.1 -j DNAT --to 192.168.1.1
Verificação e depuração
Após a configuração, verifique se o proxy transparente está funcionando corretamente. Aqui está uma lista de verificação passo a passo.
Passo 1: Verificação das regras do iptables
# Verificando a cadeia TPROXY_RULES
iptables -t mangle -L TPROXY_RULES -v -n
# Verificando a tabela de roteamento 100
ip rule show
ip route show table 100
Passo 2: Verificando se o cliente proxy está escutando na porta
ss -tlnp | grep 7893
# ou
netstat -tlnp | grep 7893
Você deve ver o processo sing-box, mihomo ou redsocks escutando em 127.0.0.1:7893.
Passo 3: Verificando o IP do dispositivo cliente
Conecte-se ao roteador a partir de qualquer dispositivo na rede e abra no navegador ifconfig.me ou 2ip.ru. O IP exibido deve corresponder ao IP do seu servidor proxy, e não ao IP real do provedor.
Passo 4: Verificando vazamentos de DNS
Acesse dnsleaktest.com e execute o teste avançado. Os servidores DNS nos resultados devem pertencer ao seu provedor de proxy ou ao servidor DoH escolhido, mas não ao seu provedor de internet.
Problemas comuns e suas soluções
| Sintoma | Causa | Solução |
|---|---|---|
| A internet não funciona de forma alguma | O cliente proxy não está em execução | Verifique o status do serviço, os logs do cliente |
| IP não muda | As regras do iptables não foram aplicadas | Verifique iptables -t mangle -L -v |
| UDP não funciona | redsocks não suporta UDP | Mude para sing-box ou mihomo |
| Loop de roteamento | O tráfego do cliente proxy também está sendo interceptado | Exclua o UID ou cgroup do cliente proxy das regras |
| Erro no alvo TPROXY | O módulo do núcleo não está carregado | modprobe xt_TPROXY |
Qual tipo de proxy é adequado para TPROXY no OpenWrt
A escolha do tipo de proxy afeta criticamente o resultado. Para um proxy transparente no roteador, nem todas as opções são adequadas — é importante considerar o protocolo, a estabilidade da conexão e a tarefa.
Proxy SOCKS5
A opção mais versátil para TPROXY. Suporta TCP e UDP (quando usando sing-box/mihomo). Adequado para a maioria das tarefas: contornar bloqueios geográficos, substituição de IP para toda a rede, trabalho com marketplaces. Proxies de data center no formato SOCKS5 oferecem alta velocidade e estabilidade — a escolha ideal se a prioridade for a velocidade, e não a camuflagem como um usuário real.
Proxies residenciais
Proxies residenciais usam endereços IP de usuários domésticos reais. Ao roteá-los através do TPROXY no roteador, isso significa que todo o tráfego da sua rede parecerá tráfego de um usuário de internet doméstico comum do país desejado. Ideal para:
- Monitoramento de preços em marketplaces estrangeiros (Amazon, eBay, Zalando)
- Teste de anúncios em diferentes regiões
- Trabalho com plataformas que bloqueiam ativamente IPs de data center
- Tarefas que requerem máxima camuflagem como um usuário real
Proxies móveis
Proxies móveis operam através de IPs de operadores de telefonia móvel (4G/5G). Eles têm o mais alto nível de confiança por parte das plataformas — Facebook, Instagram, TikTok raramente bloqueiam IPs móveis, pois um único endereço pode representar milhares de usuários reais. Ao usar através do TPROXY no roteador, todo o tráfego da sua rede recebe um IP móvel, o que é crítico para:
- Arbitragem de tráfego através do Facebook Ads e TikTok Ads
- Criação de contas em redes sociais
- Trabalho com navegadores anti-detect (Dolphin Anty, AdsPower, GoLogin) através de um único gateway
| Tipo de proxy | Velocidade | Confiança das plataformas | Melhor cenário |
|---|---|---|---|
| Data center | ⚡ Alta | ★★☆☆☆ | Raspagem, monitoramento de preços |
| Residenciais | ⚡⚡ Média | ★★★★☆ | Teste geográfico, e-commerce |
| Móveis | ⚡ Média | ★★★★★ | Redes sociais, arbitragem de tráfego |
Conclusão
Um proxy transparente via TPROXY no OpenWrt é uma ferramenta poderosa para gerenciamento centralizado do tráfego de toda a rede. As principais vantagens da abordagem: não é necessário configurar o proxy em cada dispositivo separadamente, suporta tráfego tanto TCP quanto UDP, e a configuração é flexivelmente escalável para qualquer tarefa — desde uso doméstico até infraestrutura corporativa.
Os passos-chave que abordamos: verificação do suporte ao TPROXY no núcleo do OpenWrt, instalação dos pacotes necessários, configuração das regras do iptables/nftables com o fwmark correto, configuração do cliente proxy (redsocks, sing-box ou mihomo) e proteção contra vazamentos de DNS. Cada uma dessas etapas é importante — pular qualquer uma levará a um funcionamento incorreto ou vazamento do IP real.
Se sua tarefa é roteirizar o tráfego de toda a rede através de um proxy com o máximo nível de confiança por parte das plataformas (Facebook, Instagram, TikTok, marketplaces estrangeiros), recomendamos usar proxies residenciais — eles fornecem IPs domésticos reais do país desejado e o risco mínimo de bloqueios ao trabalhar através de um proxy transparente no roteador.
```