Snitch – 더 친숙한 ss/netstat 도구

1 month ago 12

  • Snitch는 기존 ss나 netstat보다 사람이 보기 쉬운 네트워크 연결 검사 도구로, 터미널 UI(TUI)와 스타일링된 표 형식을 지원
  • 실시간 인터랙티브 화면 또는 한 번에 출력되는 표 형식으로 연결 상태를 표시하며, TCP/UDP, 리스닝, 연결됨 상태 등 다양한 필터 제공
  • JSON·CSV 출력, DNS/서비스명 해석, 프로세스 감시 및 종료, 자동 업데이트 기능을 포함
  • Homebrew, Go, Nix, Arch Linux, Shell Script, Binary 등 여러 설치 방법을 지원하며, macOS의 Gatekeeper 경고 자동 해제 기능 포함
  • 개발자와 시스템 관리자가 네트워크 연결을 직관적으로 모니터링하고 스크립트 자동화에 활용할 수 있는 유용한 도구

개요

  • Snitch는 네트워크 연결을 시각적으로 탐색할 수 있는 도구로, ss나 netstat의 대체 도구로 설계
  • TUI 인터페이스 또는 스타일링된 표 출력을 통해 연결 상태를 표시
  • Linux와 macOS에서 동작하며, 루트 권한 또는 CAP_NET_ADMIN 권한이 필요할 수 있음

설치 방법

  • Homebrew: brew install snitch 명령으로 설치 가능
  • Go: go install github.com/karol-broda/snitch@latest
  • Nix/NixOS: nix-env -iA nixpkgs.snitch 또는 flake 입력으로 추가 가능
  • Arch Linux (AUR) : yay -S snitch-bin 또는 paru -S snitch-bin
  • Shell Script: curl -sSL ... | sh 명령으로 설치, 기본 경로는 ~/.local/bin 또는 /usr/local/bin
    • macOS에서는 설치 스크립트가 자동으로 quarantine 속성 제거
  • Binary 다운로드: GitHub Releases에서 Linux(.tar.gz, .deb, .rpm, .apk) 및 macOS(.tar.gz) 버전 제공

빠른 시작

  • snitch 실행 시 인터랙티브 TUI 실행
  • snitch -l은 리스닝 소켓만 표시, snitch ls는 표 형식으로 출력 후 종료
  • snitch ls -t -e는 TCP 연결된 세션만 표시, snitch ls -p는 파싱 가능한 단순 출력

주요 명령

  • snitch / snitch top : 실시간 갱신되는 연결 목록 표시
    • 옵션: -l(리스닝), -t(TCP), -e(연결됨), -i(갱신 주기)
    • 키 바인딩: j/k 이동, t/u TCP·UDP 전환, K 프로세스 종료, / 검색, q 종료 등
  • snitch ls : 한 번에 표 출력, 터미널 높이를 초과하면 자동으로 pager 사용
    • 출력 형식: 기본 표, -o json, -o csv, -p(단순), --no-headers(헤더 제거)
  • snitch json : JSON 형식 출력으로 스크립트 활용 가능
  • snitch watch : 일정 간격으로 JSON 프레임 스트리밍
  • snitch upgrade : 버전 확인 및 자동 업데이트

필터 및 해석 옵션

  • 공통 플래그: -t(TCP), -u(UDP), -l(리스닝), -e(연결됨), -4(IPv4), -6(IPv6)
  • DNS 및 서비스명 해석:
    • --resolve-addrs, --resolve-ports, --no-cache 옵션 지원
    • 병렬 DNS 조회 및 캐싱 수행, --no-cache로 캐시 비활성화 가능
  • 세부 필터링: key=value 형식으로 프로세스명, 포트, 상태 등 지정 가능
    • 예: snitch ls proto=tcp state=listen, snitch ls proc=nginx

출력 형식

  • 기본 표 출력: 프로세스명, PID, 프로토콜, 상태, 로컬 주소·포트 표시
  • 단순 출력(-p) : 파싱 가능한 텍스트 형태
  • JSON/CSV 출력: 스크립트 자동화 및 로그 분석에 활용 가능

설정 및 환경 변수

  • 설정 파일: ~/.config/snitch/snitch.toml
    • numeric, dns_cache, theme(auto/dark/light/mono) 설정 가능
  • 환경 변수:
    • SNITCH_THEME, SNITCH_RESOLVE, SNITCH_DNS_CACHE, SNITCH_NO_COLOR, SNITCH_CONFIG 등 지원

시스템 요구사항

  • Linux 또는 macOS 환경 필요
  • Linux: /proc/net/*에서 데이터 읽기, 전체 프로세스 정보에는 루트 또는 CAP_NET_ADMIN 권한 필요
  • macOS: 시스템 API 사용, 전체 프로세스 정보에는 sudo 필요

Read Entire Article