프로젝트 소개
dsnitch는 Docker 컨테이너를 위해 특별히 설계된 경량의 단일 바이너리 네트워크 및 DNS 이그레스 검사기입니다. 최신 Linux eBPF 기술을 활용하여 컨테이너의 모든 아웃바운드 네트워크 활동(TCP/UDP 연결, ICMP 핑, DNS 쿼리)에 대한 실시간 가시성을 제공하며, 컨테이너 네트워크 스택, 사이드카 컨테이너 또는 무거운 텔레메트리 데몬을 수정할 필요가 없습니다.
이 도구는 수동 in-kernel eBPF 프로브를 호스트의 통합 cgroup v2 계층과 커널의 TCP 소켓 상태 트레이스포인트에 직접 연결합니다. 아웃바운드 연결 요청, 레이어 3 ICMP 핑, 포트 53의 원시 DNS 와이어 페이로드를 가로채며, 잠금 없는 BPF 링 버퍼를 통해 사용자 공간에서 소켓을 Docker 컨테이너 메타데이터 및 해석된 호스트 이름과 연관시킵니다. CPU 오버헤드는 1% 미만으로 거의 0에 가깝습니다.
주요 기능으로는 직접적인 cgroup v2 연결을 통한 제로터치 컨테이너 귀속, 전체 CNAME 체인 해석을 위한 사용자 공간 Hickory DNS 디코딩을 통한 in-kernel DNS 스누핑, 동시 연결 및 네트워크 네임스페이스 전반에서 충돌 없는 추적을 위한 커널 메모리 포인터(skaddr)를 사용한 결정적 상태 저장 소켓 추적, 기본 ICMP 프로토콜 지원, DNS 해석 호스트 이름과 기본 엣지 IP 엔드포인트를 모두 표시하는 이중 대상 및 물리적 IP 열, 그리고 더미 POSIX getaddrinfo() UDP 포트 0 라우트 조회 프로브를 건너뛰는 지능형 glibc 노이즈 필터링이 포함됩니다.
Ratatui로 구축된 대화형 분할 창 TUI는 왼쪽에 실시간 연결 카운터가 있는 컨테이너 계층 트리를, 오른쪽에 실시간 색상 코드 이그레스 스트림을 제공하며, 즉각적인 검색 필터링, 컨테이너 잠금 및 호스트 트래픽 토글 기능을 갖추고 있습니다. 헤드리스 스트리밍 모드(-s)는 로깅, CI/CD 파이프라인 또는 다른 CLI 도구로의 파이핑을 위한 비대화형 일반 텍스트 출력을 지원합니다.
설치는 간단합니다. x86_64 및 ARM64 Linux 아키텍처용 사전 빌드된 바이너리가 제공되며, rust-src 구성 요소와 함께 Rust nightly 툴체인을 사용하여 소스에서 빌드할 수도 있습니다. 이 도구는 통합 cgroups v2와 BTF가 활성화된 Linux 커널 5.8+ 및 Docker 데몬에 대한 액세스 권한이 필요합니다.
비특권 사용자의 경우 dsnitch는 setcap을 사용하여 최소 Linux 기능(cap_sys_admin, cap_net_admin, cap_dac_read_search)을 부여하여 docker 그룹의 모든 사용자가 sudo 없이 실행할 수 있도록 권장합니다. 또는 표준 sudo 승격으로 실행할 수도 있습니다. 이 도구에는 인메모리 단위 테스트와 실제 Docker 컨테이너를 대상으로 실행되는 자동화된 엔드투엔드 통합 테스트 스위트가 모두 포함되어 있습니다.
이 프로젝트는 GNU General Public License v3.0에 따라 라이선스가 부여되며 Infomaniac이 유지 관리합니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.