CloudFlare Tunnel — Publicando serviços ou sites sem abrir portas ou precisar de IP fixo.

Danilo Barreto Bezerra
5 min readOct 20, 2022

--

Provavelmente você já ouviu falar do Cloudflare, se não vou tentar explicar de uma maneira simples.

Se você possui um site e quer proteger, distribuir arquivos de imagens, ter segurança como filtro de ataques, minificação de HTML, CSS e Javascript e muito mais o CloudFlare é uma ferramenta GRATUITA para isto, e se você quer fazer mais como: Balanceamento de carga em diferentes regiões, criar muitas regras de conteúdo, reescrita de URL, CDN de imagens otimizadas para celular e muitas coisas assim os planos pagos podem ajudar também.

Bem seu funcionamento é bem simples…. basta criar uma conta no site deles e adicionar seu domínio e no final da etapa ele vai te dar os DNS que você precisa apontar seu domínio em seu registrador no caso domínios brasileiros seria a registro.br

Após isto a Cloudflare vai passar a cuidar do seu site, então você pode por ele criar subdomínio apontando para outro servidor e por ai vai as possibilidades neles são iguais qualquer servidor de gerenciamento de DNS porque basicamente ele será o principal ponto de entrada para acessar seus domínios (sim você pode ter quantos domínios desejar lá).

Bom este é o resumo bem simples tá.

Mas afinal o que é CloudFlare Tunnel?

Basicamente a ideia é que você tenha um site ou serviço hospedado em sua máquina, vamos dizer que seja seu PC mesmo mas ai sua criatividade pode ir mais longe como VPS, Servidor dedicado etc…

E não importa se ele fica mudando de endereço IP se você tiver IP dinâmico, acho que isso é o mais legal :D

E que partindo deste principio se você usa Linux Red Hat, Mac, Docker ou Windows (porque estes são os suportados até hoje na plataforma Cloudflare Tunnel), basta criar um Tunel no site deles ele vai gerar um script de instalação para que você rode no seu “servidor/pc/VPS” e pronto ele já estará conectado ao Cloudflare naquele Tunel que você criou.

Neste exemplo estou criando um tunel de nome: “Meu Tunel para VPS” e ele está me perguntando qual a minha plataforma e arquitetura para gerar o script

Mas o que isto faz na prática?
O CloudFlare tem CDN em diversos lugares do mundo e após instalar este script esses CDN agora podem chegar até você de maneira direta e entregar o seu conteúdo/site para o CDN mais próximo.
Ou seja só o cloudflare conhece seu IP e caminhos, e só ele pode acessar porque o script cria literalmente um tunnel entre seu servidor e os diversos CDNS deles ao redor do mundo.

Mas é seguro?
Eu diria que sim e muito, porque eles possuem uma estrutura gigante e mesmo que uma invasão ocorra nos serviços deles ele não teria acesso ao seu PC, servidor etc… porque o script apenas faz uma ligação entre você e eles, e eles só acessam aquilo que o tunel está configurado para acessar, ele não tem acesso a sua máquina direto digamos assim.

Exemplo:
Imagine que você tenha uma máquina virtual ou até mesmo seu PC e nele você tenha um servidor web como: Docker, IIS, Nigx ou até mesmo Apache e nele você tenha um site acessível em localhost:4432, basicamente só você consegue acessar este endereço por estar na sua rede ou sua máquina, mas quando você instalou o script do cloudflare daquele tunel e fez a configuração para que o domínio meudominio.com.br acesse localhost: 4432 que você criou ele literalmente está publico apenas para os CDNs do cloudflare e só os CDNs conseguem chegar até este endereço através do tunel, muito doido né?

Após criar o tunel e escolher o script de instalação para seu servidor, você é redirecionado para esta tela de hostnames publicos da qual eu coloquei que o subdomínio www do dominio danilobarretobezerra.com.br caia no serviço do tipo HTTP da url: localhost:4432 que está na máquina onde o script foi instalado

Exemplo prático

O CloudFlare recentemente mudou os acessos antigamente era acessível do meu do site que você configurou, agora ele é acessível na home no item: Zero Trust (da qual abre outra janela para outras configurações).

Na janela que se abrir você vai em Tunnels:

Ao abrir Tunnels, você terá esta tela, e no canto superior direito você pode criar seu primeiro tunnel

Após clicar em Create tunel você deve dar um nome para o seu tunnel

Após dar o nome você deve escolher a plataforma, na imagem abaixo escolhi Docker então ele me deu um comando docker para rodar no meu servidor e ele irá subir uma aplicação Docker da CloudFlare para fazer a ponte:

Dica: Se você escolher docker o container deles precisa estar na mesma rede virtual que sua aplicação está.

E outra dica:
Você pode colocar a porta interna da sua aplicação e não a porta que o docker está expondo ex: minha aplicação docler expoe a porta: 8181 para 8000 sendo assim ao configurar o hostname na cloudflare eu vou colocar localhost:8000 porque o acesso do tunel será de aplicação docker para aplicação docker.

Feito isto a próxima tela é de configuração do domínio ou subdomínio para sua aplicação local é bem simples, veja que configurei o www do meu subdomínio e o domínio eu escolhi na lista de domínios que tenho configurado em minha conta cloudflare, eu poderia até fazer só uma parte da URL usando o campo Path, mas no meu caso não usei
Na parte de Service, eu coloquei o protocolo HTTP, mas poderia ser qualquer um destes: HTTP, HTTPS, UNIX, TCP, SSH, RDP, UNIX+TLS, SMB, HTTP_STATUS

lembre-se sua imaginação de configuração aqui pode ir além de um simples site até um serviço

E pronto basicamente é isto e você tem agora um site/serviço publico sem abrir 1 porta no seu servidor.

Espero que seja útil, eu achei isso animal, tenho usado em diversos projetos e casos funciona muito bem e posso dormir tranquilo, porque não tenho que me preocupar com abrir portas, instalar firewall, saber se estou tendo uma invasão porque estou publicamente acessível na internet :D

--

--

Danilo Barreto Bezerra
Danilo Barreto Bezerra

Written by Danilo Barreto Bezerra

Desenvolvedor há mais de 20 anos, atualmente estou me especializando em ASP.NET CORE com Linux.