这个项目能做什么
dsnitch 是一款专为 Docker 容器设计的轻量级单二进制网络和 DNS 出口检查工具。它利用现代 Linux eBPF 技术,实时提供容器所有出站网络活动的可见性,包括 TCP/UDP 连接、ICMP ping 和 DNS 查询,且无需修改容器网络栈、边车容器或部署繁重的遥测守护进程。
该工具直接将被动内核 eBPF 探针附加到主机的统一 cgroup v2 层级和内核 TCP 套接字状态跟踪点。它拦截出站连接请求、Layer-3 ICMP ping 和端口 53 上的原始 DNS 线格式负载,通过无锁 BPF 环形缓冲区在用户空间将套接字与 Docker 容器元数据及解析的主机名关联,CPU 开销接近零(低于 1%)。
关键特性包括:通过直接 cgroup v2 附加实现零接触容器归因;内核内 DNS 嗅探配合用户空间 Hickory DNS 解码,实现完整 CNAME 链解析;使用内核内存指针(skaddr)进行确定性有状态套接字跟踪,确保跨并发连接和网络命名空间的无冲突跟踪;原生 ICMP 协议支持;双目标列和物理 IP 列,同时显示 DNS 解析的主机名和底层边缘 IP 端点;以及智能 glibc 噪声过滤,跳过虚拟 POSIX getaddrinfo() UDP 端口 0 路由查找探测。
基于 Ratatui 构建的交互式分屏 TUI 提供左侧容器层级树(带实时连接计数器)和右侧实时颜色编码出口流,支持即时搜索过滤、容器锁定和主机流量切换。无头流模式(-s)支持非交互式纯文本输出,适用于日志记录、CI/CD 管道或与其他 CLI 工具管道连接。
安装简单:提供 x86_64 和 ARM64 Linux 架构的预编译二进制,或使用 Rust 夜间工具链和 rust-src 组件从源码构建。该工具要求 Linux 内核 5.8+,启用统一 cgroups v2 和 BTF,并可访问 Docker 守护进程。
对于非特权用户,dsnitch 建议使用 setcap 授予最小 Linux 能力(cap_sys_admin、cap_net_admin、cap_dac_read_search),使 docker 组中的任何用户无需 sudo 即可运行。或者,也可使用标准 sudo 提权运行。该工具包含内存单元测试和针对实时 Docker 容器的自动化端到端集成测试套件。
项目采用 GNU 通用公共许可证 v3.0,由 Infomaniac 维护。
评论
0 评分人数达到10人后显示
登录后参与讨论。