- 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
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
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
Incluso daría para una entrada de blog muy interesante
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
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
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
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
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
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
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
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
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