Sobre o projeto
dsnitch é um inspetor de tráfego de saída de rede e DNS leve, de binário único, projetado especificamente para contêineres Docker. Ele utiliza a tecnologia moderna eBPF do Linux para fornecer visibilidade em tempo real de toda a atividade de rede de saída dos contêineres, incluindo conexões TCP/UDP, pings ICMP e consultas DNS, sem exigir modificações nas pilhas de rede dos contêineres, contêineres sidecar ou daemons pesados de telemetria.
A ferramenta anexa sondas eBPF passivas no kernel diretamente à hierarquia unificada de cgroup v2 do host e ao tracepoint de estado de socket TCP do kernel. Ela intercepta requisições de conexão de saída, pings ICMP de camada 3 e payloads DNS brutos na porta 53, correlacionando sockets aos metadados dos contêineres Docker e nomes de host resolvidos no espaço do usuário por meio de ring buffers BPF sem bloqueio, com overhead de CPU quase zero (abaixo de 1%).
Os principais recursos incluem atribuição de contêiner sem intervenção via anexação direta ao cgroup v2, espionagem de DNS no kernel com decodificação Hickory DNS no espaço do usuário para resolução completa da cadeia CNAME, rastreamento de socket stateful determinístico usando ponteiros de memória do kernel (skaddr) para rastreamento sem colisões entre conexões concorrentes e namespaces de rede, suporte nativo a ICMP, colunas duplas de destino e IP físico mostrando tanto nomes de host resolvidos por DNS quanto endpoints IP de borda subjacentes, e filtragem inteligente de ruído do glibc que ignora sondas dummy de rota de porta UDP 0 do POSIX getaddrinfo().
A TUI interativa com painéis divididos construída com Ratatui fornece uma árvore hierárquica de contêineres com contadores de conexão ao vivo à esquerda e um fluxo de saída codificado por cores em tempo real à direita, com filtragem instantânea por pesquisa, bloqueio de contêineres e alternância de tráfego do host. Um modo de streaming headless (-s) suporta saída não interativa em texto simples para registro, pipelines de CI/CD ou redirecionamento para outras ferramentas CLI.
A instalação é simples: binários pré-compilados estão disponíveis para arquiteturas Linux x86_64 e ARM64, ou a ferramenta pode ser compilada a partir do código-fonte usando a toolchain nightly do Rust com o componente rust-src. A ferramenta requer kernel Linux 5.8+ com cgroups v2 unificados e BTF habilitados, além de acesso ao daemon do Docker.
Para usuários sem privilégios, o dsnitch recomenda usar setcap para conceder capacidades Linux mínimas (cap_sys_admin, cap_net_admin, cap_dac_read_search) para que qualquer usuário no grupo docker possa executá-lo sem sudo. Alternativamente, pode ser executado com escalonamento sudo padrão. A ferramenta inclui testes unitários em memória e uma suíte de testes de integração automatizada de ponta a ponta que executa contra contêineres Docker ativos.
O projeto é licenciado sob a GNU General Public License v3.0 e é mantido por Infomaniac.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.