- Em 7 de março de 2024, o tailscale.com ficou fora do ar por cerca de 90 minutos devido a um certificado TLS expirado, mas o impacto ficou concentrado principalmente na documentação e no site de marketing
- O problema apareceu cerca de 90 dias depois da reformulação do site e da migração para uma nova hospedagem em dezembro de 2023; uma configuração de proxy próprio criada para contornar a falta de suporte a IPv6 impediu a renovação automática
- O prober de monitoramento de expiração de certificados verificava apenas a rota IPv6 e passava por um proxy com um certificado válido separado, deixando passar a expiração iminente dos certificados reais de tailscale.com e www.tailscale.com
- O uso normal do Tailscale, em sua maior parte, não foi interrompido, mas houve impacto na documentação, no blog, no install.sh e no fluxo de acesso ao console de administração para usuários que não conheciam a URL direta
- A Tailscale recuperou o serviço removendo registros AAAA adicionais e renovando manualmente o certificado; depois de adotar um esquema temporário de renovação manual e verificações separadas de IPv4/IPv6, busca oferecer suporte a IPv6 mais direto
Por que a expiração do certificado passou despercebida
- Em 7 de março de 2024, os certificados TLS de tailscale.com e www.tailscale.com expiraram, deixando o acesso ao site indisponível por cerca de 90 minutos
- Em dezembro de 2023, a Tailscale migrou para um novo provedor de hospedagem junto com uma grande reformulação do site
- Como o novo provedor de hospedagem não oferecia suporte nativo a IPv6, a Tailscale operava seu próprio proxy para processar requisições IPv6 e configurou registros AAAA adicionais
- O provedor de hospedagem tratou essa configuração como uma “misconfiguration” e enviou um alerta, mas o aviso não especificava que ela impediria a conclusão da renovação automática do certificado
- O prober usado para monitorar a expiração de certificados verificava apenas a rota IPv6
- O prober passava pelo proxy próprio
- O proxy tinha um certificado válido gerenciado separadamente
- Por isso, a expiração real dos certificados de tailscale.com e www.tailscale.com não foi detectada com antecedência
Impacto visto pelos usuários
- O impacto se concentrou em materiais e fluxos de instalação dependentes do site
- A documentação do Tailscale, o blog e outros materiais de referência baseados no site ficaram inacessíveis durante a indisponibilidade
- O console de administração e as páginas de configuração em si não foram afetados, mas usuários que não sabiam acessar diretamente
https://login.tailscale.com/poderiam achar que a página estava offline - O script de instalação rápida ficou indisponível, prejudicando algumas instalações e instalações automatizadas
- O domínio que efetivamente fornece os pacotes de instalação do Tailscale permaneceu acessível, e a interrupção da resolução via mecanismo
go getdo Go parece ter sido mínima graças ao cache - Pelo design do Tailscale, a maioria dos usuários, na maioria dos casos de uso, não sofreu interrupção com este incidente, e o princípio de conexões diretas torna a rede menos dependente da disponibilidade imediata de endpoints específicos como tailscale.com
Recuperação e prevenção de recorrência
- Depois de identificar o problema, a Tailscale removeu temporariamente os registros AAAA “adicionais” e renovou manualmente os certificados relacionados
- Essa ação resolveu imediatamente a indisponibilidade visível aos usuários, e os registros foram restaurados pouco depois para oferecer o site e os serviços via IPv6
- Como o problema de renovação automática permaneceu, no curto prazo a empresa planeja renovar diretamente os certificados com alertas redundantes no calendário e horários definidos para renovação manual
- A infraestrutura de prober será atualizada para verificar separadamente os endpoints IPv4 e IPv6
- No longo prazo, o objetivo é oferecer suporte a IPv6 de forma mais direta na infraestrutura do site, em uma arquitetura que não exija um proxy próprio
1 comentários
Opiniões no Hacker News
Certificados expirando agora são o novo DNS das indisponibilidades
Ainda assim, continuo impressionado com o quanto o Tailscale é bem construído. Sou mais um usuário leve, mas acesso via Tailscale dois ambientes: alguns servidores on-premises e o ambiente de produção na AWS
Posso trabalhar de qualquer lugar. No fim de semana, tentei fazer deploy de um contêiner ECS, mas o Wi‑Fi local estava tão lento que o deploy continuava estourando o tempo limite
Então entrei por SSH na máquina de desenvolvimento on-premises, fiz
git pulldo código mais recente e fiz o deploy a partir dali. Tanto o ambiente on-premises quanto a AWS estavam seguros, sem portas abertas, e, se eu simplesmente rodar o agente do Tailscale em uma pequena EC2 na AWS, também consigo testar o banco Aurora de produção sem portas abertasQuando preciso dar acesso de rede a outro desenvolvedor, o Tailscale também é muito fácil, e revogar o acesso é igualmente simples. Esse deploy poderia ter sido feito com algo como GitHub Actions para evitar o problema da internet ruim, mas eu queria fazer manualmente, e o Tailscale tornou isso possível
No futuro, pretendo usar esta action para que qualquer worker do GHA consiga acessar a máquina de deploy sem expor portas: https://github.com/tailscale/github-action
Um certificado expirado causou outro incidente
Como parte do post-mortem, recomendo separar o script de instalação do site de marketing ou criar outro caminho alternativo. Assim, a atividade do site de marketing deixa de fazer parte do caminho crítico das operações dos clientes. Como esse tipo de coisa é comum, é ainda mais frustrante porque eles já estavam quase mantendo um isolamento normal
Ao acompanhar o uptime de vários provedores, quedas em partes dos sites do GitHub ou do Zendesk são mais comuns do que se imagina. E eles ainda estão entre os bons exemplos
A Cloudflare parece cuidar bem dessa parte se você hospedar o domínio lá, mas isso vem com a condição de usar a Cloudflare
É o mesmo erro que cometemos em uma empresa antiga. Colocamos na home do site de marketing
www.foo.comum link para a página de login do web appapp.foo.comSó depois da primeira indisponibilidade do site de marketing percebemos que o plano de hospedagem de 40 dólares por mês não era apenas um simples site de marketing, mas infraestrutura crítica. Literalmente uma hospedagem de 40 dólares sustentando carga. O app não caiu, mas os usuários acharam que tinha caído
Aprendi que os usuários simplesmente seguem o caminho que criamos e muitas vezes não sabem que existe outro; se você remove esse único caminho, parte dos usuários fica completamente perdida
tailscaleno navegador, o primeiro resultado étailscale.com. Como não uso o console de administração do Tailscale com frequência, não me dou ao trabalho de memorizar outra URLAntes, ao digitar
cloudflare, o navegador autocompletavadash.cloudflare.com, mas depois de visitar o sitecloudflare.comuma única vez, ele virou o primeiro resultado, e acabei fazendo a mesma coisa com a CloudflareEssa equipe é muito boa, mas acho o preço exagerado. É quase impossível vender para a diretoria um controle de acesso decente para VPN custando 18 dólares por mês, e os tiers mais baixos ficam difíceis de vender sem esse recurso
Quais são as opções mais baratas, e elas também oferecem recurso de SSH, autenticação de rede via OAuth para serviços de automação, configuração de balanceador de carga de nós VPN dentro de clusters Kubernetes e automação de solicitação de certificados ACME via Let’s Encrypt?
Só listando alguns recursos que uso no tier gratuito, já há muita coisa que normalmente não se considera papel de um serviço de VPN. E eles continuam adicionando recursos, então acho uma opção bastante interessante e competitiva. Na verdade, fico ainda mais curioso com essa avaliação porque me surpreende o quanto eles oferecem nos tiers mais baratos
Também há produtos concorrentes que se sobrepõem em parte ao Tailscale, e talvez não sejam exatamente o que você quer
Ainda assim, em poucos minutos, partes do projeto passaram a se encaixar muito melhor do que antes
Pelo que faz, é uma daquelas ferramentas raramente simples, e o tier gratuito também é bem generoso, com 100 dispositivos e 3 usuários
Claro que, pelo meu papel, eu tinha bastante influência para convencer a diretoria nesse tipo de assunto, mas o preço não foi um problema
Somos clientes satisfeitos desde abril do ano passado e todos usam o tier premium, ou seja, o caro. A velocidade de desenvolvimento também impressiona. Alguns recursos que diziam poder levar anos já foram lançados no ano passado
O Cloudflare One também poderia ser uma alternativa, mas teria sido mais caro
Fico curioso sobre qual provedor eles usam para o site. Quase todos os outros provedores têm suporte a IPv6, então soa estranho precisar de tantos contornos por causa do IPv6
$ host www.tailscale.com, o endereço IPv476.76.21.21dewww.tailscale.comé da Vercel, e os endereços IPv6 são da AmazonO IPv4 usa um certificado da Let’s Encrypt, e o IPv6 usa um certificado da Amazon
Dá até inveja ver que o CI/CD e o monitoramento deles são sólidos a ponto de confiarem em um rollout grande em dezembro. A cultura de engenharia parece bem forte.
Ainda assim, há perguntas que ficaram sem resposta. Se a configuração de IPv6 quebrou a renovação automática de certificados do IPv4, fico curioso para saber por que isso não aconteceu muito antes. Também fico curioso para saber por que levou 90 minutos para resolver a interrupção. É um post de blog, não uma análise post-mortem de verdade, mas teria sido bom ter ao menos uma linha do tempo simples.
Também fico curioso para saber por que eles não migram para um provedor de DNS com suporte nativo a IPv6. E se o ônus operacional de manter um domínio separado só para scripts ou pacotes realmente vale a pena. Excluindo terceiros como repositórios de pacotes, fico curioso se outros também fazem assim.
Não entendo por que o proxy precisava terminar TLS. Se fosse apenas um proxy TCP, pelo menos o monitoramento não teria se enganado achando que o certificado não estava perto de expirar.
Além disso, se a validação de domínio estava sendo feita com um desafio TLS-ALPN, um proxy TCP poderia até ter permitido a renovação automática.
Se você não precisa do IP do usuário, não é um problema, mas ele costuma ser útil para logs e detecção de abuso.
https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt
Quando descobrimos inicialmente que o IPv6 estava quebrado, colocamos um proxy às pressas, e as pessoas que configuraram o proxy na época não sabiam como o ACME funcionava.
Vamos mudar para um proxy TCP simples.
Pelo que vi, a Tailscale parece usar a NetActuate em
pkgs.tailscale.com. A NetActuate provavelmente conseguiria ajudar a fornecer proxies não terminadores em vários pontos de presença por um preço razoável. Não há preços no site, mas não parece uma empresa que coloque uma margem de 50 vezes sobre o tráfego de saída.Se uma organização como a Tailscale escorrega uma única vez em qualquer área minimamente ligada à segurança, para alguém só um pouco paranoico como eu isso já parece arriscado demais.
Essa parte precisa de uma explicação melhor.
Como eles devem ter monitoramento de infraestrutura, basta adicionar 50 linhas de código que acessem todos os domínios públicos via IPv4 e IPv6 e emitam alerta se o certificado expirar em menos de 19 dias. A renovação automática roda 20 dias antes e pronto.
Depois de perder algumas renovações de SSL no início de uma pequena empresa, escrevi esse código anos atrás, e desde então não tivemos incidentes relacionados a SSL.
Não precisa de convite de calendário; a única correção necessária é essa. O ponto central é “atualizar a infraestrutura de probes para verificar separadamente os endpoints IPv4 e IPv6”.
Está escrito que “essa configuração era considerada uma má configuração por aquele provedor, então recebíamos alertas continuamente desde que a implantamos”.
Então eles receberam alertas relacionados ao certificado por 90 dias e depois o certificado falhou?
Como não vi o alerta real, não sei se ele explicava isso com clareza.