1 puntos por GN⁺ 2023-07-16 | 1 comentarios | Compartir por WhatsApp
  • El correo público que Gerald Combs envió el 14 de julio de 1998 para anunciar Ethereal 0.2.0 terminó convirtiéndose 25 años después en Wireshark, y una herramienta personal creció hasta volverse un proyecto open source de larga duración
  • En ese momento, los analizadores de protocolos con GUI eran casi siempre productos comerciales costosos, y las opciones gratuitas eran herramientas de línea de comandos como tcpdump o snoop, así que publicó como open source un analizador hecho por él mismo
  • A los pocos días del lanzamiento empezaron a llegar parches y se formó una comunidad de desarrolladores; Wireshark pasó a usarse para mejorar el rendimiento, la confiabilidad y la seguridad de las redes, además de la educación
  • Para sostener un proyecto a largo plazo se necesita no solo a usuarios, educadores y desarrolladores, sino también apoyo legal, contable y de infraestructura; el alcance de ese apoyo cambia según la escala del proyecto
  • Wireshark, que ha contado con el apoyo de CACE Technology, Riverbed y Sysdig, pasó recientemente a la Wireshark Foundation para sentar las bases de un crecimiento independiente

De la publicación de Ethereal a los 25 años de Wireshark

  • Hace 25 años, Gerald Combs envió un correo con el asunto ANNOUNCE: Ethereal 0.2.0
    • Ethereal era un analizador de red capaz de capturar el contenido de tramas Ethernet y explorarlo de forma interactiva
    • Los datos de paquetes podían leerse desde archivos o en tiempo real desde una interfaz de red local
    • Compartió el paquete fuente y más información, e indicó que eran bienvenidos los comentarios y los parches
  • El proyecto no se llamó Wireshark desde el inicio; el nombre cambió a Wireshark en 2006
  • Cuando se publicó, los analizadores de protocolos no eran comunes, y los analizadores con GUI solían ser productos caros
    • Para revisar el estado de una red se podían usar herramientas gratuitas de línea de comandos como tcpdump o snoop
    • Si se necesitaba un analizador con GUI, había que comprar un producto comercial costoso
  • Como Gerald Combs no tenía un analizador que cubriera sus necesidades de trabajo, creó una herramienta sencilla por su cuenta y la publicó como open source

El crecimiento impulsado por la comunidad

  • A los pocos días de publicarse Ethereal, llegó el primer parche, y después las contribuciones continuaron
  • Lo que empezó como una herramienta pequeña creció mucho más de lo esperado al encontrarse con una comunidad activa de desarrolladores
  • Hoy, usuarios de todo el mundo usan Wireshark para hacer que las redes sean más rápidas, estables y seguras
  • Los educadores usan Wireshark para enseñar el funcionamiento de bajo nivel de las redes a la próxima generación de ingenieros de seguridad y redes

Qué necesita un proyecto open source duradero

  • Para que un proyecto open source crezca y se mantenga en el tiempo, debe cubrir necesidades de varias categorías a la vez
  • Soporte para usuarios

    • Los usuarios reales van desde personas experimentadas que lo usan a diario hasta principiantes
    • A veces necesitan ayuda, y el tipo de apoyo requerido varía entre unos y otros
  • Soporte para educadores

    • Los expertos y usuarios avanzados pueden enseñar a otras personas a aprovechar mejor el proyecto
    • Los educadores también necesitan apoyo continuo
  • Soporte para desarrolladores

    • Cuanto más fácil sea contribuir código o mejorar el proyecto, más saludable será el proyecto y su comunidad
  • Soporte legal y contable

    • Áreas regulatorias, legales y financieras como la propiedad intelectual o el reembolso de gastos de viaje requieren ayuda externa
    • GitHub o GitLab por sí solos no resuelven estas necesidades
  • Infraestructura

    • Se necesitan servidores, contenedores y servicios que hagan posible la presencia en línea y la colaboración
    • Que GitHub o GitLab sean suficientes depende de las necesidades concretas del proyecto

Una estructura de apoyo que cambia según la escala del proyecto

  • Estas cinco categorías no son exactamente la misma jerarquía de necesidades tipo Maslow del open source, pero sí tienen una estructura parecida
  • Los límites entre usuarios, educadores y desarrolladores pueden ser difusos
    • En general, los usuarios y educadores dependen de los resultados creados por los desarrolladores
    • Todo el proyecto necesita una infraestructura sólida para que todos puedan colaborar
  • No todos los proyectos necesitan el mismo modelo de apoyo
    • Una biblioteca pequeña y de propósito único para procesamiento de imágenes puede necesitar solo infraestructura y desarrolladores
    • En ese caso, es probable que su comunidad de usuarios también esté compuesta por otros desarrolladores, y GitHub o GitLab podrían bastar
    • Una aplicación grande de edición de imágenes con muchas funciones puede necesitar apoyo en las cinco categorías y un modelo de negocio que lo sostenga

El modelo operativo de Wireshark y el traslado a la Foundation

  • Wireshark es un proyecto más cercano a una aplicación grande, así que requiere mucha gestión y apoyo
  • Hasta hace poco, los recursos necesarios se obtenían pidiendo a los empleadores de Gerald Combs que alojaran el proyecto
  • CACE Technology, Riverbed y Sysdig aportaron a Wireshark recursos que iban más allá de GitHub o GitLab
    • Un ejemplo es SharkFest, una conferencia dedicada al análisis de protocolos
  • En los últimos años creció la necesidad de que el proyecto pudiera sostenerse por sí mismo, y con ayuda de Sysdig se trasladó a inicios de este año a la Wireshark Foundation
  • El traslado a la Foundation sienta las bases para que Wireshark siga creciendo y apoyando a su comunidad

El consejo que queda 25 años después

  • Gerald Combs dice que, cuando envió aquel correo hace 25 años, no imaginaba que algún día estaría escribiendo un blog sobre este proyecto
  • La experiencia de apoyar y gestionar Wireshark le dio una gran carrera y la oportunidad de conocer y trabajar con personas extraordinarias
  • Deja un mensaje claro para quien quiera iniciar un proyecto open source: no lo dudes
  • Es importante permitir que la comunidad comparta las ideas valiosas que tiene
  • Si no temes empezar algo nuevo, no sabes hasta dónde podrías llegar dentro de 25 años

1 comentarios

 
GN⁺ 2023-07-16
Comentarios de Hacker News
  • Wireshark es como el martillo del dicho que hace que todos los problemas de red parezcan clavos
    Aunque existan herramientas más especializadas, si le entras con Wireshark por lo general puedes encontrar la causa
    Todavía me sorprende que haya tanta gente que se dice experta en redes pero nunca ha usado Wireshark o no lo entiende, y puede ser la herramienta más importante para comprender qué está pasando realmente en una red
    Apenas ayer rastreé un comportamiento extraño en un sistema Asterisk/FreePBX actualizado con una captura de paquetes; sin eso, habría sido un problema sobre el que habríamos estado adivinando durante días, pero al ver lo que pasaba en la red pude acotarlo de inmediato

    • Es como un depurador para redes, y sorprendentemente también hay muchos programadores que no saben usar un depurador
    • Me pregunto si hay buenos recursos para entender Wireshark de verdad
      No soy especialista en redes, pero lo he usado ocasionalmente por trabajo, y aunque se siente su poder, es una herramienta abrumadora al principio si no tienes un problema muy pequeño y específico
      También me pregunto si es el tipo de herramienta que se aprende según se va necesitando
    • Si tienes tiempo, estaría bueno que compartieras cuál era ese problema de Asterisk/FreePBX y cómo lo resolviste con una captura de paquetes
      Incluso daría para una entrada de blog muy interesante
    • Wireshark me ha ayudado mucho incluso fuera de áreas tan concretas y hardcore como redes
      Por allá de 2013, en Amazon, tuve que construir en una semana una prueba de concepto en Node.js de una app/servicio heredado de Spring/Java, y había autenticación entre servicios y mensajería Tibco involucradas
      No pude encontrar una implementación pública del cliente de Tibco, y por el principio de liderazgo de frugalidad era casi imposible conseguir la especificación oficial, pero solo necesitaba algunos detalles de la estructura de paquetes de unas cuantas solicitudes
      Ya te imaginarás qué herramienta me salvó; incluso al Principal Engineer de ese entonces le sorprendió que existiera una herramienta así
  • En 1983, cuando Ethernet todavía usaba cable coaxial grueso y vampire taps, trabajaba en una contratista militar en Silicon Valley
    Hacíamos un producto de puente Ethernet que conectaba las LAN DECnet de estaciones terrestres del DSCS (Defense Satellite Communications System) de todo el mundo por líneas cifradas de 9600bps, y como parte del código escribí un volcado de paquetes que ponía la tarjeta Ethernet en modo promiscuo
    No había un analizador como Wireshark, pero el solo hecho de poder volcar paquetes crudos en hexadecimal a una terminal ya era una ventaja enorme para depurar la red
    Cuando instalo un sistema nuevo, Wireshark es una de las primeras herramientas que instalo

    • Me da curiosidad cómo pasó Ethernet de cable grueso y vampire taps a RJ45
      No sé si el protocolo es exactamente el mismo entonces y ahora, ni siquiera si "protocolo" es la palabra correcta
      Me dan ganas de profundizar más en redes
  • Soy la persona que hizo Wireshark
    Ver las palabras tan cálidas y los recuerdos de todos me alegró la mañana desde temprano

    • He resuelto muchos problemas con Wireshark durante años, pero últimamente casi no lo uso porque parece que no puede seguir el ritmo de las tasas de transferencia de datos comunes hoy en servidores
      El análisis parece ser de un solo hilo y no parece tener caché; incluso unas “meras” capturas de algunos GB que solo representan unos segundos en enlaces de 10Gbps ya le cuestan trabajo
  • Fue una herramienta indispensable en mi trabajo desde el principio
    tcpdump estaba bien, pero poder hacer clic derecho en un paquete y darle a follow TCP stream para ver toda la conversación en un segundo fue una función que cambió por completo el panorama
    Lo mismo con “right click->filter out this stream”, y como Ethereal/Wireshark podía leer archivos guardados por tcpdump, podías entrar por ssh a un servidor remoto, correr tcpdump y luego revisar ambos flujos de red desde el cliente con Wireshark
    Los NAT sospechosos del ISP saltaban a la vista, y las redes MPLS mal configuradas también podían mostrarse como evidencia, así que el equipo de routing ya no podía limitarse a decir “de nuestro lado se ve bien”
    Solo quisiera corregir una cosa del artículo. Ethereal no fue el primer analizador gratuito de paquetes de red con GUI; incluso en la época de Windows NT ya existían herramientas como netmon de Microsoft

    • Esa herramienta era Network Monitor, también conocida como netmon, y por dentro también la llamaban Bloodhound
      Tenía una API documentada y, aunque el soporte era dudoso, era fácil de integrar, así que antes de Ethereal llegué a hacer un wrapper de tcpdump sobre ella
      Cuando salió la pila TCP de “nueva generación” de Longhorn/Vista, esa API y netmon quedaron obsoletos
      Después llegó Microsoft Message Analyzer, que podía analizar red y otros rastreos ETW porque estaba basado en ETW, y además permitía escribir cualquier manejador de protocolo con un DSL compatible
      También podías hacer que parseara archivos de log y filtrara/analizara datos, pero al parecer era demasiado poderoso y útil para los desarrolladores de Windows, así que Microsoft terminó eliminándolo
    • Si solo funcionaba en Windows, queda la duda de si de verdad era gratuito
      Al final era una herramienta incluida en un sistema operativo por el que pagabas
  • Wireshark es como un multímetro en electrónica
    El mundo sigue girando sin él, pero cuando algo falla, estás perdido si no lo tienes

    • Gracias a Wireshark y tcpdump encontré muchísimos problemas raros en la red del campus
  • Esta herramienta, entonces llamada Ethereal, fue realmente valiosa cuando trabajaba en soporte técnico senior de la familia de productos WebLogic
    Podías hacer que el cliente la ejecutara directamente y darle respuestas como: “todas las conexiones del pool grande de conexiones JDBC estaban siendo cortadas silenciosamente por un firewall de red que el propio cliente ni sabía que existía, y por eso la primera transacción de la mañana se retrasaba una hora. Todas las conexiones del pool tenían que expirar y reiniciarse”
    También detectó problemas como: “Internet Explorer corta la conexión TCP de un recurso ya cacheado, lo que provoca un error no estándar a nivel de red en una instalación de WebLogic sobre un servidor IBM”
    Ese trabajo me costó la mitad del pelo; sin Ethereal, habría perdido mucho más, incluido el juicio

  • Di soporte a balanceadores de carga en redes de clientes y usé Wireshark todos los días durante más de 10 años
    Los pcap y los core dumps eran los datos más interesantes de manejar, y aprender libpcap e incluso terminar haciendo mi propia versión me permitió pasar de soporte técnico de producto a desarrollo
    Entré como ingeniero de soporte y salí como Principal Software Engineer escribiendo directamente el código que antes daba soporte, y gracias a Wireshark y gdb pude aprender por mi cuenta muchísimo sin haber ido a la universidad

    • Me gusta llamarlos problemas de “no sabemos qué está mal, así que seguro es la red”
  • Es una herramienta realmente excelente y totalmente gratuita
    La uso seguido para depurar problemas de red y ver a qué se conectan los dispositivos; como dijo alguien, es como un multímetro para redes
    También la usé para aprender cómo se establece una conexión con un punto de acceso WiFi, y puedes ver tanto los paquetes beacon como los paquetes WiFi

    • Adopté Ethereal desde muy temprano
      El equipo tenía una Sniffer PC, pero a menudo alguien la estaba usando o la decodificación de protocolos no era suficiente
  • Es un software realmente extraordinario
    Hace 20 años, en las instalaciones de un cliente, estábamos atorados intentando encontrar un problema de interoperabilidad con nuestro equipo de red, y recuerdo que escribir un plugin de analizador de protocolo durante dos semanas ayudó bastante y fue relativamente fácil
    Al final era un bug nuestro, causado por no haber quitado la aplicación de la máscara de bits de select() al cambiar la implementación de select() a epoll()
    En esencia, era un error de corrupción de memoria de 1 bit, y los resultados podían aparecer muchísimo después
    Curiosamente, este tipo de recuerdos se quedan contigo por mucho tiempo

    • Envidio la capacidad de encontrarle diversión a cosas así
      Al principio de mi carrera, en una instalación segura donde no permitían instalar wireshark, pasé una semana entera desentrañando un bug de red desesperante solo con tcpdump
      Al final era la combinación del peor bug en la biblioteca estándar de GNAT de hacía 10 años (una biblioteca de Ada) y un error de configuración de ARP, y ese bug de la biblioteca en realidad ya se había corregido 7 años antes
      Esa semana fue tan terrible que influyó mucho en que me moviera a un lugar mejor, y para disfrutar este tipo de cosas hace falta un tipo de personalidad muy particular
  • La gente suele imaginar que va a cambiar el mundo, pero hay personas que de verdad cambian el mundo