Linux 上最有用的命令行网络监视器
网络监控对于各种规模的企业来说都是一项关键的 IT 功能。网络监控的目标可能有所不同。例如,监控活动可以是长期网络配置、安全保护、性能故障排除、网络使用情况统计等的一部分。根据其目标,网络监控可以通过多种不同的方式完成,例如执行数据包级嗅探、收集流级统计数据、主动向网络注入探针、解析服务器日志等。
虽然有许多能够进行 24/7/365 监控的专用网络监控系统,但在某些情况下,您也可以利用命令行网络监控器,而在这种情况下,专用监控器是多余的。如果您是系统管理员,您应该拥有一些众所周知的 CLI 网络监视器的实践经验。以下是Linux 上流行且有用的命令行网络监视器的列表。
数据包级嗅探
在此类别中,监控工具捕获线路上的各个数据包,剖析其内容,并显示解码的数据包内容或数据包级统计信息。这些工具从最低级别进行网络监控,因此可以以网络 I/O 和分析工作为代价进行最细粒度的监控。
1. dhcpdump
命令行 DHCP 流量嗅探器捕获 DHCP 请求/响应流量,并以人性化的格式显示剖析的 DHCP 协议消息。当您排除 DHCP 相关问题时,它非常有用。
2. dsniff
一组基于命令行的嗅探、欺骗和劫持工具,专为网络审计和渗透测试而设计。他们可以嗅探各种信息,例如密码、NSF 流量、电子邮件、网站 URL 等。
3. httpry
HTTP 数据包嗅探器,捕获并解码 HTTP 请求和响应数据包,并以人类可读的格式显示它们。
4. IPTraf
基于控制台的网络统计查看器。它实时显示数据包级、连接级、接口级、协议级数据包/字节计数器。数据包捕获可以通过协议过滤器进行控制,其操作是完全菜单驱动的。

5. mysql-sniffer
MySQL 流量嗅探器,用于捕获和解码与 MySQL 查询相关的数据包。它以人类可读的格式显示最常见或所有查询。
6. ngrep
grep
通过网络数据包。它可以捕获实时数据包,并将数据包与正则表达式或十六进制表达式进行匹配(过滤)。它对于检测和存储任何异常流量或从实时流量中嗅探特定模式的信息非常有用。
7. p0f
一种被动指纹识别工具,基于数据包嗅探,可靠地识别操作系统、NAT 或代理设置、网络链接类型以及与活动 TCP 连接相关的各种其他属性。
8. pktstat
一种命令行工具,用于分析实时数据包以显示连接级带宽使用情况以及所涉及协议的描述信息(例如 HTTP GET/POST、FTP、X11)。

9. Snort
一种入侵检测和预防工具,可以基于规则驱动的协议分析和内容匹配来检测/预防实时流量中的各种后门、僵尸网络、网络钓鱼、间谍软件攻击。
10. tcpdump
命令行数据包嗅探器能够根据过滤器表达式捕获网络数据包,剖析与数据包相关的各种协议,并转储数据包内容以进行数据包级分析。它广泛用于任何类型的网络相关故障排除、网络应用程序调试或安全监控。
11. tshark
一个命令行数据包嗅探工具,附带基于 Wireshark GUI 的协议分析器。它可以捕获和解码线路上的实时数据包,并以人性化的方式显示解码的数据包内容。
流量/过程/接口级监控
在此类别中,网络监控是通过将网络流量分类为流、关联进程或接口,并收集每个流、每个进程或每个接口的统计数据来完成的。信息源可以是libpcap
数据包捕获库或sysfs
内核虚拟文件系统。这些工具的监控开销较低,但缺少数据包级检查功能。
12. bmon
基于控制台的带宽监控工具,显示每个接口的各种信息,不仅包括聚合/平均 RX/TX 统计数据,还包括带宽使用情况的历史视图。

13. iftop
带宽使用监控工具,可以实时显示各个网络连接的带宽使用情况。它配备了基于 ncurses 的界面,可以按排序顺序可视化所有连接的带宽使用情况。它对于监控哪些连接消耗最多的带宽非常有用。
14. nethogs
一种进程监控工具,可在基于 ncurses 的界面中实时查看各个进程或程序的上传/下载带宽使用情况。这对于检测带宽占用过程很有用。
15. netstat
一个命令行工具,显示网络堆栈的各种统计信息和属性,例如打开的 TCP/UDP 连接、网络接口 RX/TX 统计信息、路由表、协议/套接字统计信息。当您诊断网络堆栈的性能和资源使用相关问题时,它非常有用。
16.speedometer
基于控制台的流量监视器,通过 ncurses 绘制的条形图可视化接口 RX/TX 带宽使用的历史趋势。

17. sysdig
一个全面的系统级调试工具,具有统一的界面,用于研究不同的 Linux 子系统。其网络监控模块能够在线或离线监控各种每个进程/每个主机的网络统计信息,例如带宽使用情况、连接/请求数量等。
18. tcptrack
TCP 连接监控工具,显示活动 TCP 连接的信息,包括源/目标 IP 地址/端口、TCP 状态和带宽使用情况。

19. vnStat
命令行流量监视器,可维护每个接口的 RX/TX 带宽使用情况的历史视图(例如,当前、每日、每月)。作为后台守护进程运行,它收集并存储有关带宽速率和传输总字节数的接口统计数据。
主动网络监控
与迄今为止介绍的被动监控工具不同,此类工具通过主动向网络注入探针并收集相应的响应来执行网络监控。监控目标包括路由路径、可用带宽、丢包率、延迟、抖动、系统设置或漏洞等。
20. dnsyo
一种 DNS 监控工具,可以从分布在 1,500 多个不同网络的开放解析器中进行 DNS 查找。当您检查 DNS 传播或排除 DNS 配置故障时,它非常有用。
21. iperf
TCP/UDP 带宽测量实用程序,可以测量两个端点之间的最大可用带宽。它通过让两台主机在它们之间单向或双向泵出 TCP/UDP 探测流量来测量可用带宽。当您测试网络容量或调整网络堆栈的参数时,它非常有用。一个名为 netperf
的变体具有更多功能和更好的统计数据。
22. netcat
一种多功能网络调试工具,能够读取、写入或侦听 TCP/UDP 套接字。它通常与其他程序或脚本一起使用,用于后端网络传输或端口侦听。
23. nmap
命令行端口扫描和网络发现实用程序。它依赖于许多基于 TCP/UDP 的扫描技术来检测本地网络上的开放端口、活动主机或现有操作系统。当您审核本地主机是否存在漏洞或构建主机映射以进行维护时,它非常有用。 zmap
是一种具有互联网范围扫描功能的替代扫描工具。
24. ping
一种网络测试工具,通过与远程主机交换 ICMP 回显和回复数据包来工作。当您测量路由路径的往返时间 (RTT) 延迟和丢失率以及测试远程系统的状态或防火墙规则时,它非常有用。 ping
的变体具有更高级的接口(例如 noping
)、多协议支持(例如 hping
)或并行探测功能(例如 fping
)。

25. sprobe
一种命令行工具,可启发式推断本地主机与任意远程 IP 地址之间的瓶颈带宽。它使用 TCP 三路握手技巧来估计瓶颈带宽。在解决广域网性能和路由相关问题时,它非常有用。
26. traceroute
一种网络路径发现工具,可揭示从本地主机到远程主机的第 3 层路由/转发路径。它的工作原理是发送 TTL 限制的探测数据包并收集来自中间路由器的 ICMP 响应。在解决网络连接速度慢或与路由相关的问题时,它非常有用。 traceroute
的变体具有更好的 RTT 统计信息(例如,mtr
)。

应用日志解析
在此类别中,网络监控针对特定的服务器应用程序(例如 Web 服务器或数据库服务器)。通过分析服务器应用程序的日志文件来监视服务器应用程序生成或消耗的网络流量。与早期类别中介绍的网络级监视器不同,此类别中的工具可以从应用程序级别分析和监视网络流量。
27. GoAccess
基于控制台的交互式查看器,用于查看 Apache 和 Nginx Web 服务器流量。基于访问日志分析,以可滚动视图的形式实时统计每日访问量、热门请求、客户端操作系统、客户端位置、客户端浏览器等多项指标。

28. mtop
命令行 MySQL/MariaDB 服务器监视器,可可视化最昂贵的查询和当前数据库服务器负载。当您优化 MySQL 服务器性能和调整服务器配置时,它非常有用。

29. ngxtop
用于 Nginx 和 Apache Web 服务器的流量监控工具,可在类似 top
的界面中可视化 Web 服务器流量。它的工作原理是解析 Web 服务器的访问日志文件并收集各个目的地或请求的流量统计信息。
结论
在本文中,我介绍了各种命令行网络监控工具,从最低的数据包级别监控器到最高的应用程序级别网络监控器。了解哪个工具可以做什么是一回事,而选择使用哪个工具则是另一回事,因为任何单一工具都无法成为满足您所有需求的通用解决方案。一个好的系统管理员应该能够决定哪种工具适合当前的情况。希望这份清单能对此有所帮助。
随时欢迎您通过评论来改进列表!