CloudFlare Tunnel — Publicando serviços ou sites sem abrir portas ou precisar de IP fixo.
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.
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é?
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