
터미널에서 프로세스별 네트워크 모니터링과 심층 패킷 검사(DPI)를 제공합니다. 크로스 플랫폼이며 샌드박스 환경에서 실행됩니다.
터미널용 프로세스별 네트워크 모니터링: 딥 패킷 인스펙션을 지원하는 실시간 TCP, UDP, QUIC 연결, 기본적으로 샌드박스 처리됩니다.
English | 简体中文
머신이 만드는 모든 연결, 해당 연결의 소유 프로세스, 사용 중인 프로토콜을 실시간으로 확인할 수 있습니다. tcpdump, X11 포워딩, root 파이핑이 필요 없습니다.
netstat/ss는 실시간 상태를 보여줄 수 없습니다.--pcapng-export는 프로세스, PID, 방향, DPI/SNI, GeoIP를 패킷별 주석으로 포함하는 Wireshark 호환 캡처를 작성합니다. Wireshark에서 열면 추가 처리 없이 모든 패킷에 소유 프로세스 이름이 이미 표시됩니다. 오프라인 상관 분석을 위한 JSONL 사이드카가 포함된 기존 --pcap-export도 제공됩니다.t를 눌러 포렌식을 위해 기록(닫힌) 연결을 계속 표시할 수 있습니다.port:, src:, dst:, sni:, process:, , 및 정규식 지원.RustNet은 단순 연결 도구(netstat, ss)와 패킷 분석기(Wireshark, tcpdump) 사이의 간극을 메웁니다:
RustNet은 패킷 캡처 도구를 보완합니다. RustNet을 사용하여 무엇이 연결을 만드는지 확인하세요. 직접 Wireshark 검사가 필요하면 --pcapng-export가 PID/프로세스 컨텍스트가 포함된 실시간 best-effort 패킷 주석을 작성합니다. 정리 시점 상관 분석에는 --pcap-export와 JSONL 사이드카, 선택적 scripts/pcap_enrich.py를 사용하세요. 자세한 내용은 PCAP Export 및 Comparison with Similar Tools를 참조하세요.
ratatui, libpcap, eBPF(libbpf-rs), DashMap, crossbeam, ring, MaxMind GeoLite2, Landlock 기반으로 구축되었습니다. 전체 의존성 분석은 ARCHITECTURE.md를 참조하세요.
RustNet은 Linux에서 향상된 성능과 낮은 오버헤드의 프로세스 식별을 위해 기본적으로 커널 eBPF 프로그램을 사용합니다. 그러나 여기에는 중요한 제한 사항이 있습니다:
프로세스 이름 제한 사항:
comm 필드를 사용하며, 이는 16자로 제한됩니다.실제 사례:
폴백 동작:
eBPF를 비활성화하고 procfs 전용 모드를 사용하려면 다음으로 빌드하세요:
cargo build --release --no-default-features
기술 정보는 ARCHITECTURE.md를 참조하세요.
RustNet은 지원되는 모든 플랫폼에서 실시간 네트워크 인터페이스 통계를 제공합니다:
3 키): 모든 인터페이스에 대한 종합적인 지표가 포함된 상세 표인터페이스 통계 해석 및 플랫폼별 동작에 대한 자세한 문서는 USAGE.md를 참조하세요.
사용 가능한 지표:
통계는 성능 영향이 최소화된 백그라운드 스레드에서 2초마다 수집됩니다.
Homebrew (macOS / Linux):
brew install rustnet
Ubuntu (25.10+):
sudo add-apt-repository ppa:domcyrus/rustnet
sudo apt update && sudo apt install rustnet
Fedora (42+):
sudo dnf copr enable domcyrus/rustnet
sudo dnf install rustnet
openSUSE Tumbleweed:
sudo zypper addrepo https://download.opensuse.org/repositories/home:/domcyrus:/rustnet/openSUSE_Tumbleweed/home:domcyrus:rustnet.repo
sudo zypper refresh
sudo zypper install rustnet
Arch Linux:
sudo pacman -S rustnet
Nix / NixOS:
nix-shell -p rustnet
# Then inside the shell: sudo rustnet
crates.io에서:
cargo install rustnet-monitor
Windows (Chocolatey):
# Run in Administrator PowerShell
# Requires Npcap (https://npcap.com) installed with "WinPcap API-compatible Mode" enabled
choco install rustnet
기타 플랫폼:
패킷 캡처에는 상승된 권한이 필요합니다:
# Quick start (all platforms)
sudo rustnet
# Linux: Grant capabilities to run without sudo (recommended)
sudo setcap 'cap_net_raw,cap_bpf,cap_perfmon+eip' $(which rustnet)
rustnet
공통 옵션:
rustnet -i eth0 # Specify network interface
rustnet --show-localhost # Show localhost connections
rustnet --no-resolve-dns # Disable reverse DNS lookups (enabled by default)
rustnet -r 500 # Set refresh interval (ms)
rustnet --theme classic # Original full-color palette (default: muted)
rustnet --pcapng-export capture.pcapng # Annotated PCAPNG for Wireshark
자세한 권한 설정은 INSTALL.md, 전체 옵션은 USAGE.md를 참조하세요.
capabilities를 설정했는데도 TUI에
eBPF unavailable이 계속 표시되면 문제 해결 섹션의 eBPF Unavailable Despite Capabilities Being Set 을 참조하세요.
자세한 키보드 컨트롤과 탐색 팁은 USAGE.md를 참조하세요.
빠른 필터링 예시:
/google # Search for "google" anywhere
/port:443 # Filter by port
/process:firefox # Filter by process
/state:established # Filter by connection state
/dport:443 sni:github.com # Combine filters
정렬:
s를 눌러 정렬 가능한 열(Process, Addresses, Service, Application, State, Bandwidth)을 순환합니다.S(Shift+s)를 눌러 정렬 방향을 전환합니다.s를 누릅니다(업로드+다운로드 합산 속도 기준 정렬).전체 필터링 구문과 정렬 가이드는 USAGE.md를 참조하세요.
키워드 필터:
port:44 - "44"를 포함하는 포트(443, 8080, 4433)sport:80 - "80"을 포함하는 소스 포트dport:443 - "443"을 포함하는 대상 포트src:192.168 - "192.168"을 포함하는 소스 IPdst:github.com - "github.com"을 포함하는 대상process:ssh - "ssh"를 포함하는 프로세스 이름sni:api - "api"를 포함하는 SNI 호스트 이름app:openssh - OpenSSH를 사용하는 SSH 연결state:established - 프로토콜 상태로 필터링proto:tcp - 프로토콜 유형으로 필터링상태 필터링:
state:syn_recv - 하프 오픈 연결(SYN 플러드 감지)state:established - 설정된(established) 연결만RustNet은 연결을 제거하기 전에 스마트 타임아웃과 시각적 경고를 사용합니다:
시각적 부실 표시기:
프로토콜 인식 타임아웃:
Initial/Handshaking: 60초예: HTTP 연결은 7.5분에 노란색, 9분에 빨간색으로 바뀌고 10분에 제거됩니다.
전체 타임아웃 세부 정보는 USAGE.md를 참조하세요.
기여를 환영합니다! 기여 방법에 대한 지침은 CONTRIBUTING.md를 참조하세요.
이 프로젝트에 기여한 사람들의 목록은 CONTRIBUTORS.md를 참조하세요.
이 프로젝트는 Apache License, Version 2.0에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.
tshark/wireshark/tcpdump, sniffnet, netstat, ss, iftop, bandwhich 같은 도구에서 영감을 받았습니다.일부 섹션은 더 나은 구성을 위해 전용 파일로 이동되었습니다:
state:proto:/(?i)pattern/kubernetes 기능): 연결을 해당 파드, 네임스페이스, 컨테이너에 매핑하여 세부 정보 창, JSON/PCAPNG 내보내기 및 pod:, ns:, container: 필터에 표시합니다. 공식 Docker 이미지에서 활성화되어 있습니다. 클러스터에서는 kubectl-rustnet 플러그인을 사용하여 임시 디버그 파드로 실행할 수 있습니다. 자세한 내용은 USAGE.md를 참조하세요.| 개요 실시간 통계와 스파크라인이 포함된 연결 테이블 ![]() | 세부 정보 연결별 SNI, 암호화, GeoIP, DPI ![]() |
| 그래프 트래픽 차트, 앱 분포, 상위 프로세스 ![]() | 인터페이스 오류 및 드롭이 포함된 인터페이스별 RX/TX 기록 ![]() |
| 키 | 동작 |
|---|
q | 종료(두 번 눌러 확인) |
Ctrl+C | 즉시 종료 |
x | 모든 연결 지우기(두 번 눌러 확인) |
Tab 또는 ] | 다음 탭 |
Shift+Tab 또는 [ | 이전 탭 |
1–5 | Overview / Details / Interfaces / Graph / Help 탭으로 이동 |
↑/k ↓/j | 위/아래 탐색 |
g G | 첫 번째/마지막 연결로 이동 |
Enter | 연결 세부 정보 보기 |
Esc | 뒤로 가기 또는 필터 지우기 |
c | 원격 주소 복사 |
p | 서비스 이름/포트 전환 |
d | 호스트 이름/IP 전환 |
s S | 정렬 열 순환 / 방향 전환 |
a | 프로세스 그룹화 전환 |
Space | 프로세스 그룹 펼치기/접기 |
←/→ 또는 h/l | 그룹 접기/펼치기 |
PageUp/PageDown 또는 Ctrl+B/F | 페이지 탐색 |
t | 기록(닫힌) 연결 전환 |
i | 시스템 정보 사이드바 전환 |
r | 보기 재설정(그룹화, 정렬, 필터) |
/ | 필터 모드 진입 |
h | 도움말 전환 |
state:quic_connected - 활성 QUIC 연결state:dns_query - DNS 쿼리 연결결합 예시:
sport:80 process:nginx - 포트 80의 Nginx 연결dport:443 sni:google.com - Google로의 HTTPSprocess:firefox state:quic_connected - Firefox QUIC 연결dport:22 app:openssh state:established - 설정된 OpenSSH 연결