VPNSmith
tunneling-obfuscationINFO

Cloak: Ofuscação TLS para VPN auto-hospedada em 2026

Cloak transforma o seu WireGuard ou Shadowsocks num site HTTPS falso. Instalação no Contabo, integração WG/SS, desempenho, denegação plausível, padrões de implementação.

Por Eric Gerard · Fondateur · VPNSmith — Spécialiste self-host VPN & VPS GDPR11 min de leituraPhoto via Unsplash

Divulgação de afiliados — Este artigo contém links de afiliados da Contabo. Se encomendar um VPS através dos nossos links, ganhamos uma comissão sem custo adicional para si. Todas as configurações são testadas em produção.

Cloak é uma ferramenta de ofuscação TLS que se posiciona à frente de um túnel existente (WireGuard, OpenVPN, Shadowsocks) e transforma-o no que parece exatamente um site HTTPS. Quando uma DPI inspeciona o seu servidor, vê um handshake TLS 1.3 válido com um certificado Let's Encrypt — e aqui está o truque — se a sessão NÃO for um cliente Cloak válido, o servidor redireciona-a para um site real (geralmente bing.com ou wikipedia.org).

Assim, Cloak é uma camada de ofuscação para adicionar em cima de uma VPN já funcional. Essa é a sua principal diferença em relação ao V2Ray (um protocolo VPN completo) ou wstunnel (apenas um túnel WebSocket simples). Cloak assume que já está a executar WireGuard ou Shadowsocks e quer torná-los indetetáveis.

Este guia cobre a instalação do Cloak num VPS da Contabo, integração com WireGuard e Shadowsocks, benchmarks de desempenho, e quando Cloak é a escolha certa em comparação com V2Ray REALITY ou wstunnel.

Como funciona o Cloak

A proposta técnica:

  1. O servidor Cloak escuta na porta 443 e executa um servidor TLS 1.3 falso com um certificado Let's Encrypt (ou autoassinado).
  2. Um cliente Cloak abre uma conexão TLS padrão com um segredo partilhado escondido no ClientHello (extensão TLS).
  3. O servidor Cloak deteta o segredo, desmascara o cliente e abre um túnel para o backend configurado (WireGuard 127.0.0.1:51820, por exemplo).
  4. Se uma sessão NÃO for um cliente Cloak válido (sonda GFW, scanner aleatório), o servidor proxy-a transparentemente para RedirAddr (tipicamente www.bing.com:443). O cliente vê a página real do Bing — sem erro, sem 404, sem "resposta estranha".

Do ponto de vista de uma DPI:

  • Tráfego TCP 443 em direção a um domínio residencial = normal.
  • Certificado Let's Encrypt = legítimo.
  • Se sondado: aterra num site real (Bing) → NÃO é um endpoint VPN.

É conceitualmente próximo ao REALITY (Xray-core), mas Cloak existe desde 2018 (REALITY desde 2023), e o seu design é mais "defensivo": recusa-se ativamente a responder como um endpoint VPN.

Instalação do servidor no Contabo

Contabo VPS S (€4.99/mês, ver oferta) no Ubuntu 24.04 LTS. Pré-requisito: já tem um WireGuard ou Shadowsocks local a funcionar (127.0.0.1:51820 ou 127.0.0.1:8443).

Passo 1 — Obter Cloak

CLOAK_VER="2.7.0"  # verifique a última versão em github.com/cbeuw/Cloak/releases
cd /tmp
wget "https://github.com/cbeuw/Cloak/releases/download/v${CLOAK_VER}/ck-server-linux-amd64-v${CLOAK_VER}"
wget "https://github.com/cbeuw/Cloak/releases/download/v${CLOAK_VER}/ck-client-linux-amd64-v${CLOAK_VER}"
chmod +x ck-server-* ck-client-*
mv ck-server-* /usr/local/bin/ck-server
mv ck-client-* /usr/local/bin/ck-client

Passo 2 — Gerar um par de chaves do servidor

ck-server -k
# Chave pública: ...
# Chave privada: ...

Guarde ambas. A chave pública será incorporada na configuração do cliente.

Passo 3 — Gerar UIDs de utilizador

ck-server -u
# 7tCcGUcUyzM7tCcGUcUyzM=
# 9wEeIWeRtFE9wEeIWeRtFE=

Gere tantos UIDs quantos os utilizadores. Cada UID = um cliente. Se um UID vazar, pode revogá-lo individualmente.

Passo 4 — Configuração do servidor /etc/cloak/ckserver.json

{
  "ProxyBook": {
    "wireguard": ["udp", "127.0.0.1:51820"],
    "shadowsocks": ["tcp", "127.0.0.1:8443"]
  },
  "BindAddr": [":443"],
  "BypassUID": [
    "7tCcGUcUyzM7tCcGUcUyzM=",
    "9wEeIWeRtFE9wEeIWeRtFE="
  ],
  "RedirAddr": "www.bing.com",
  "PrivateKey": "YOUR_PRIVATE_KEY_FROM_-k",
  "AdminUID": "OPTIONAL-ADMIN-UID=",
  "DatabasePath": "/var/lib/cloak/userinfo.db",
  "StreamTimeout": 300
}

Campos importantes:

  • ProxyBook: a lista de backends. Uma sessão pode ser direcionada para wireguard ou shadowsocks com base no que o cliente solicita.
  • BindAddr: :443 para a porta pública.
  • BypassUID: UIDs sem quota/restrições (admin/utilizadores avançados).
  • RedirAddr: onde redirecionamos sessões inválidas. Crítico para camuflagem — escolha um site popular não bloqueado na zona alvo (bing.com, wikipedia.org, github.com são aceitáveis quase em todo o lado).
  • PrivateKey: a chave do servidor (gerada no passo 2).

Passo 5 — Serviço Systemd

/etc/systemd/system/cloak.service:

[Unit]
Description=Cloak server
After=network-online.target

[Service]
Type=simple
ExecStart=/usr/local/bin/ck-server -c /etc/cloak/ckserver.json
Restart=always
RestartSec=5
User=nobody
AmbientCapabilities=CAP_NET_BIND_SERVICE
CapabilityBoundingSet=CAP_NET_BIND_SERVICE

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now cloak
journalctl -u cloak -f

Neste ponto, o seu VPS responde em :443:

  • Para clientes Cloak válidos → túnel para WireGuard ou Shadowsocks local.
  • Para qualquer outra coisa (curl, scanners, sondas GFW) → retorna o conteúdo de www.bing.com.

Teste de fora: curl -L https://your-ip deve mostrar o HTML do Bing. Sem menção ao Cloak. Sem erros. Camuflagem perfeita.

Configuração do cliente: Linux, Windows, Android

O cliente Cloak (ck-client) utiliza uma configuração JSON semelhante à do servidor.

Cliente Linux ~/cloak/ckclient.json:

{
  "Transport": "direct",
  "ProxyMethod": "wireguard",
  "EncryptionMethod": "aes-gcm",
  "UID": "7tCcGUcUyzM7tCcGUcUyzM=",
  "PublicKey": "SERVER_PUBLIC_KEY",
  "ServerName": "www.microsoft.com",
  "NumConn": 4,
  "BrowserSig": "chrome",
  "StreamTimeout": 300,
  "RemoteHost": "your-ip-or-domain",
  "RemotePort": 443,
  "LocalHost": "127.0.0.1",
  "LocalPort": 51820
}

Campos importantes:

  • ProxyMethod: deve corresponder a um nome ProxyBook no servidor (wireguard aqui).
  • UID: o UID fornecido pelo administrador (o seu em BypassUID).
  • PublicKey: chave pública do servidor.
  • ServerName: o SNI que o cliente envia no handshake TLS. Deve parecer um site realista (Microsoft, Cloudflare, etc.).
  • NumConn: 4 conexões paralelas para saturar a largura de banda (recomendado).
  • BrowserSig: assinatura TLS para imitar (chrome ou firefox). Evite safari, que tem uma assinatura distinta.
  • LocalPort: porta local para a qual o WireGuard apontará o seu Endpoint.

Lançamento:

ck-client -c ~/cloak/ckclient.json &

Depois, ative o WireGuard com Endpoint = 127.0.0.1:51820 em vez do IP público:

[Peer]
PublicKey = ...
AllowedIPs = 0.0.0.0/0
Endpoint = 127.0.0.1:51820

Windows: ck-client.exe da página de releases. Tarefa agendada para início automático. Aplicação oficial do WireGuard apontando para 127.0.0.1:51820.

Android: ck-client-android-arm64 existe na página de releases, mas sem interface nativa. Caminho pragmático: use OpenVPN para Android que suporta plugins, ou wireguard-android + Termux para executar ck-client em segundo plano. Mais complexo que V2Ray (que tem v2rayNG nativo). Se o foco for móvel, veja V2Ray + VLess REALITY em vez disso.

Desempenho medido

Benchmarks reais, Contabo VPS S Nuremberg, cliente residencial de fibra gigabit em Paris, mediana de 10 sessões, abril de 2026.

ConfiguraçãoLatência adicionadaLargura de banda TCPCPU @ 100 Mbps
WireGuard simplesreferência (+6 ms)195 Mbps4%
WireGuard + Cloak (TLS direto)+12 ms130 Mbps12%
WireGuard + Cloak (TLS + WS)+18 ms100 Mbps16%
WireGuard + Cloak via Cloudflare+25 ms80 Mbps16%

Cloak em modo TLS direto (sem WebSocket extra) é mais rápido que WS+TLS — consistente com menos overhead de protocolo.

Vs V2Ray + VLess REALITY (outra abordagem de certificado emprestado): Cloak é ligeiramente menos performante (130 Mbps vs 155 Mbps), porque REALITY usa XTLS Vision (encriptação única otimizada) enquanto Cloak faz TLS padrão. A diferença é modesta na prática.

Casos de uso onde Cloak se destaca

Cabos de rede de fibra ótica brilhantes
Cabos de rede de fibra ótica brilhantes

1. Já tem um WireGuard auto-hospedado e só quer adicionar uma camada de ofuscação. Migração em 30 minutos, sem reescrever a configuração do WireGuard. Inicia ck-server, adiciona Endpoint = 127.0.0.1:51820 no lado do cliente, feito.

2. Multi-utilizador com revogação por UID. Se hospedar para 5 amigos ou colegas, cada UID é independente — revogar um utilizador = remover o seu UID de BypassUID, o túnel para.

3. Irão, Turquia, EAU, Rússia. Cloak passa muito bem nestas DPIs. Utilizadores locais confirmam conexões estáveis ao longo de semanas. Para a China continental, veja Xray-core + REALITY em vez disso (nosso guia V2Ray).

4. Camuflagem defensiva contra inspeção de servidor. Se alguém (administrador de ISP, autoridade) escanear o seu VPS e fizer curl https://your-ip, vê o Bing — não um endpoint VPN suspeito. Útil para denegação plausível, embora não absoluta.

Casos onde Cloak não é a melhor escolha

1. Quer uma configuração focada em dispositivos móveis. O ecossistema de clientes móveis do Cloak é fraco (não há equivalente ao v2rayNG). Para dispositivos móveis, V2Ray + VLess com v2rayNG ou Shadowrocket é significativamente mais simples.

2. Implementa para 50+ utilizadores com quotas por utilizador. Cloak gere UIDs e tem quotas básicas, mas V2Ray tem um ecossistema mais maduro (APIs de administração, dashboards como x-ui).

3. Especificamente para a China continental, em 2026. O GFW fez progressos contra o Cloak em 2024-2025. REALITY (Xray-core) é mais robusto hoje. Cloak ainda é aceitável, mas não o melhor.

4. Quer mudar de protocolos frequentemente (SS um dia, WG no outro, OpenVPN depois). Cloak pode direcionar para múltiplos backends, mas V2Ray/Xray lida com isso de forma mais elegante numa única configuração.

Endurecimento

1. UIDs aleatórios fortes. Use sempre ck-server -u (gerador oficial) — nada de UIDs feitos à mão. Caso contrário, pode haver viés de entropia que pode ser detetado.

2. Certificado Let's Encrypt real. Em vez do certificado autoassinado padrão, configure Cloak para usar um certificado Let's Encrypt via acme.sh:

acme.sh --issue -d cdn.yourdomain.com --standalone --httpport 8080
acme.sh --install-cert -d cdn.yourdomain.com \
  --key-file /etc/cloak/server.key \
  --fullchain-file /etc/cloak/server.crt \
  --reloadcmd "systemctl reload cloak"

Depois, em ckserver.json, defina os caminhos dos certificados através das opções TLS (veja os documentos do Cloak).

3. fail2ban nos logs do Cloak. Sessões inválidas aparecem em journalctl -u cloak. Crie um filtro fail2ban que bane após 20 tentativas inválidas em 60s.

4. Rodar UIDs a cada trimestre. A cada 3 meses, rode os UIDs dos utilizadores. Isso complica a vida de um atacante que teria exfiltrado uma configuração um dia.

5. Sem logs de conexão persistentes. Mantenha loglevel: warning no Cloak. Se estiver numa jurisdição sensível, monte /var/log/cloak num disco RAM (tmpfs).

Cloak vs alternativas

CritérioCloakV2Ray + VLess REALITYwstunnelShadowsocks + v2ray-plugin
Tempo de configuração30 min1–2 h10 min20 min
Backend multi-protocoloSim (WG, SS, OpenVPN)LimitadoNãoNão
UID/quotas multi-utilizadorSim, básicoSim, completoNãoLimitado
Camuflagem ativa (sonda → site real)ExcelenteExcelenteFracaFraca
Bypass GFW China 2026MédioExcelenteFracoMédio
Bypass Irão/Rússia/CorpExcelenteExcelenteBomExcelente
Manutenção do projetoLentaMuito ativaAtivaAtiva
Ecossistema móvelFracoExcelenteMédioBom

Escolha pragmática:

  • Cloak se já tiver WG/SS e quiser camuflagem rápida.
  • V2Ray + REALITY se começar do zero, foco na China, primeiro móvel.
  • wstunnel se apenas bypass corporativo sem DPI sofisticado.

Quando um VPN comercial ofuscado é mais simples

Para utilizadores não técnicos que viajam ocasionalmente na Ásia ou no Médio Oriente, configurar Cloak + WireGuard + cert + DNS é demais. Um VPN comercial com ofuscação embutida é mais eficaz em termos de tempo.

Nossa escolha de venda cruzada: NordVPN com seus "servidores ofuscados" (OpenVPN ofuscado e NordWhisper). Dois cliques na app, sem VPS para gerir. Bom no Irão/Turquia/EAU, aceitável na China 70% do tempo.

A abordagem combinada que muitos dos nossos leitores usam: Cloak + WireGuard auto-hospedado para o dia a dia, NordVPN como backup para viagens arriscadas. Custo total de ~$10/mês, robusto, e nunca fica bloqueado.

Resolução de problemas comuns

Sintoma: curl https://your-ip NÃO retorna Bing, mas um erro ou certificado inválido. Cloak usa um certificado autoassinado por padrão — um navegador ou curl estrito recusará. Configure um certificado Let's Encrypt para corrigir.

Sintoma: Cliente Cloak conecta, mas não há tráfego. O ProxyMethod do cliente não corresponde a nenhum ProxyBook no servidor. Verifique se "wireguard" está definido no ProxyBook do servidor.

Sintoma: desempenho fraco, máximo de 30 Mbps. NumConn muito baixo no lado do cliente (tente 8 em vez de 4), ou servidor limitado por CPU (verifique htop). Proxy Cloudflare ativo também pode limitar.

Sintoma: conexões intermitentes na China. O GFW sonda ativamente certificados autoassinados. Mude para um certificado Let's Encrypt real e altere o ServerName do cliente (use um domínio popular na lista branca).

Leitura adicional

Fontes técnicas:


Publicado em 2026-06-03. Benchmarks realizados num Contabo VPS S Nuremberg + cliente de fibra residencial em Paris, março–abril de 2026. As técnicas anti-DPI evoluem constantemente — sempre verifique com fontes locais antes de uma implementação crítica.

Lembrete legal: Cloak é uma ferramenta de código aberto, legal na UE, EUA, Canadá e na maioria dos países. O uso anti-censura na China, Irão, Rússia, EAU é ilegal localmente com penalidades variáveis. A VPNSmith publica este guia para fins educacionais.

★ Datacenter GDPR em Nuremberg · ✓ IPv4 dedicado incluído · 200+ Mbps garantidos

A VPS you fully control for tunneling & obfuscation → ContaboRoot access · open any port · run your own stack