1 pontos por GN⁺ 2023-07-16 | 1 comentários | Compartilhar no WhatsApp
  • O e-mail público de Gerald Combs sobre o Ethereal 0.2.0, enviado em 14 de julho de 1998, levou 25 anos depois ao Wireshark, com uma ferramenta pessoal se transformando em um projeto open source duradouro
  • Na época, analisadores de protocolo com GUI eram mais próximos de produtos comerciais caros, e as opções gratuitas eram ferramentas de linha de comando como tcpdump e snoop, então ele publicou como open source um analisador feito por conta própria
  • Poucos dias após a publicação, começaram a chegar patches e uma comunidade de desenvolvedores se formou; o Wireshark passou a ser usado para melhorar o desempenho, a confiabilidade e a segurança das redes, além de servir para educação
  • A operação de longo prazo exige não só usuários, educadores e desenvolvedores, mas também suporte jurídico, contábil e de infraestrutura; a faixa de suporte necessária varia conforme a escala do projeto
  • Com apoio de CACE Technology, Riverbed e Sysdig, o Wireshark foi recentemente transferido para a Wireshark Foundation, criando uma base para crescer de forma independente

Dos anúncios do Ethereal aos 25 anos do Wireshark

  • Há 25 anos, Gerald Combs enviou um e-mail com o título ANNOUNCE: Ethereal 0.2.0
    • O Ethereal era um analisador de rede capaz de capturar o conteúdo de quadros Ethernet e explorá-lo de forma interativa
    • Os dados de pacotes podiam ser lidos de arquivos ou em tempo real a partir de interfaces de rede locais
    • Ele disponibilizou a distribuição do código-fonte e informações adicionais, além de dizer que comentários e patches eram bem-vindos
  • O nome do projeto não era Wireshark desde o início; ele foi alterado para Wireshark em 2006
  • Na época do lançamento, analisadores de protocolo não eram comuns, e os analisadores com GUI muitas vezes eram produtos caros
    • Para verificar o estado da rede, era possível usar ferramentas gratuitas de linha de comando como tcpdump e snoop
    • Se fosse necessário um analisador com GUI, era preciso comprar um produto comercial caro
  • Como não havia um analisador que atendesse às suas necessidades de trabalho, Gerald Combs criou uma ferramenta simples por conta própria e a publicou como open source

Crescimento construído pela comunidade

  • Poucos dias após o lançamento do Ethereal, chegou o primeiro patch, e depois as contribuições continuaram
  • O projeto, que começou como uma pequena ferramenta, encontrou uma comunidade ativa de desenvolvedores e cresceu muito mais do que o esperado
  • Hoje, o Wireshark é usado por pessoas no mundo todo para tornar as redes mais rápidas, estáveis e seguras
  • Educadores usam o Wireshark para ensinar às próximas gerações de engenheiros de segurança e de redes o funcionamento de baixo nível das redes

O que é necessário para um projeto open source duradouro

  • Para que um projeto open source cresça e se sustente, é preciso atender em conjunto a necessidades de várias categorias
  • Suporte aos usuários

    • Os usuários reais vão desde pessoas experientes no uso diário até iniciantes
    • Às vezes, os usuários precisam de ajuda, e o suporte necessário varia entre eles
  • Suporte aos educadores

    • Especialistas e usuários experientes podem ensinar outras pessoas a aproveitar melhor o projeto
    • Os educadores também precisam de suporte contínuo
  • Suporte aos desenvolvedores

    • Quanto mais fácil for contribuir com código ou melhorar o projeto, mais saudáveis serão o projeto e a comunidade
  • Suporte jurídico e contábil

    • Áreas regulatórias, jurídicas e financeiras, como leis de propriedade intelectual e reembolso de despesas de viagem, exigem ajuda externa
    • GitHub ou GitLab, por si só, não resolvem essas áreas
  • Infraestrutura

    • São necessários servidores, contêineres e serviços que permitam presença online e colaboração
    • Se GitHub ou GitLab bastam ou não depende das necessidades específicas do projeto

Estrutura de suporte que muda conforme a escala do projeto

  • Essas cinco categorias não são exatamente iguais a uma hierarquia de necessidades em estilo Maslow para open source, mas têm uma estrutura parecida
  • As fronteiras entre usuários, educadores e desenvolvedores podem ser difusas
    • Em geral, usuários e educadores dependem dos resultados produzidos pelos desenvolvedores
    • O projeto como um todo precisa de uma infraestrutura robusta para que todos possam colaborar
  • Nem todo projeto precisa do mesmo modelo de suporte
    • Uma biblioteca pequena de processamento de imagens com propósito único pode precisar apenas de infraestrutura e desenvolvedores
    • Nesse caso, a comunidade de usuários também provavelmente será formada por outros desenvolvedores, e GitHub ou GitLab podem ser suficientes
    • Um grande aplicativo de edição de imagens com muitos recursos pode precisar de apoio em todas as cinco categorias e de um modelo de negócios para sustentá-las

O modelo operacional do Wireshark e a transição para a Foundation

  • O Wireshark é um projeto mais próximo de um grande aplicativo, então exige bastante gestão e suporte
  • Até recentemente, os recursos necessários eram obtidos pedindo aos empregadores de Gerald Combs que hospedassem o projeto
  • CACE Technology, Riverbed e Sysdig forneceram ao Wireshark recursos que iam além do que GitHub ou GitLab oferecem
    • Um exemplo é a SharkFest, conferência dedicada à análise de protocolos
  • Nos últimos anos, cresceu a necessidade de o projeto se sustentar por conta própria e, com a ajuda da Sysdig, ele foi transferido no início deste ano para a Wireshark Foundation
  • A transição para a Foundation cria a base para que o Wireshark continue crescendo e apoiando sua comunidade

O conselho que permanece após 25 anos

  • Quando enviou aquele e-mail há 25 anos, Gerald Combs não imaginava que estaria escrevendo um blog sobre este projeto hoje
  • A experiência de apoiar e administrar o Wireshark lhe proporcionou uma excelente carreira e a chance de conhecer e trabalhar com pessoas extraordinárias
  • Ele deixa a mensagem de que, se você quer começar um projeto open source, não deve hesitar
  • É importante permitir que a comunidade compartilhe os insights valiosos que possui
  • Se você não tiver medo de começar algo novo, não há como saber onde poderá chegar em 25 anos

1 comentários

 
GN⁺ 2023-07-16
Opiniões no Hacker News
  • Wireshark é como aquele martelo do ditado que faz todo problema de rede parecer um prego
    Mesmo que existam ferramentas mais especializadas, se você atacar com o Wireshark geralmente consegue encontrar a causa
    Ainda me surpreende que tanta gente que se diz especialista em redes nunca tenha usado ou não entenda o Wireshark; talvez seja a ferramenta mais importante para entender o que realmente acontece em uma rede
    Ontem mesmo rastreei com uma captura de pacotes um comportamento estranho em um sistema Asterisk/FreePBX atualizado; sem isso, teria passado dias só chutando, mas ao ver o que acontecia na rede consegui afunilar o problema rapidamente

    • É como um depurador para redes, e surpreendentemente há muitos programadores que também não sabem usar um depurador
    • Fico curioso se há bons materiais para entender bem o Wireshark
      Não sou especialista em redes, mas trabalho com coisas relacionadas e já usei às vezes; dá para sentir o poder, mas é uma ferramenta intimidadora no primeiro contato quando não se tem um problema bem pequeno e específico
      Também me pergunto se é o tipo de ferramenta que você aprende conforme precisa
    • Se tiver tempo, seria legal compartilhar qual foi esse problema no Asterisk/FreePBX e como ele foi resolvido com uma captura de pacotes
      Daria um post de blog bem interessante
    • Mesmo fora de uma área tão específica e hardcore quanto redes, o Wireshark ajudou muito
      Por volta de 2013, na Amazon, precisei criar em uma semana uma prova de conceito em Node.js para um app/serviço legado em Spring/Java, e havia autenticação entre serviços e mensageria Tibco no meio
      Não encontrei uma implementação pública de cliente Tibco e, por causa do princípio de liderança de frugalidade, era quase impossível conseguir a especificação oficial; eu só precisava de alguns detalhes da estrutura dos pacotes de certas requisições
      Dá para imaginar qual ferramenta me salvou, e até o Principal Engineer da época ficou surpreso que existisse uma ferramenta assim
  • Em 1983, quando Ethernet ainda usava cabo coaxial grosso e vampire taps, eu trabalhava em uma empresa de defesa no Silicon Valley
    Criamos um produto de bridge Ethernet que conectava as LANs DECnet das estações terrestres DSCS (Defense Satellite Communications System) no mundo todo por linhas criptografadas de 9600 bps, e, como parte do código, escrevi um dumper de pacotes que colocava a placa Ethernet em promiscuous mode
    Não havia um analisador como o Wireshark, mas só poder despejar pacotes brutos em hexadecimal no terminal já era uma vantagem enorme para depurar redes
    Quando instalo um sistema novo, o Wireshark é uma das primeiras ferramentas que instalo

    • Fico curioso sobre como a Ethernet passou de cabos grossos e vampire taps para RJ45
      Não sei se é exatamente o mesmo protocolo de então até hoje, nem se “protocolo” é a palavra certa
      Isso me dá vontade de me aprofundar mais em redes
  • Sou a pessoa que criou o Wireshark
    Ver as palavras carinhosas e as lembranças de todo mundo deixou minha manhã melhor

    • Resolvi muitos problemas ao longo dos anos com o Wireshark, mas hoje quase não o uso porque ele parece não acompanhar as taxas de transferência de dados comuns em servidores atuais
      A análise parece ser single-thread, não parece haver cache, e ele sofre até com capturas de “apenas” alguns GB, que em um link de 10 Gbps correspondem a só alguns segundos
  • Desde o começo foi uma ferramenta indispensável no meu trabalho
    tcpdump era bom, mas poder clicar com o botão direito em um pacote e escolher follow TCP stream para ver a conversa inteira em 1 segundo foi um divisor de águas
    “right click->filter out this stream” também foi, e como o Ethereal/Wireshark podia ler arquivos salvos do tcpdump, dava para entrar por ssh em um servidor remoto, rodar tcpdump e verificar os fluxos de rede dos dois lados no Wireshark no cliente
    NAT suspeito de ISP aparecia de cara, e redes MPLS mal configuradas podiam ser apresentadas com provas, impedindo o time de roteamento de dizer apenas “do nosso lado parece bom”
    Mas quero corrigir uma coisa do texto: o Ethereal não foi o primeiro analisador gratuito de pacotes de rede com GUI; na época do Windows NT já havia ferramentas como o netmon da Microsoft

    • Essa ferramenta era o Network Monitor, também conhecido como netmon, e internamente também era chamado de Bloodhound
      Havia uma API documentada e, embora o suporte fosse meio incerto, era fácil de plugar; antes do Ethereal, cheguei a criar um wrapper de tcpdump em cima dela
      Com a pilha TCP de “próxima geração” do Longhorn/Vista, essa API e o netmon foram invalidados
      Depois veio o Microsoft Message Analyzer, que era baseado em ETW e permitia analisar rede e outros rastreamentos ETW, além de escrever qualquer manipulador de protocolo com a DSL suportada
      Também dava para fazê-lo parsear arquivos de log e filtrar/analisar dados; talvez por ser poderoso demais e útil demais para desenvolvedores Windows, a Microsoft acabou matando-o
    • Se só rodava no Windows, é discutível se era realmente gratuito
      No fim, era uma ferramenta incluída em um sistema operacional pelo qual você tinha pago
  • Wireshark é como um multímetro na eletrônica
    O mundo continua girando sem ele, mas, quando algo quebra, você está ferrado se não tiver um

    • Graças ao Wireshark e ao tcpdump, encontrei muitos problemas estranhos na rede do campus
  • Essa ferramenta, que na época se chamava Ethereal, foi realmente valiosa no meu trabalho de Senior Tech Support da linha de produtos WebLogic
    Eu conseguia pedir ao cliente para executá-la diretamente e dar respostas como: “todas as conexões do grande pool de conexões JDBC foram silenciosamente derrubadas por um firewall de rede que o cliente nem sabia que existia, e por isso a primeira transação da manhã fica atrasada em 1 hora; todas as conexões do pool precisavam expirar e ser restabelecidas”
    Também peguei problemas como: “o Internet Explorer encerra a conexão TCP de um recurso já em cache, causando um erro não padrão em nível de rede em uma instalação do WebLogic em servidor IBM”
    Perdi metade do cabelo com esse trabalho; sem o Ethereal, teria perdido muito mais, junto com a sanidade

  • Usei o Wireshark todos os dias por mais de 10 anos dando suporte a balanceadores de carga em redes de clientes
    pcaps e core dumps eram os dados mais interessantes de lidar; aprendi libpcap e acabei até criando minha própria versão, o que me permitiu passar do suporte técnico de produto para desenvolvimento
    Entrei como engenheiro de suporte e saí como Principal Software Engineer escrevendo diretamente o código que antes eu dava suporte; graças ao Wireshark e ao gdb, consegui aprender muita coisa sozinho sem fazer faculdade

    • Gosto de chamar isso de problema do tipo “não sei o que está errado, então com certeza deve ser a rede”
  • É uma ferramenta realmente excelente e totalmente gratuita
    Uso com frequência para depurar problemas de rede e ver onde os dispositivos estão se conectando; como alguém disse, é como um multímetro para redes
    Também usei para aprender a configuração de conexão com pontos de acesso WiFi, e dá para ver tanto pacotes beacon quanto pacotes WiFi

    • Adotei o Ethereal muito cedo
      A equipe tinha um Sniffer PC, mas muitas vezes alguém estava usando ou a decodificação de protocolos não era suficiente
  • É um software realmente excepcional
    Há 20 anos, eu estava travado no local de um cliente tentando encontrar um problema de interoperabilidade nos nossos equipamentos de rede; lembro que escrever um plugin de dissecção de protocolo por duas semanas ajudou de forma bem tranquila
    No fim, era um bug nosso: ao mudar a implementação de select() para epoll(), não removemos a aplicação da máscara de bits usada pelo select()
    Essencialmente era um erro de corrupção de memória de 1 bit, e o resultado podia aparecer muito tempo depois
    Curiosamente, esse tipo de lembrança fica por muito tempo

    • Invejo a capacidade de encontrar prazer nesse tipo de coisa
      No começo da carreira, em uma instalação segura onde não era permitido instalar o Wireshark, passei uma semana investigando um bug de rede irritante usando só tcpdump
      No fim, era uma combinação do pior bug da biblioteca padrão de uma versão de 10 anos do GNAT (biblioteca Ada) com um erro de configuração de ARP, sendo que o bug da biblioteca já tinha sido corrigido 7 anos antes
      Aquela semana foi tão horrível que teve grande influência na minha decisão de ir para um lugar melhor; é preciso uma personalidade especial para gostar disso
  • As pessoas muitas vezes imaginam mudar o mundo, mas também existem aquelas que de fato mudam o mundo