
netwatch v0.27.0
터미널에서 실시간 네트워크 진단. 하나의 명령어, 설정 불필요, 즉시 확인 가능.
NetWatch
연결 뒤에 있는 프로세스를 식별하고, 키를 보유한 TLS를 읽으며, 무엇이 잘못되었고 어떻게 고칠지 알려주는 터미널용 네트워크 모니터.
netwatch --view dense. 네 개의 박스, 장식 없음, 모든 키 바인딩이 테두리에 표시됩니다. 다운로드는 축에서 위로, 업로드는 아래로 자랍니다.
바이너리 하나, 설정 없음. sudo netwatch를 실행하면 L7 디코딩이 포함된 실시간 캡처, 가능한 경우 프로세스 귀속, 그리고 학습된 기준선이 깨지면 이슈를 열고 수정이 유지되면 닫는 진단 엔진을 사용할 수 있습니다.
설치
brew install netwatch # macOS / Linux
nix-shell -p netwatch # NixOS / Nix
paru -S netwatch-tui-bin # Arch
scoop install netwatch # Windows (Npcap 필요)
cargo install netwatch-tui # Rust와 libpcap 헤더가 있는 모든 환경
미리 빌드된 바이너리는 릴리스 페이지에 있습니다. Linux x86_64/aarch64 바이너리는 libpcap이 내장된 정적 빌드이므로 아무것도 설치할 필요가 없습니다. Debian을 실행하는 구형 Marvell Kirkwood NAS 박스(예: Iomega ix2-dl)용 armv5te 빌드도 있습니다 — libpcap은 같은 방식으로 내장되지만 glibc와 libatomic에 링크되므로 libatomic1이 설치된 Debian 12 (bookworm) 이상이 필요합니다. Windows는 Npcap을 먼저 설치해야 하며, 소스에서 빌드하려면 libpcap-dev (Debian), libpcap-devel (Fedora) 또는 libpcap (Arch)이 필요합니다. 자세한 내용은 설치 레퍼런스를 참고하세요.
실행
netwatch # 인터페이스, 연결, 설정. 권한 불필요.
sudo netwatch # 상승된 권한이 필요한 곳에서 캡처 활성화
netwatch --lite # 80x24 화면 하나
netwatch --view dense # 네 개의 박스, 130x44 이상
1부터 9와 0은 탭을 전환하고, V는 세 가지 뷰를 순환하며, ?는 모든 키를 표시합니다. Linux에서 sudo 없이 실행하려면 한 번만 capability를 부여하세요: sudo setcap 'cap_net_raw,cap_bpf,cap_perfmon+eip' "$(which netwatch)" (반복해야 하는 이유와 시점).
기능
진단 (탭 9). 지표별 기준선은 이를 학습시킨 네트워크에 범위가 지정됩니다. 준비 상태가 되려면 1,800개의 서로 다른 샘플이 필요하므로 학습 시간은 프로브 주기에 따라 달라집니다. 25개의 카탈로그화된 규칙이 있으며, 18개의 진단 탐지기가 구현되어 있고 7개는 통합 대기 중입니다. 런타임 커버리지는 어떤 입력이 사용 가능한지, 학습 중인지, 오래되었는지, 측정되지 않았는지를 나타냅니다. 억제 그래프는 죽은 게이트웨이와 그 결과를 하나의 발견으로 묶습니다. 각 원인은 다른 원인과 구분해낸 검사에 따라 순위가 매겨집니다. 자동 TUI 리졸버 변경은 아직 사용할 수 없습니다. 진단은 수동 단계를 제공합니다. 명시적인 Linux 리졸버 명령은 관리자가 확인한 비관리 일반 파일에 대한 임시 변경을 지원합니다. 관리형 리졸버는 여전히 지원되지 않습니다. 데모는 여전히 적용과 검증된 복구를 시뮬레이션합니다. 기존 저널은 시작 시 검사되며, 읽을 수 없거나 손상된 복구 기록은 추가 호스트 변경을 차단합니다. 이슈는 해당 규칙의 성공 조건이 유지된 경우에만 닫힙니다. 모델은 관여하지 않습니다. 작동 방식, 설계.
직접 제어하는 TLS 복호화. 모든 클라이언트의 SSLKEYLOGFILE을 NetWatch로 지정하면 해당 클라이언트의 TLS 1.3 세션 평문이 Packets 탭에서 디코딩됩니다. Wireshark와 동일한 메커니즘이므로 키를 보유한 트래픽에만 작동합니다. TLS 복호화.
sudo netwatch # Packets 열기 (4)
SSLKEYLOGFILE=/tmp/keys curl https://example.com # 키를 내보내는 모든 클라이언트
# 탭 필터: decrypted:true
이그레스 드리프트. Egress 탭(0)은 각 프로세스가 도달하는 호스트, 자율 시스템, 포트를 학습합니다. Enter는 그 기준선을 규칙으로 승격시키고, 다음 새로운 목적지는 알림과 함께 drift로 도착합니다. 관찰만 하고 절대 차단하지 않습니다. 판정은 sni, ip, asn, ech, drift, no rule, 그리고 strict = true 하에서 undeclared입니다. "AS로 매칭됨"은 하이퍼스케일러가 운영하는 모든 것을 허용하기 때문이며, 테이블은 이를 명시해야 합니다. 규칙 언어와 내보내기 스키마.
프로세스 귀속. 플랫폼 소켓 폴링, macOS의 PKTAP, Linux의 선택적 eBPF kprobe(ebpf 기능). 특히 단명하는 플로우의 경우 귀속이 누락되거나 오래될 수 있습니다. Windows는 자체 네트워크/프로세스 도구를 사용합니다. 권한.
위협 탐지. C2 비커닝, 포트 스캔, DNS 터널링이 백그라운드에서 실행됩니다. 심각한 알림은 플라이트 레코더를 정지시켜 확인하기 전에 번들이 존재하도록 합니다. JA4는 각 TLS 및 QUIC 핸드셰이크를 지문으로 남겨 동일한 클라이언트의 모든 플로우로 피벗할 수 있게 합니다. 보안 및 포렌식, 플라이트 레코더, JA4.
Linux 워커 샌드박스. 워커 진입점은 처리 전에 준비된 Landlock 파일시스템 정책을 적용하며, 캡처는 먼저 자체 디바이스를 준비합니다. 쓰기 가능 권한은 전용 애플리케이션 디렉터리를 사용합니다. eBPF 귀속은 SDK 리더 훅이 나올 때까지 샌드박스 실행에서 일시적으로 비활성화됩니다. 네트워크 접근은 제한되지 않으며, 권한 있는 캡처/재시작 검증은 대기 중입니다. 범위와 한계.
탭
| # | 탭 | 표시 내용 |
|---|---|---|
| 1 | Dashboard | 지연 타일, 대칭형 처리량, 이를 전달하는 링크, 프로세스별로 집계된 연결 |
| 2 | Connections | 프로세스, PID, 상태, GeoIP, RTT, 재전송이 포함된 모든 소켓 |
| 3 | Interfaces | 주소, MTU, 속도, 오류, 드롭 |
| 4 | Packets | 실시간 디코딩, TLS 1.3 복호화, JA4, 스트림 추적, 디스플레이 필터, PCAP 내보내기 |
| 5 | Stats | 프로토콜 분석 및 핸드셰이크 타이밍 히스토그램 |
| 6 | Topology | 머신, 게이트웨이, DNS, 상위 호스트, traceroute |
| 7 | Timeline | TCP 상태별 연결, 알림 포함 |
| 8 | Processes | 프로세스별 대역폭 |
| 9 | Diagnose | 이슈, 원인, 수정, 검증된 종료. 동일한 객체에서 생성된 report.md |
| 0 | Egress | 학습된 목적지, 승격된 정책, 드리프트 |
모든 키 바인딩, 디스플레이 필터, 디코더, 테마, 설정.
세 가지 뷰, 하나의 캡처
V는 재시작 없이 이들 사이를 순환하며, 수집기는 계속 실행됩니다.
Full은 위의 열 개 탭입니다.
Lite (--lite)는 80x24에 맞습니다: 처리량, 게이트웨이/DNS/인터넷 도달 가능성, 상위 토커, 여섯 개의 키. Pi로의 SSH 세션이나 tmux 분할에 적합합니다.
Dense (--view dense)는 대표 이미지입니다. 130x44가 필요하며 그보다 큰 화면으로 확장됩니다. 처리량은 셀당 두 샘플의 점자로 표시되며, 높이에 따라 색이 입혀져 축을 확인하기 전에 스파이크를 읽을 수 있습니다. 연결 테이블은 선택한 행의 세부 정보(커널 cwnd, ssthresh, mss, rwnd 포함)를 자체 박스 상단으로 끌어올립니다. 1부터 4는 박스를 전체 화면으로 확대합니다. Dense와 Lite.