睿诚科技协会

linux 查看 网络 流量

监控什么?

在开始之前,先明确你想监控什么:

linux 查看 网络 流量-图1
(图片来源网络,侵删)
  • 实时流量:当前网络接口的瞬时接收和发送速率。
  • 累计流量:自启动以来,网络接口总共接收和发送的数据量。
  • 连接状态:当前系统上活跃的网络连接(TCP/UDP),包括 IP、端口和状态。
  • 进程级流量:哪个进程在发送或接收网络数据。
  • 特定协议流量:针对特定协议(如 HTTP, DNS)的流量分析。

iftop - 实时流量监控的瑞士军刀

iftop 是一个非常受欢迎的交互式工具,用于监控网络接口的实时流量,它能清晰地显示哪个 IP 地址在与你的主机通信,以及它们的流量占比。

安装

  • Debian/Ubuntu: sudo apt-get install iftop
  • CentOS/RHEL/Fedora: sudo yum install iftopsudo dnf install iftop

基本用法

sudo iftop

必须使用 sudo,因为它需要捕获网络数据包的权限。

界面解读

运行后,你会看到一个类似 top 的界面:

                   => 10.0.1.5                  <= 192.168.1.101
                     --------------------------------
                     2.45KB  1.32KB  890B   10.0.1.5
                     1.21KB  2.45KB  1.32KB  192.168.1.101
                     2.45KB  1.21KB  890B   192.168.1.101
                     1.32KB  890B   2.45KB  10.0.1.5
                     --------------------------------
TX:   Cumulative   2.45KB   1.21KB   1.32KB   Peak 2.45KB
RX:   Cumulative   1.32KB   2.45KB   890B     Peak 2.45KB
TOTAL Cumulative   3.77KB   3.66KB   2.21KB   Peak 4.90KB
  • 中间部分:显示与外部 IP 的通信情况。=> 表示发送,<= 表示接收。
  • 左侧 TX:发送到该 IP 的流量。
  • 右侧 RX:从该 IP 接收的流量。
  • 底部 TX/RX/TOTAL:累计和峰值流量统计。

常用交互命令

  • n:显示主机名。
  • N:显示端口号。
  • p:暂停显示。
  • b:切换是否显示带宽单位(bits 或 bytes)。
  • h:显示帮助。

nethogs - 按进程监控网络流量

nethogs 的最大优势在于它能告诉你是哪个进程在消耗网络带宽,当你发现网络流量异常高,但不确定是哪个程序导致的时,nethogs 就派上用场了。

linux 查看 网络 流量-图2
(图片来源网络,侵删)

安装

  • Debian/Ubuntu: sudo apt-get install nethogs
  • CentOS/RHEL/Fedora: sudo yum install nethogssudo dnf install nethogs

基本用法

sudo nethogs

同样需要 sudo 权限。

界面解读

  PID USER     PROGRAM     DEV     SENT     RECEIVED
 1234 myuser   firefox     eth0    150.23KB  1.45MB
 5678 myuser   chrome      eth0    89.12KB  800.23KB
 9101 root     sshd        eth0    5.67KB   12.34KB
  • PID: 进程 ID。
  • USER: 运行进程的用户。
  • PROGRAM: 进程名。
  • DEV: 使用的网络设备。
  • SENT/RECEIVED: 该进程发送和接收的数据量。

ip / ss - 查看网络连接状态

这两个是现代 Linux 系统中替代老旧 netstatifconfig 的标准工具,功能更强大。

ip - 查看网络接口和路由

# 查看所有网络接口及其状态、IP地址
ip addr show
# 查看指定接口(如 eth0)的详细信息
ip addr show eth0
# 查看网络路由表
ip route show

ss - 查看网络连接

ssnetstat 的替代品,速度更快,信息更全。

# 查看所有 TCP 和 UDP 连接
ss -tulnp
# -t: TCP, -u: UDP, -l: 只显示监听端口, -n: 以数字形式显示地址和端口, -p: 显示 PID 和进程名
# 查看所有 ESTABLISHED (已建立连接) 的 TCP 连接
ss -t state established
# 查看指定端口(如 80)的连接
ss -tulpn 'sport = :80'

vnstat - 轻量级网络流量统计

vnstat 是一个基于控制台的网络流量监控器,它后台运行一个守护进程,持续记录网络流量数据,它非常适合查看历史流量流量趋势,而不是实时流量。

安装与初始化

# 安装
sudo apt-get install vnstat  # Debian/Ubuntu
sudo yum install vnstat      # CentOS/RHEL/Fedora
# 初始化数据库(非常重要!需要为每个网络接口执行)
sudo vnstat -u -i eth0
# 如果不确定接口名,可以用 `ip addr show` 查看
# 启用并设置开机自启(以 systemd 为例)
sudo systemctl enable vnstat
sudo systemctl start vnstat

基本用法

# 查看今天的流量
vnstat
# 查看本月的流量
vnstat -m
# 查看昨天的流量
vnstat -y
# 查看指定接口(如 eth0)的流量
vnstat -i eth0

tcpdump - 底层网络数据包分析器

tcpdump 是一个功能极其强大的命令行数据包分析器,它可以捕获和分析经过网络接口的原始数据包,这对于网络故障排查、安全分析和协议调试至关重要。

安装

sudo apt-get install tcpdump  # Debian/Ubuntu
sudo yum install tcpdump      # CentOS/RHEL/Fedora

基本用法

警告: 在生产环境上使用 tcpdump 时要小心,因为它会消耗大量 CPU 和磁盘 I/O。

# 捕获所有经过 eth0 接口的数据包并实时显示
sudo tcpdump -i eth0
# 只捕获包含 192.168.1.101 的 IP 流量
sudo tcpdump host 192.168.1.101
# 只捕获与某个端口(如 80)相关的流量
sudo tcpdump port 80
# 将捕获的数据包保存到文件(不实时显示)
sudo tcpdump -i eth0 -w capture.pcap
# 从文件中读取并分析之前保存的数据包
tcpdump -r capture.pcap

总结与选择建议

工具名称 主要用途 优点 缺点
iftop 实时流量监控 直观,显示主机/IP流量占比,交互式 不显示进程信息
nethogs 按进程监控流量 精确定位高流量进程 实时性不如 iftop
ip / ss 查看网络连接和状态 系统标准,信息全面,速度快 不提供流量速率信息
vnstat 历史流量统计 轻量级,查看长期流量趋势 需要后台服务,不适合实时监控
tcpdump 底层包分析 功能最强大,可过滤任何协议 使用复杂,输出不易读,消耗资源大

如何选择?

  • 我想快速看看现在谁在用我的网,流量多大?
    • sudo iftop
  • 我的网络很卡,想看看是哪个程序在作祟?
    • sudo nethogs
  • 我想检查某个服务端口是否在监听,或者有谁连了上来?
    • ss -tulnp
  • 我想看看这个月总共用了多少流量?
    • vnstat -m
  • 我的网络服务出问题了,需要深入分析数据包。
    • sudo tcpdump

对于日常运维和故障排查,iftopnethogsss 是最常用、最高效的组合。

分享:
扫描分享到社交APP
上一篇
下一篇