VPNSmith
self-host-vpn-headINFO

Tailscale Funnel: a palavra que põe a tua aplicação na internet pública

O Tailscale Serve partilha um serviço local dentro da tua tailnet. O Tailscale Funnel coloca-o na internet aberta, ao alcance de qualquer pessoa. Mesma sintaxe, uma palavra de diferença, exposição oposta. O que o Funnel faz na realidade, as suas três portas permitidas, o que é preciso ativar antes e quando o Cloudflare Tunnel encaixa melhor.

Por Eric Gerard · Fundador · VPNSmith - Especialista em VPN auto-hospedada e VPS RGPD5 min de leituraFoto via Pexels

Dois comandos da Tailscale diferem numa palavra. tailscale serve partilha um serviço local com os dispositivos da tua própria tailnet. tailscale funnel encaminha tráfego da internet em sentido lato para esse mesmo serviço, ao alcance de qualquer pessoa que tenha o URL.

Mesma sintaxe, exposição oposta. É o artigo inteiro em duas frases — mas trocar o sentido deixa na internet aberta um serviço que julgavas privado, por isso vale a pena ser preciso sobre o que o Funnel faz e não faz.

O que o Funnel é, na realidade

A descrição da Tailscale é direta: o Funnel «permite encaminhar tráfego da internet em sentido lato para um serviço local em execução num dispositivo da tua rede Tailscale». O objetivo é partilhar com pessoas que não estão na tua tailnet e não têm conta Tailscale.

O Serve é o caso inverso, e a documentação di-lo sem rodeios: se queres partilhar serviços locais apenas com os outros dispositivos da tailnet, usa o Serve.

A decisão não é, portanto, uma preferência técnica, é uma pergunta sobre o teu público:

  • Apenas as tuas máquinas e as pessoas convidadas para a tailnet → Serve.
  • Qualquer pessoa com a ligação, incluindo desconhecidos → Funnel.

Se não souberes responder a essa pergunta para um dado serviço, não corras ainda nenhum dos dois comandos.

As três restrições que decidem se o Funnel serve

O Funnel é deliberadamente estreito, e os seus limites estão documentados em vez de serem descobertos pelo caminho. Três deles resolvem a maioria dos casos antes de escreveres uma linha de configuração.

As portas: 443, 8443, 10000. É a lista completa. O Funnel só pode escutar nessas três. Não é um valor por omissão a sobrepor — se o teu serviço tiver de estar acessível publicamente noutra porta, o Funnel não é a ferramenta.

O nome de anfitrião pertence à Tailscale. O Funnel só pode usar nomes DNS do domínio da tua tailnet, na forma tailnet-name.ts.net. Se pensavas colocar um produto, uma demonstração para clientes ou algo com a tua marca num domínio teu, não é isso que ele faz.

A largura de banda tem teto, e o teto não é teu. A Tailscale afirma que o tráfego enviado através do Funnel está sujeito a limites não configuráveis. Para uma página de configuração ou uma ferramenta interna pequena, é irrelevante. Para transmitir uma mediateca a familiares, esse teto será provavelmente o constrangimento, antes da tua velocidade de envio.

Grande plano das mãos de um programador sobre um teclado, à frente de um ecrã cheio de código
Grande plano das mãos de um programador sobre um teclado, à frente de um ecrã cheio de código

A parte que se salta: não há qualquer início de sessão à frente

É a razão pela qual a confusão entre Serve e Funnel pesa mais do que uma gralha vulgar.

A documentação da Tailscale não descreve qualquer camada de autenticação à frente de um ponto de entrada Funnel — e é intencional, porque toda a sua finalidade é servir pessoas que não estão na tailnet e que, por isso, não podem ser autenticadas por ela. O Funnel dá-te uma entrada HTTPS pública; não te dá uma porta.

Consequência prática: a autenticação da tua aplicação é a única coisa entre a internet e os teus dados. Um painel sem palavra-passe, um explorador de ficheiros que confia na rede local, um painel de administração que só era acessível a partir da LAN — todos ficam abertos no momento em que são «funnelados» em vez de servidos.

Antes de ativar isto sobre o que quer que seja, o teste honesto cabe numa pergunta: publicaria este URL abertamente sem desconforto? Se a resposta for não, o serviço precisa da sua própria autenticação, ou precisa do Serve em vez do Funnel.

Ativá-lo: primeiro o ficheiro de políticas

O Funnel não está ativo por omissão num nó. Exige um atributo de nó funnel no ficheiro de políticas da tua tailnet, que indica à Tailscale que utilizadores o podem usar. Por omissão, esse direito vai para autogroup:member.

Essa mediação merece ser compreendida em vez de ignorada: significa que o Funnel é uma decisão administrativa ao nível da tailnet, não apenas um comando que alguém corre no portátil. Numa tailnet partilhada, quem controla o ficheiro de políticas controla a própria possibilidade de expor serviços publicamente.

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

Um VPS com IP público próprio, sem túnel → ContaboIPv4 pública · Controlas a firewall, as portas e o proxy inverso · Sem teto de largura de banda imposto por terceiros

Quando o Funnel é a resposta certa e quando não é

O Funnel encaixa quando queres dar a alguém de fora da tua tailnet um URL HTTPS que funcione com o mínimo de cerimónia: um ponto de entrada de webhook que um serviço terceiro tem de alcançar, uma pré-visualização do que estás a construir, uma partilha temporária. Os certificados e a entrada pública são tratados por ti, e funciona em todos os planos.

O Funnel não encaixa quando precisas de um domínio teu, de uma porta fora das três permitidas, de débito sustentado ou de uma camada de autenticação que controles. Esses requisitos apontam para outro lado: um proxy inverso numa máquina com IP público próprio, ou um produto de túnel construído em torno de domínios personalizados.

E para o caso em que as pessoas mais frequentemente pensam ao recorrer ao Funnel — quero que os meus dispositivos alcancem este serviço a partir de qualquer lugar — nem o Funnel nem um túnel público são a resposta. É o que a tailnet já faz, e o que um nó de saída ou um servidor WireGuard auto-hospedado fazem sem expor seja o que for publicamente.

O essencial

serve e funnel estão a uma palavra de distância no terminal e são opostos naquilo que publicam. O Serve mantém um serviço dentro da tailnet; o Funnel põe-no na internet, numa de três portas, sob um nome ts.net, com teto de largura de banda e sem nada que autentique os visitantes.

Decide antes de escrever qual é o público que realmente pretendes. Se a resposta for «as minhas máquinas», nunca precisaste de uma entrada pública — e a exposição mais segura continua a ser a que nunca se abriu.

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

Aloje a sua VPN no seu próprio VPS → ContaboAcesso root completo · IPv4 público · escolha a sua região

Perguntas frequentes

Qual é a diferença entre o Tailscale Funnel e o Tailscale Serve?
O Serve partilha um serviço local apenas com os outros dispositivos da tua tailnet. O Funnel encaminha tráfego vindo da internet em sentido lato para esse serviço, pelo que qualquer pessoa o pode alcançar — incluindo quem não tem conta Tailscale. A documentação é explícita nesta separação: se queres partilhar só com os teus dispositivos, usa o Serve. Os comandos são quase iguais, e é precisamente por isso que o erro acontece.
Que portas pode o Tailscale Funnel usar?
Apenas três: 443, 8443 e 10000. É um limite rígido, não um valor por omissão que se possa sobrepor. Se o teu serviço tiver de estar acessível publicamente noutra porta, o Funnel é a ferramenta errada e precisas de um proxy inverso ou de outro túnel.
O Funnel coloca autenticação à frente do meu serviço?
Não. A documentação da Tailscale não descreve qualquer camada de autenticação integrada à frente de um ponto de entrada Funnel — a finalidade do Funnel é justamente servir pessoas que não estão na tua tailnet. A autenticação da tua própria aplicação é a única coisa entre a internet e os teus dados. Se a aplicação não tiver, está aberta.
É preciso um plano pago para usar o Funnel?
Não. A Tailscale indica que o Funnel está disponível em todos os planos. O que é preciso é o atributo de nó «funnel» no ficheiro de políticas da tailnet, que define que utilizadores o podem ativar — por omissão, autogroup:member.
Que nome de anfitrião usa um ponto de entrada Funnel?
Um do domínio da tua própria tailnet, na forma tailnet-name.ts.net. O Funnel não consegue servir diretamente um domínio teu, o que importa se pensavas alojar ali um produto.
O Funnel é suficientemente rápido para transmitir multimédia?
O tráfego que passa pelo Funnel está sujeito a limites de largura de banda que a Tailscale descreve como não configuráveis. Foi pensado para partilhar um serviço, não para difusão contínua. Numa mediateca partilhada com pessoas fora da tailnet, o constrangimento será provavelmente esse limite, antes do teu envio.