Coloque seu servidor atrás de um proxy reverso
Uma rede que bloqueia o IP do seu servidor não consegue impedir conexões feitas a outro endereço. Atrás de um proxy reverso como o Cloudflare, os aplicativos conectam-se ao proxy, que repassa o tráfego com segurança para o seu servidor.
Como funciona
Seu domínio aponta para o proxy em vez do seu servidor. Os aplicativos resolvem o domínio e conectam-se ao proxy, que descriptografa a conexão (como faz para qualquer site) e a criptografa novamente em direção ao seu servidor. O tráfego usa WebSocket, suportado pelo Cloudflare. Outros proxies reversos também funcionam, desde que suportem WebSocket e alcancem seu servidor via TLS.
Os aplicativos só resolvem o domínio se a chave de acesso contiver o nome como confiável, o que requer um certificado de uma autoridade certificadora (CA).
Uma chave também pode conter o endereço direto do seu servidor. Assim, os aplicativos tentam ambas as vias: o proxy mantém a conexão se o IP estiver bloqueado, mas qualquer pessoa com a chave pode ver o endereço real. Uma chave sem o IP direto força todo o tráfego pelo proxy.
O que você deve ter em mente
- Bloqueio: Uma rede ainda pode bloquear os endereços do proxy reverso ou o seu domínio. No entanto, como os endereços da Cloudflare atendem a muitos outros sites, bloqueá-los tem um custo alto para a rede.
- DNS: Os aplicativos consultam seu domínio pelo DNS da rede antes de se conectar. Se a rede bloquear ou falsificar a resposta, os aplicativos recorrem aos endereços salvos na chave de acesso — portanto, uma chave que contenha apenas o domínio não conseguirá se conectar.
- Privacidade: O proxy reverso enxerga o tráfego do túnel assim como o seu servidor: para onde os usuários se conectam e tudo o que enviarem sem criptografia. O tráfego HTTPS permanece criptografado. Use apenas um proxy reverso de sua confiança.
- Apenas TCP: O servidor não disponibiliza suas portas UDP e QUIC para aplicativos que se conectam por meio do proxy.
- Termos de uso: Verifique se os termos do seu provedor permitem tráfego de VPN. O uso por um grupo pequeno de usuários (cerca de 50 ou menos) normalmente é aceito.
Antes de começar
- Um domínio ou subdomínio com um certificado emitido por uma autoridade certificadora no seu servidor: veja o passo a passo em Usar um nome de domínio e um certificado confiável. Faça isso primeiro, enquanto o registro DNS do domínio ainda aponta diretamente para o servidor.
- Apenas um servidor vinculado ao domínio. Apontar registros para dois servidores diferentes pode dividir as conexões de uma mesma sessão, fazendo com que ela caia.
- O servidor escutando na porta TCP
443ou em outra porta suportada pelo proxy. A Cloudflare encaminha conexões HTTPS apenas em443, 2053, 2083, 2087, 2096, 8443.
Ative o proxy
- Na Cloudflare, abra os registros de DNS do seu domínio e configure o registro que aponta para o seu servidor como Proxied (faça o mesmo no registro AAAA, se houver).
- Em SSL/TLS, defina o modo de criptografia como Full (strict). Assim, a Cloudflare acessa seu servidor via TLS e valida o certificado. O modo Flexible usa HTTP comum, que o servidor não aceita.
O VpnHood! MANAGER renova certificados via HTTP comum na porta TCP 80 através do domínio, e a Cloudflare encaminha essa conexão ao seu servidor. Em um servidor gerenciado, mantenha a opção Always Use HTTPS desativada: ativá-la redireciona a solicitação para HTTPS, causando falha na renovação.
Em um servidor gerenciado
Verifique o certificado do farm para o domínio: em Signature deve constar CA Signed, e em Visibility deve estar PublicInToken. Dessa forma, as chaves passam a incluir o domínio para a consulta dos aplicativos.
Para direcionar todos os aplicativos pelo proxy, remova os endereços diretos do servidor das chaves em Access Points:
- Desative a opção Automatic Configuration.
- Edite cada endereço e mude o campo Mode para Private.
- Mantenha o campo Listen como Yes para que o servidor continue escutando e receba as conexões do proxy.
O MANAGER permite chaves sem endereço apenas se o certificado estiver como CA Signed. Veja como configurar cada opção em Defina os endereços IP do seu servidor.
Com PublicInToken ativado, os endereços continuam nas chaves, e os aplicativos usam tanto eles quanto o proxy. Assim, o proxy mantém seus usuários conectados se um endereço for bloqueado.
Aplicativos com chaves antigas recebem a nova na próxima conexão, pois a opção Push token to clients vem ativada por padrão.
O domínio aponta para um único servidor; portanto, em um cluster com vários servidores, todo aplicativo que passa pelo proxy acessa o mesmo servidor.
Em um servidor independente
Confirme se o servidor usa o certificado do domínio com IsValidHostName definido como true: veja o passo a passo em Use um nome de domínio e um certificado confiável. As chaves criadas a partir de então incluirão o domínio, e os aplicativos farão a resolução automaticamente.
Um servidor independente sempre inclui seus próprios endereços nas chaves junto com o domínio, fazendo com que os aplicativos usem ambos de forma intercambiável. O proxy garante que seus usuários continuem conectados caso um endereço seja bloqueado, mas qualquer pessoa com a chave poderá ver o endereço.