
터미널에서 프로세스별 네트워크 모니터링과 심층 패킷 검사(DPI)를 제공합니다. 크로스 플랫폼이며 샌드박스 환경에서 실행됩니다.
머신이 만드는 모든 연결, 누가 소유하는지, 어떤 프로토콜을 사용하는지 실시간으로 확인하세요. tcpdump, X11 포워딩, root 파이핑이 필요 없습니다.
netstat / ss는 실시간 상태를 표시할 수 없습니다.--pcapng-export는 프로세스, PID, 방향, DPI/SNI, GeoIP를 패킷별 주석으로 포함한 Wireshark 호환 캡처를 작성합니다. Wireshark에서 열면 사후 처리 없이 모든 패킷에 소유 프로세스가 이미 표시됩니다. 오프라인 상관 분석을 위한 JSONL 사이드카가 포함된 기존 --pcap-export도 사용할 수 있습니다.t를 눌러 포렌식 분석을 위해 과거(닫힌) 연결을 계속 표시할 수 있습니다.port:, src:, dst:, sni:, process:, state:, proto: 및 /(?i)pattern/ 정규식을 지원합니다.kubernetes 기능): 연결을 해당 파드, 네임스페이스, 컨테이너에 매핑하여 세부 정보 창, JSON/PCAPNG 내보내기, pod:, ns:, container: 필터에 표시합니다. 공식 Docker 이미지에서 활성화되어 있으며, 클러스터에서는 kubectl-rustnet 플러그인을 사용해 임시 디버그 파드로 실행할 수 있습니다. USAGE.md를 참조하세요.RustNet은 간단한 연결 도구(netstat, ss)와 패킷 분석기(Wireshark, tcpdump) 사이의 간극을 메웁니다:
RustNet은 패킷 캡처 도구를 보완합니다. RustNet으로 무엇이 연결을 만드는지 확인하세요. Wireshark에서 직접 검사해야 한다면 --pcapng-export가 PID/프로세스 컨텍스트가 포함된 실시간 베스트 에포트 패킷 주석을 작성합니다. 정리 시점의 상관 분석에는 --pcap-export와 JSONL 사이드카, 선택적 scripts/pcap_enrich.py를 사용하세요. 자세한 내용은 PCAP 내보내기 및 유사 도구와의 비교를 참조하세요.
ratatui, libpcap, eBPF(libbpf-rs), DashMap, crossbeam, ring, MaxMind GeoLite2, Landlock 기반으로 구축되었습니다. 전체 종속성 분석은 ARCHITECTURE.md를 참조하세요.
RustNet은 Linux에서 기본적으로 커널 eBPF 프로그램을 사용하여 향상된 성능과 낮은 오버헤드의 프로세스 식별을 제공합니다.
프로세스 이름:
comm 이름(16자로 제한된 커널 필드)을 기록하므로 다중 스레드 애플리케이션은 "Socket Thread" 같은 스레드 이름 대신 메인 프로세스 이름을 표시합니다/proc/<tgid>/comm을 통해 현재 이름을 다시 확인하고, 실행 파일 이름에서 comm으로 잘린 이름을 복구하며(예: "chromium-browse"가 "chromium-browser"가 됨), 세부 정보 뷰에 표시되는 전체 실행 파일 경로를 확인합니다폴백 동작:
eBPF를 비활성화하고 procfs 전용 모드를 사용하려면 다음과 같이 빌드하세요:
cargo build --release --no-default-features
기술 정보는 ARCHITECTURE.md를 참조하세요.
RustNet은 프로세스 수준 트래픽 집계와 실시간 네트워크 인터페이스 통계를 결합합니다:
3 누르기): 유지 및 롤링 트래픽, 속도, 점유율, 연결, 대상지를 포함하여 Egress(TX) 또는 Ingress(RX) 기준으로 프로세스 순위를 매깁니다i 누르기): 모든 인터페이스의 원래 종합 메트릭을 표시합니다인터페이스 통계 해석 및 플랫폼별 동작에 대한 자세한 문서는 USAGE.md를 참조하세요.
사용 가능한 메트릭:
통계는 백그라운드 스레드에서 2초마다 수집되며 성능 영향이 최소화됩니다.
| 개요 실시간 통계와 스파크라인이 포함된 연결 테이블 ![]() | 세부 정보 연결별 SNI, 암호화, GeoIP, DPI ![]() |
| 그래프 트래픽 차트, 앱 분포, 상위 프로세스 ![]() | 활동 프로세스 Egress/Ingress, 60초 커버리지, 귀속 정보, 원격 피어 ![]() |
Homebrew (macOS / Linux):
brew install rustnet
Ubuntu (22.04 LTS+) / Linux Mint 21+ / Pop!_OS 22.04+:
sudo add-apt-repository ppa:domcyrus/rustnet
# on Pop!_OS: sudo apt-manage add 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 tokyo-night # Theme: muted (default), vivid, catppuccin-mocha, tokyo-night, gruvbox, nord
rustnet --pcapng-export capture.pcapng # Annotated PCAPNG for Wireshark
테마 및 색상별 재정의는 ~/.config/rustnet/config.toml에서도 설정할 수 있으며, --theme가 우선합니다. 스키마는 USAGE.md를 참조하세요.
자세한 권한 설정은 INSTALL.md, 전체 옵션은 USAGE.md를 참조하세요.
캐퍼빌리티를 설정했는데도 TUI에 여전히
eBPF unavailable이 표시되면 문제 해결 섹션의 캐퍼빌리티 설정에도 eBPF를 사용할 수 없음을 참조하세요.
| 키 | 동작 |
|---|---|
q | 종료(두 번 누르면 확인) |
Ctrl+C | 즉시 종료 |
x | 모든 연결 지우기(두 번 누르면 확인) |
Tab 또는 ] | 다음 탭 |
Shift+Tab 또는 [ | 이전 탭 |
1–5 | 개요 / 세부 정보 / 활동 / 그래프 / 도움말로 이동 |
↑/k ↓/j | 위/아래로 이동 |
g G | 첫 번째/마지막 연결로 이동 |
Enter | 연결 세부 정보 보기 |
Esc | 뒤로 가기 또는 필터 지우기 |
c | 원격 주소 복사 |
p | 서비스 이름/포트 전환 |
d | 개요에서 호스트 이름/IP 또는 활동에서 Egress/Ingress 전환 |
s S | 정렬 열 순환 / 방향 전환 |
a | 프로세스 그룹화 전환 |
Space | 프로세스 그룹 펼치기/접기 |
←/→ 또는 h/l | 그룹 접기/펼치기 |
PageUp/PageDown 또는 Ctrl+B/F | 페이지 탐색 |
t | 과거(닫힌) 연결 표시 전환 |
i | 개요에서 시스템 정보 또는 활동에서 인터페이스 세부 정보 전환 |
r | 보기 재설정(그룹화, 정렬, 필터) |
/ | 필터 모드 진입 |
h | 도움말 전환 |
자세한 키보드 컨트롤과 탐색 팁은 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를 눌러 정렬 가능한 열(프로세스, 주소, 서비스, 애플리케이션, 상태, 대역폭)을 순환합니다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 - 반열린(Half-open) 연결(SYN 플러드 감지)state:established - 설정된 연결만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 연결RustNet은 연결을 제거하기 전에 스마트 타임아웃과 시각적 경고를 사용합니다:
시각적 오래됨 표시기:
프로토콜 인식 타임아웃:
Initial/Handshaking: 60초예: HTTP 연결은 7.5분에 노란색, 9분에 빨간색으로 바뀌고 10분에 제거됩니다.
전체 타임아웃 세부 정보는 USAGE.md를 참조하세요.
기여는 언제나 환영합니다! 기여 방법에 대한 지침은 CONTRIBUTING.md를 참조하세요.
이 프로젝트에 기여한 사람들의 목록은 CONTRIBUTORS.md를 참조하세요.
이 프로젝트는 Apache License, Version 2.0에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.
더 나은 구성을 위해 일부 섹션이 전용 파일로 이동되었습니다: