25 anos do Wireshark: o e-mail que começou tudo e as lições aprendidas
(blog.wireshark.org)- 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
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
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
Daria um post de blog bem interessante
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
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
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
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
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
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
É 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
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
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