Sobre el proyecto
dsnitch es un inspector ligero de red y DNS de salida, de un solo binario, diseñado específicamente para contenedores Docker. Aprovecha la tecnología moderna eBPF de Linux para proporcionar visibilidad en tiempo real de toda la actividad de red saliente de los contenedores, incluyendo conexiones TCP/UDP, pings ICMP y consultas DNS, sin requerir modificaciones en las pilas de red de los contenedores, contenedores sidecar ni demonios de telemetría pesados.
La herramienta adjunta sondas eBPF pasivas en el kernel directamente a la jerarquía unificada de cgroup v2 del host y al tracepoint del estado de sockets TCP del kernel. Intercepta solicitudes de conexión saliente, pings ICMP de capa 3 y cargas útiles DNS crudas en el puerto 53, correlacionando sockets con metadatos de contenedores Docker y nombres de host resueltos en el espacio de usuario mediante buffers de anillo BPF sin bloqueo, con una sobrecarga de CPU casi nula (menos del 1%).
Las características clave incluyen atribución de contenedores sin intervención mediante la adjunción directa a cgroup v2, espionaje DNS en el kernel con decodificación Hickory DNS en el espacio de usuario para la resolución completa de cadenas CNAME, seguimiento determinista de sockets con estado usando punteros de memoria del kernel (skaddr) para un seguimiento sin colisiones en conexiones concurrentes y espacios de nombres de red, soporte nativo de protocolo ICMP, columnas duales de destino e IP física que muestran tanto nombres de host resueltos por DNS como endpoints IP de borde subyacentes, y filtrado inteligente de ruido glibc que omite sondas de búsqueda de ruta UDP puerto 0 de getaddrinfo() POSIX ficticias.
La interfaz TUI interactiva de paneles divididos construida con Ratatui proporciona un árbol jerárquico de contenedores con contadores de conexiones en vivo a la izquierda y un flujo de salida en tiempo real con códigos de color a la derecha, con filtrado de búsqueda instantáneo, bloqueo de contenedores y alternancia de tráfico del host. Un modo de streaming sin cabeza (-s) admite salida de texto plano no interactiva para registro, pipelines CI/CD o canalización a otras herramientas CLI.
La instalación es sencilla: hay binarios precompilados disponibles para arquitecturas Linux x86_64 y ARM64, o la herramienta se puede compilar desde el código fuente usando el toolchain nocturno de Rust con el componente rust-src. La herramienta requiere kernel Linux 5.8+ con cgroups v2 unificados y BTF habilitado, además de acceso al demonio Docker.
Para usuarios sin privilegios, dsnitch recomienda usar setcap para otorgar capacidades mínimas de Linux (cap_sys_admin, cap_net_admin, cap_dac_read_search) para que cualquier usuario en el grupo docker pueda ejecutarla sin sudo. Alternativamente, se puede ejecutar con escalada estándar de sudo. La herramienta incluye tanto pruebas unitarias en memoria como una suite de pruebas de integración automatizada de extremo a extremo que se ejecuta contra contenedores Docker en vivo.
El proyecto está licenciado bajo GNU General Public License v3.0 y es mantenido por Infomaniac.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.