
rustnet v1.6.0
प्रति-प्रक्रिया नेटवर्क निगरानी आपके टर्मिनल के लिए गहन पैकेट निरीक्षण के साथ। क्रॉस-प्लेटफ़ॉर्म, सैंडबॉक्स्ड।
RustNet
आपके टर्मिनल के लिए प्रति-प्रक्रिया नेटवर्क मॉनिटरिंग: डीप पैकेट इंस्पेक्शन के साथ लाइव TCP, UDP और QUIC कनेक्शन, डिफ़ॉल्ट रूप से सैंडबॉक्स्ड।
आपकी मशीन द्वारा किए जाने वाले हर कनेक्शन, उसका स्वामी, और वह किस प्रोटोकॉल का उपयोग कर रहा है, इसकी वास्तविक समय में दृश्यता। कोई tcpdump, X11 फ़ॉरवर्डिंग, या root पाइपिंग नहीं।
Features
- प्रति-प्रक्रिया आरोपण (Per-process attribution): हर TCP, UDP और QUIC कनेक्शन उसकी स्वामी प्रक्रिया से मैप किया जाता है, Linux पर eBPF, macOS पर PKTAP, Windows पर स्वचालित IP Helper फ़ॉलबैक के साथ ETW, और FreeBSD पर नेटिव APIs के माध्यम से। विवरण में PID, एक्ज़िक्यूटेबल, उपयोगकर्ता/समूह नाम, मैच कॉन्फिडेंस, और हर प्लेटफ़ॉर्म पर एक सीमित पैरेंट-प्रक्रिया श्रृंखला शामिल है। Wireshark और tcpdump यह नहीं कर सकते;
netstat/ssलाइव स्थिति नहीं दिखा सकते। - डीप पैकेट इंस्पेक्शन: बाहरी dissectors के बिना HTTP, SNI के साथ HTTPS/TLS, DNS, SSH, FTP, QUIC, MQTT, BitTorrent, STUN, NTP, mDNS, LLMNR, DHCP, SNMP, SSDP और NetBIOS की पहचान करें।
- एनोटेटेड PCAPNG एक्सपोर्ट:
--pcapng-exportप्रति-पैकेट टिप्पणियों के रूप में प्रक्रिया, PID, दिशा, DPI/SNI और GeoIP एम्बेडेड के साथ Wireshark-तैयार कैप्चर लिखता है। इसे Wireshark में खोलें, और हर पैकेट पहले से ही अपनी स्वामी प्रक्रिया का नाम बता देता है, बिना किसी पोस्ट-प्रोसेसिंग के। ऑफ़लाइन सहसंबंध के लिए JSONL साइडकार के साथ क्लासिक--pcap-exportभी उपलब्ध है। - सुरक्षा सैंडबॉक्सिंग: Landlock (Linux 5.13+), Seatbelt (macOS), टोकन विशेषाधिकार ड्रॉप + जॉब-ऑब्जेक्ट चाइल्ड-प्रोसेस ब्लॉक (Windows)। libpcap इनिशियलाइज़ होते ही विशेषाधिकार छोड़ देता है। देखें SECURITY.md।
- नेटवर्क एनालिटिक्स: TCP, QUIC हैंडशेक, DNS प्रतिक्रियाओं और ICMP इको के लिए वास्तविक समय राउंड-ट्रिप समय, साथ ही TCP पुनःप्रेषण, आउट-ऑफ-ऑर्डर और फास्ट-रीट्रांसमिट डिटेक्शन।
- स्मार्ट कनेक्शन लाइफसाइकल: सफ़ेद → पीला → लाल स्टेलनेस संकेतकों के साथ प्रोटोकॉल-जागरूक टाइमआउट। फोरेंसिक के लिए ऐतिहासिक (बंद) कनेक्शन दृश्यमान रखने के लिए
tटॉगल करें। - Vim/fzf-शैली फ़िल्टरिंग:
port:,src:,dst:,sni:,process:,state:,proto:, साथ ही/(?i)pattern/के माध्यम से regex। - GeoIP संवर्धन: स्थानीय MaxMind GeoLite2 के माध्यम से देश लुकअप। कोई नेटवर्क कॉल नहीं।
- LAN डिवाइस पहचान: लिंक पर पीयर्स और गेटवे के लिए MAC पता और विक्रेता (एम्बेडेड IEEE OUI डेटाबेस से), ARP ट्रैफ़िक से निष्क्रिय रूप से सीखा जाता है और विवरण फलक में दिखाया जाता है।
- Kubernetes आरोपण (वैकल्पिक
kubernetesसुविधा): कनेक्शन उनके pod, namespace और container से मैप किए जाते हैं, जो विवरण फलक, JSON/PCAPNG एक्सपोर्ट औरpod:,ns:,container:फ़िल्टर में दिखाए जाते हैं। आधिकारिक Docker इमेज में सक्षम; क्लस्टर पर, इसे अस्थायी डीबग pod के रूप में चलाने के लिए kubectl-rustnet प्लगइन का उपयोग करें। देखें USAGE.md। - क्रॉस-प्लेटफ़ॉर्म: Linux, macOS, Windows, FreeBSD।
Why RustNet?
RustNet सरल कनेक्शन टूल्स (netstat, ss) और पैकेट विश्लेषकों (Wireshark, tcpdump) के बीच की खाई को भरता है:
- प्रक्रिया आरोपण: देखें कि कौन सा एप्लिकेशन किस कनेक्शन का मालिक है। Wireshark यह प्रदान नहीं कर सकता क्योंकि यह केवल पैकेट देखता है, सॉकेट नहीं।
- कनेक्शन-केंद्रित दृश्य: प्रति कनेक्शन राज्यों, बैंडविड्थ और प्रोटोकॉल को वास्तविक समय में ट्रैक करें
- SSH-अनुकूल: TUI SSH पर काम करता है ताकि आप X11 फ़ॉरवर्ड किए बिना या ट्रैफ़िक कैप्चर किए बिना रिमोट सर्वर पर जो हो रहा है उसे जल्दी से देख सकें
RustNet पैकेट कैप्चर टूल्स का पूरक है। यह देखने के लिए RustNet का उपयोग करें कि कौन क्या कनेक्शन बना रहा है। सीधे Wireshark निरीक्षण के लिए, --pcapng-export PID/प्रक्रिया संदर्भ के साथ लाइव बेस्ट-इफ़ोर्ट पैकेट टिप्पणियाँ लिखता है। क्लीनअप-समय सहसंबंध के लिए, --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।
eBPF उन्नत प्रक्रिया पहचान (Linux डिफ़ॉल्ट)
RustNet बेहतर प्रदर्शन और कम ओवरहेड प्रक्रिया पहचान के लिए Linux पर डिफ़ॉल्ट रूप से कर्नेल eBPF प्रोग्राम का उपयोग करता है।
प्रक्रिया नाम:
- eBPF कार्य करने वाले थ्रेड के नाम के बजाय प्रक्रिया समूह नेता के TGID और
commनाम (एक कर्नेल फ़ील्ड जो 16 वर्णों तक सीमित है) रिकॉर्ड करता है, इसलिए मल्टी-थ्रेडेड एप्लिकेशन "Socket Thread" जैसे थ्रेड नामों के बजाय मुख्य प्रक्रिया नाम दिखाते हैं - फिर RustNet
/proc/<tgid>/commके माध्यम से वर्तमान नाम को फिर से हल करता है, एक्ज़िक्यूटेबल के फ़ाइल नाम से comm-ट्रंकेटेड नामों को पुनर्प्राप्त करता है (जैसे "chromium-browse" "chromium-browser" बन जाता है), और Details दृश्य में दिखाए गए पूर्ण एक्ज़िक्यूटेबल पथ को हल करता है - अल्पकालिक प्रक्रियाएँ जो इस संवर्धन के चलने से पहले बाहर निकल जाती हैं, वे eBPF-रिकॉर्डेड 16-वर्ण नाम रखती हैं
फ़ॉलबैक व्यवहार:
- जब eBPF लोड होने में विफल रहता है या पर्याप्त अनुमतियाँ नहीं होती हैं, तो RustNet स्वचालित रूप से मानक procfs-आधारित प्रक्रिया पहचान पर वापस आ जाता है
- मानक मोड procfs स्कैनिंग के माध्यम से उसी तरह नाम हल करता है, लेकिन उच्च CPU ओवरहेड के साथ
- eBPF डिफ़ॉल्ट रूप से सक्षम है; किसी विशेष बिल्ड फ़्लैग की आवश्यकता नहीं है
eBPF को अक्षम करने और केवल procfs मोड का उपयोग करने के लिए, इस प्रकार बिल्ड करें:
cargo build --release --no-default-features
तकनीकी जानकारी के लिए देखें ARCHITECTURE.md।
प्रक्रिया गतिविधि और इंटरफ़ेस मॉनिटरिंग
RustNet प्रक्रिया-स्तरीय ट्रैफ़िक लेखांकन को वास्तविक समय नेटवर्क इंटरफ़ेस आँकड़ों के साथ जोड़ता है:
- Overview टैब: वर्तमान दरों, त्रुटियों और ड्रॉप्स के साथ सक्रिय इंटरफ़ेस दिखाता है
- Activity टैब (
3दबाएँ): प्रक्रियाओं को Egress (TX) या Ingress (RX) द्वारा रैंक करता है, जिसमें रिटेन्ड और रोलिंग ट्रैफ़िक, दरें, हिस्से, कनेक्शन और गंतव्य शामिल हैं - सुरक्षा कार्यप्रवाह: Egress द्वारा क्रमबद्ध करें, अप्रत्याशित अपलोडर की पहचान करें, फिर उसके शीर्ष रिमोट पीयर और रिटेन्ड ट्रैफ़िक का निरीक्षण करें, भले ही कनेक्शन बंद हो जाए
- इंटरफ़ेस विवरण (Activity पर
iदबाएँ): हर इंटरफ़ेस के लिए मूल व्यापक मेट्रिक्स दिखाता है - क्रॉस-प्लेटफ़ॉर्म: Linux (sysfs), macOS/FreeBSD (getifaddrs), Windows (GetIfTable2 API)
- स्मार्ट फ़िल्टरिंग: Windows स्वचालित रूप से वर्चुअल/फ़िल्टर एडेप्टर को बाहर करता है
इंटरफ़ेस आँकड़ों की व्याख्या और प्लेटफ़ॉर्म-विशिष्ट व्यवहार पर विस्तृत दस्तावेज़ के लिए देखें USAGE.md।
उपलब्ध मेट्रिक्स:
- कुल बाइट्स और पैकेट (RX/TX)
- त्रुटि काउंटर (रिसीव और ट्रांसमिट)
- पैकेट ड्रॉप्स (कतार ओवरफ्लो)
- टकराव (विरासत, आधुनिक नेटवर्क पर शायद ही उपयोग होता है)
आँकड़े न्यूनतम प्रदर्शन प्रभाव के साथ एक पृष्ठभूमि थ्रेड में हर 2 सेकंड में एकत्र किए जाते हैं।
स्क्रीनशॉट
| Overview लाइव आँकड़ों और स्पार्कलाइन के साथ कनेक्शन तालिका ![]() | Details प्रति-कनेक्शन SNI, सिफर, GeoIP, DPI ![]() |
| Graph ट्रैफ़िक चार्ट, ऐप वितरण, शीर्ष प्रक्रियाएँ ![]() | Activity प्रक्रिया 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
From 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
अन्य प्लेटफ़ॉर्म:
- FreeBSD: rustnet-bsd releases से डाउनलोड करें
- Docker, सोर्स बिल्ड, अन्य Linux डिस्ट्रोस: विस्तृत निर्देशों के लिए देखें INSTALL.md
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।
यदि आप capabilities सेट करते हैं लेकिन TUI अभी भी
eBPF unavailableदिखाता है, तो समस्या निवारण अनुभाग में eBPF Unavailable Despite Capabilities Being Set देखें।
कीबोर्ड नियंत्रण
| Key | Action |
|---|---|
q | बाहर निकलें (पुष्टि के लिए दो बार दबाएँ) |
Ctrl+C | तुरंत बाहर निकलें |
x | सभी कनेक्शन साफ़ करें (पुष्टि के लिए दो बार दबाएँ) |
Tab या ] | अगला टैब |
Shift+Tab या [ | पिछला टैब |
1–5 | Overview / Details / Activity / Graph / Help पर जाएँ |
↑/k ↓/j | ऊपर/नीचे नेविगेट करें |
g G | पहले/अंतिम कनेक्शन पर जाएँ |
Enter | कनेक्शन विवरण देखें |
Esc | वापस जाएँ या फ़िल्टर साफ़ करें |
c | रिमोट पता कॉपी करें |
p | सेवा नाम/पोर्ट टॉगल करें |
d | Overview पर होस्टनाम/IP या Activity पर Egress/Ingress टॉगल करें |
s S | सॉर्ट कॉलम साइकिल करें / दिशा टॉगल करें |
a | प्रक्रिया समूहीकरण टॉगल करें |
Space | प्रक्रिया समूह का विस्तार/संक्षेप करें |
←/→ या h/l | समूह संक्षेप/विस्तार करें |
PageUp/PageDown या Ctrl+B/F | पेज नेविगेशन |
t | ऐतिहासिक (बंद) कनेक्शन टॉगल करें |
i | Overview पर सिस्टम जानकारी या Activity पर इंटरफ़ेस विवरण टॉगल करें |
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
सॉर्टिंग:
- सॉर्ट करने योग्य कॉलम (Process, Addresses, Service, Application, State, Bandwidth) साइकिल करने के लिए
sदबाएँ - सॉर्ट दिशा टॉगल करने के लिए
S(Shift+s) दबाएँ - बैंडविड्थ खपत खोजें: "Bandwidth Total ↓" दिखाई देने तक
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- केवल स्थापित कनेक्शन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 कनेक्शन हटाने से पहले स्मार्ट टाइमआउट और विज़ुअल चेतावनियों का उपयोग करता है:
विज़ुअल स्टेलनेस संकेतक:
- सफ़ेद: सक्रिय (टाइमआउट का < 75%)
- पीला: स्टेल (टाइमआउट का 75-90%)
- लाल: गंभीर (टाइमआउट का > 90%)
प्रोटोकॉल-जागरूक टाइमआउट:
- HTTP/HTTPS: 10 मिनट (keep-alive समर्थन करता है)
- SSH: 30 मिनट (लंबे सत्र)
- सामान्य TCP स्थापित: 5 मिनट
- QUIC connected: 3 मिनट (या पीयर का ट्रांसपोर्ट-पैराम idle टाइमआउट, यदि मौजूद हो);
Initial/Handshaking: 60 सेकंड - DNS: 30 सेकंड
- TCP CLOSED: 15-सेकंड आर्काइवल ग्रेस
उदाहरण: एक HTTP कनेक्शन 7.5 मिनट पर पीला, 9 मिनट पर लाल हो जाता है, और 10 मिनट पर हटा दिया जाता है।
पूर्ण टाइमआउट विवरण के लिए देखें USAGE.md।
दस्तावेज़
- INSTALL.md - सभी प्लेटफ़ॉर्म के लिए विस्तृत स्थापना निर्देश, अनुमति सेटअप और समस्या निवारण
- USAGE.md - कमांड-लाइन विकल्पों, फ़िल्टरिंग, सॉर्टिंग और लॉगिंग सहित संपूर्ण उपयोग मार्गदर्शिका
- SECURITY.md - Landlock सैंडबॉक्सिंग और विशेषाधिकार प्रबंधन सहित सुरक्षा सुविधाएँ
- ARCHITECTURE.md - तकनीकी वास्तुकला, प्लेटफ़ॉर्म कार्यान्वयन और प्रदर्शन विवरण
- CONTRIBUTING.md - योगदान कार्यप्रवाह, गुणवत्ता आवश्यकताएँ और परियोजना दिशानिर्देश
- PROFILING.md - flamegraph सेटअप और अनुकूलन युक्तियों के साथ प्रदर्शन प्रोफाइलिंग गाइड
- ROADMAP.md - नियोजित सुविधाएँ और भविष्य के सुधार
- RELEASE.md - अनुरक्षकों के लिए रिलीज़ प्रक्रिया
योगदान
योगदान का स्वागत है! योगदान कैसे करें, इसके दिशानिर्देशों के लिए कृपया देखें CONTRIBUTING.md।
इस परियोजना में योगदान देने वाले लोगों की सूची के लिए देखें CONTRIBUTORS.md।
लाइसेंस
यह परियोजना Apache License, Version 2.0 के अंतर्गत लाइसेंस प्राप्त है - विवरण के लिए LICENSE फ़ाइल देखें।
आभार
- टर्मिनल UI के लिए ratatui के साथ निर्मित
- पैकेट कैप्चर libpcap द्वारा संचालित
tshark/wireshark/tcpdump,sniffnet,netstat,ss,iftopऔर bandwhich जैसे टूल्स से प्रेरित- कुछ कोड vibe coded है (OMG) / LLM देवता आपके साथ रहें
दस्तावेज़ स्थानांतरित किया गया
बेहतर संगठन के लिए कुछ अनुभाग समर्पित फ़ाइलों में स्थानांतरित कर दिए गए हैं:
- अनुमति सेटअप: अब INSTALL.md - Permissions Setup में
- स्थापना निर्देश: अब INSTALL.md में
- विस्तृत उपयोग: अब USAGE.md में
- वास्तुकला विवरण: अब ARCHITECTURE.md में



