Coloque seu servidor atrás de um proxy reverso
Uma rede que bloqueia o IP do seu servidor não pode deter aplicativos que não se conectam diretamente a ele. Atrás de um proxy reverso como o Cloudflare, os aplicativos se conectam ao proxy, e ele repassa a conexão para o seu servidor.
Como funciona
Seu domínio direciona para o proxy em vez do seu servidor. Os aplicativos consultam o domínio e conectam-se ao proxy, que descriptografa o tráfego — como faz em qualquer site — e 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ó consultam o domínio se a chave o listar como um nome confiável, o que exige um certificado emitido por uma autoridade certificadora.
A chave também pode incluir o endereço direto do seu servidor. Assim, os aplicativos conectam de qualquer forma: o proxy garante o acesso se o IP for bloqueado, mas qualquer pessoa com a chave pode visualizar o endereço. Uma chave sem o endereço direto força todo o tráfego pelo proxy.
O que você deve saber
- Bloqueio: Uma rede ainda pode bloquear os endereços do proxy reverso ou o seu domínio. Porém, os endereços da Cloudflare atendem a muitos outros sites, portanto bloqueá-los tem um custo alto.
- DNS: Os aplicativos consultam seu domínio pelo DNS da rede antes de conectar. Se a rede bloquear ou falsificar a resposta, os aplicativos recorrem aos endereços da chave. Por isso, uma chave que contenha apenas o domínio não conseguirá conectar.
- Privacidade: O proxy reverso enxerga o que passa pelo túnel, exatamente como o seu servidor: para onde seus usuários se conectam e tudo o que enviarem sem criptografia. O tráfego HTTPS deles permanece criptografado. Use um proxy reverso de confiança.
- Apenas TCP: Seu servidor não disponibiliza portas UDP e QUIC para aplicativos que chegam pelo proxy.
- Termos de uso: Verifique se os termos do seu provedor permitem tráfego de VPN. Grupos pequenos de usuários, com cerca de 50 ou menos, normalmente não enfrentam problemas.
Antes de começar
- Um domínio ou subdomínio, com certificado de uma autoridade certificadora no seu servidor: o guia Usar um nome de domínio e um certificado confiável mostra como fazer. Configure isso primeiro, enquanto o registro do domínio ainda aponta diretamente para o servidor.
- Um único servidor associado ao domínio. Registros que apontam para dois servidores podem distribuir conexões da mesma sessão entre eles, interrompendo a sessão.
- O servidor escutando na porta TCP
443ou em outra porta repassada pelo proxy. A Cloudflare encaminha HTTPS apenas em443, 2053, 2083, 2087, 2096, 8443.
Ativar o proxy
- Na Cloudflare, acerte os registros DNS do seu domínio: marque como Proxied o registro que aponta para seu servidor, bem como o 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. No modo Flexible, ela usaria HTTP comum, que não é aceito pelo servidor.
O VpnHood! MANAGER renova seus certificados via HTTP comum na porta TCP 80, por meio do domínio, e a Cloudflare repassa essas requisições ao servidor. Em um servidor gerenciado, deixe Always Use HTTPS desativado: ativá-lo redirecionaria a requisição para HTTPS, impedindo a renovação.
Em um servidor gerenciado
Verifique o certificado do farm para o domínio: em Signature deve constar CA Signed, e Visibility deve estar como PublicInToken. Assim, as chaves incluirão o domínio para consulta pelos aplicativos.
Para direcionar todos os aplicativos pelo proxy, remova os endereços diretos do servidor nas chaves, em Access Points do servidor:
- Desative Automatic Configuration.
- Edite cada endereço e altere Mode para Private.
- Mantenha Listen em Yes para que o servidor continue escutando e aceitando conexões do proxy.
O MANAGER permite chaves sem endereço apenas enquanto o certificado estiver como CA Signed. O guia Defina os endereços IP do seu servidor explica cada configuração.
Mantendo em PublicInToken, os endereços continuam nas chaves, e os aplicativos usam tanto eles quanto o proxy. Assim, o proxy mantém seus usuários conectados mesmo se um endereço for bloqueado.
Os 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, todos os aplicativos que passam pelo proxy chegam ao mesmo destino.
Em um servidor independente
Confirme se o servidor usa o certificado do domínio, com IsValidHostName definido como true: o guia Use um nome de domínio e um certificado confiável mostra como fazer. As chaves criadas a partir de então incluirão o domínio, e os aplicativos farão a busca.
Um servidor independente sempre inclui seus próprios endereços nas chaves, junto com o domínio, para que os aplicativos usem ambos além do proxy. O proxy mantém seus usuários conectados caso um endereço seja bloqueado, mas qualquer pessoa com uma chave pode ver o endereço.