电脑到底在跟谁通信?Sniffnet 把联网软件、域名和 IP 放进一个界面
Sniffnet 用图形界面显示当前电脑的流量、远端主机、域名、服务和联网程序。这里给出 Windows、macOS、Linux 的安装方法和一次 10 分钟排查流程,也说明它与 Wireshark、GlassWire 和防火墙的差别。

第一次打开 Wireshark 的时候,屏幕上不停滚动数据包、地址、端口和协议。我盯了十分钟,还是没弄清自己的电脑正在跟谁通信。
后来在 GitHub 上找到 Sniffnet,体验一下轻松了很多。它保留了抓包最常用的几类信息,再用流量曲线、主机列表、程序图标和连接表格把结果摆出来。没有抓包经验,也能先回答几个日常问题:现在是谁在占带宽,哪些软件正在联网,它们连到了哪些 IP 和域名。
截至 2026 年 8 月 1 日,Sniffnet 有 40,258 Stars 。当前稳定版是 v1.5.1,Windows 、 macOS 和 Linux 都有安装包,界面提供简体中文。
打开后先看 Overview

Overview 页上方是最近 30 秒的实时流量曲线,上传和下载分开显示。左侧还能看到累计收发量和未及时处理的 dropped packets 。
下方分为三类信息:
- Hosts:远端主机的国家、反向解析域名、 ASN 和流量;
- Services:HTTP 、 DNS 、 SSH 等服务及流量;
- Programs:产生流量的程序名称、图标和可执行文件路径。
它对地理位置的展示只到国家级,用国旗表示。这里没有精确地图,也不能靠一个 IP 判断对方的实际人员或物理地址。 CDN 、代理和云服务还会让 IP 所属位置与网站运营方所在地点完全不同。结果也受内置 GeoLite2 数据库的版本和准确率影响;需要更新数据时,可以在设置中指定自己的 MMDB 。
哪个软件正在联网

程序识别是 v1.5 加入的功能。 Sniffnet 按本地端口和 TCP/UDP 协议查询系统进程信息,再显示程序名、图标和可执行文件路径。鼠标停在图标上,可以查看完整路径。
排查后台更新器、代理客户端、同步盘、 Docker Desktop 、 NAS 客户端和游戏平台时,可以先按流量排序,查看上传或下载量较高的程序。
程序归属并非每次都能命中。它依据端口、传输协议和当前进程表做时序关联,数据包里并没有可靠的进程身份。短连接、端口复用、代理或容器转发、多进程应用都可能造成遗漏或误归属。代码里会对未识别连接进行重试,并保留 Unknown 状态,所以“没有显示程序名”不代表这条连接没有进程。
6000 多种服务识别是什么意思
Sniffnet 可以按传输协议和端口号,为连接匹配 6000 多个服务、协议及历史上与木马、蠕虫相关的端口名称。这份列表来自 Nmap 的 service collection 。
这些结果来自端口服务字典,不具备深度包检测或恶意软件扫描能力。 HTTPS 常见于 443 端口,但任意程序都能改用非标准端口;一个端口被字典标成某种木马服务,也不能单独证明电脑已经感染。
Sniffnet Wiki 同样提醒,IANA 端口分配是一套约定,现实中经常出现非标准用法。看到可疑服务时,应继续核对程序路径、远端主机、流量时间和 PCAP,再决定是否处理。
Inspect 页能查到什么

Inspect 页按连接列出源 IP 、源端口、目标 IP 、目标端口和协议,即网络五元组。可以按远端主机、程序、服务、收藏或黑名单状态筛选。
搜索默认支持部分匹配:
chrome 包含 chrome
=chrome.exe 精确等于 chrome.exe
!cloud 排除包含 cloud 的结果
!=Unknown 排除精确等于 Unknown 的结果
点击一条连接,还能查看首次和末次通信时间、反向解析所得名称、 ASN 、 ICMP/ARP 类型,以及在链路类型允许时显示的源/目标链路层地址。公网连接里看到的 MAC 通常属于本地下一跳或网关,不能用来识别远端服务器。
延迟功能会主动向远端 IP 发送最多 3 次 ICMP ping,再显示成功响应的平均 RTT 。对方禁用 ping 时可能没有结果,这个数字也不代表 TCP 、 TLS 或应用请求延迟。

界面里的名称来自 IP 反向 DNS 查询。查询失败时只显示 IP;CDN IP 的 PTR 名称也未必等于浏览器地址栏中的网站。 Sniffnet 不会读取浏览器 URL 、 DNS 查询历史或 TLS SNI,同一 IP 后面的多个站点通常无法区分。目前项目仍在讨论解析 TLS ClientHello,因此不要把 rDNS 结果当作完整浏览历史。
三个平台怎么安装
最新正式版本可以从 GitHub Releases 下载:
https://github.com/GyulyVGC/sniffnet/releases/tag/v1.5.1
Windows
下载与系统架构对应的 MSI 。大多数电脑选择 Sniffnet_Windows_x64.msi,ARM Windows 选择 arm64 。
Sniffnet 依赖 Npcap 抓取网络数据。安装 Npcap 时勾选:
Install Npcap in WinPcap API-compatible Mode
Windows 安装包已由 SignPath Foundation 提供代码签名。下载仍建议认准项目 GitHub Releases 或官方网站,不要从第三方软件下载站获取重新打包版本。
macOS
Intel Mac 下载 Intel DMG,M 系列芯片下载 Apple Silicon DMG 。把 Sniffnet 拖进 Applications,第一次运行可以右键选择 Open 。如果系统拦截,再到 Security & Privacy 中选择 Open Anyway 。
抓取网卡流量需要管理员权限。通过 Homebrew 安装的版本,官方 Wiki 要求从终端执行:
sudo sniffnet
Linux
项目提供 DEB 、 RPM 和 AppImage 。 DEB/RPM 通常会由包管理器安装 libpcap 、 ALSA 和 fontconfig 等运行库,安装脚本也会为 /usr/bin/sniffnet 设置抓包所需的 capabilities 。通过其他包管理器或手动安装时,可以执行:
sudo setcap cap_net_raw,cap_net_admin=eip /path/to/sniffnet
AppImage 当前需要:
sudo -E ./Sniffnet_LinuxAppImage_amd64.AppImage
手动替换或升级二进制后,可以用 getcap /path/to/sniffnet 重新检查 capabilities 。 AppImage 和第三方包还可能受发行版运行库、图形驱动和渲染器影响。直接给桌面网络工具完整 root 权限风险更大,能用官方 DEB/RPM 和有限 capabilities 时,我会优先选这条路。
第一次使用,跑一个 10 分钟测试
启动后先选数据源。 Sniffnet 会列出物理网卡和虚拟网卡,并显示每块网卡最近 30 秒的流量预览。
每次分析只能选择一块网卡或一个 PCAP 文件。 Linux 可以选择特殊的 any 伪接口汇集多接口流量;Windows 和 macOS 没有对应的内置全接口合并模式。使用 any 时采用 Linux SLL 链路类型,链路层字段与普通 Ethernet 捕获不同。
可以按下面的顺序测试:
- 关闭下载和同步任务,记录 30 秒空闲流量;
- 只打开一个网站,观察新增主机、服务和程序;
- 依次启动代理、 Docker 或 NAS 客户端,尝试关联对应程序与远端 IP;
- 到 Inspect 页按程序名和域名过滤;
- 发现异常连接后,记下时间、程序路径、远端 IP 和流量方向。
需要限制捕获范围时,可以在初始页填写 BPF 。下面的写法只保留来自该网段的 TCP/UDP:
(tcp or udp) and src net 192.168.1.0/24
这是开始分析前设置的 capture filter,不能像 Wireshark display filter 那样在运行中随时改。它只决定 Sniffnet 抓取哪些包,不会阻断电脑上的任何网络通信。
PCAP 只在需要时打开

Sniffnet 可以导入 .pcap、.pcapng 和 .cap,也能把当前抓取的流量导出为 PCAP 。排查复杂问题时,可以先用 Sniffnet 确定时间段和连接,再将对应的 PCAP 放进 Wireshark 查看数据包细节。
Sniffnet 不显示数据包载荷(packet payload)。 HTTPS 等加密流量通常只能看到地址、端口、时序和密文;即使用 Wireshark,没有会话密钥时也无法直接看到网页正文。
PCAP 导出必须在开始分析前启用。第一次测试建议录 30~60 秒后停止本次分析,下一次启动时取消导出。未导出时,代码把抓取长度限制在 200 字节;启用导出后会提高到 65535 字节,磁盘增长和敏感内容暴露风险都更高。
PCAP 可能包含内网地址、 DNS 查询、未加密协议中的 Cookie 或其他明文内容,以及业务元数据。不要随手上传到公开网盘或 issue 。
与 GlassWire 、 Wireshark 的差别
Sniffnet 与 GlassWire 重叠的功能包括实时曲线、程序识别、主机与域名查看、通知和 IP 黑名单标记,这些功能均可免费使用。
GlassWire 当前官网还列出内置防火墙、远程服务器监控和历史图表,部分高级控制与更长历史属于付费功能。 Sniffnet 没有按程序允许、阻止或限速能力,导入黑名单后只会高亮和通知。它的历史分析主要依赖手动导出再导入 PCAP,并非持续跨会话保存的长期流量数据库。
Sniffnet 默认只能看到所选本机接口能够捕获的流量,不能充当全网流量探针,也不能直接连接远程 Sniffnet 实例查看会话。普通交换网络里,它不会自动看到其他设备之间的单播通信。
Sniffnet 适合连接级汇总。需要字段级协议解析、流重组、载荷查看和运行中 display filter 时,仍需 Wireshark 。
权限和隐私要留意
抓包必须访问底层网卡,所以 Windows 依赖 Npcap,macOS 和 Linux 需要管理员权限或 capabilities 。权限越高,安装来源越要谨慎。
IP 国家与 ASN 查询使用内置 MMDB,反向域名解析走系统 DNS 。系统解析器可能把查询的远端 IP 暴露给所配置的 DNS 服务商。程序启动后还会访问 GitHub Releases API 检查新版,请求会暴露源 IP 、访问时间和 Sniffnet 版本。
启用远程通知后,事件信息会通过 HTTP POST 发到配置的 webhook 。不同通知可能包含程序名、域名、 IP 和流量数据。只配置自己控制或信任的 HTTPS endpoint;明文 HTTP 可能让通知在传输途中被窃听或篡改。
项目用 Rust 编写,官方 FAQ 把它定位为比 Wireshark 更轻、更容易上手的分析器。已有个别用户报告异常高内存和界面卡顿,官方性能 benchmark 仍是 open issue,这些报告不能代表所有设备。长时间、高连接数捕获会不断积累会话级统计,是否适合常驻应结合 dropped 数、 RAM 和界面响应实际观察。
我会把它装在哪些机器上
经常切换代理、调 Docker 网络、维护 NAS 或排查服务器客户端时,Sniffnet 很省时间。它能先把“哪个程序、连到哪里、传了多少”整理出来,再决定是否需要 Wireshark 、系统防火墙或日志工具介入。
普通电脑上也有用。空闲时跑十分钟,逐个打开常用软件,很容易发现后台更新、云同步和不熟悉的远端连接。看到陌生 IP 不必立刻当成入侵,先核对程序路径、域名、 ASN 和时间,再做判断。
如果只能保留一个功能,你更需要程序流量排行、域名/IP 清单,还是异常连接通知?
来源链接: https://github.com/GyulyVGC/sniffnet
官方使用手册: https://github.com/GyulyVGC/sniffnet/wiki
图片来源: Sniffnet 官方仓库及 Wiki,未使用生成图片