在 Linux 系统中,监控网络状况的方法丰富多样,涵盖实时流量统计、连接状态分析、带宽占用排查、网络延迟测试等多个维度。以下从基础工具、实时监控、连接分析、进程级监控、抓包工具、性能统计、自动化监控等方面详细介绍:
一、基础网络信息查看
1. 查看网络接口状态
ifconfig 或 ip addr
功能:显示网卡 IP 地址、MAC 地址、子网掩码、流量统计等。
示例:
ifconfig eth0 # 查看指定接口信息
ip addr show ens33 # 现代Linux常用`ip`命令
ethtool
功能:查询 / 配置网卡驱动参数(如速率、双工模式)。
示例:
ethtool eth0 # 查看网卡速率和双工模式
ethtool -s eth0 speed 1000 duplex full # 设置千兆全双工
2. 路由与 DNS 配置
route 或 ip route
功能:查看 / 管理路由表。
示例:
route -n # 以数字形式显示路由表
ip route add default via 192.168.1.1 dev eth0 # 添加默认路由
nslookup/dig
功能:诊断 DNS 解析问题。
示例:
dig baidu.com @8.8.8.8 # 使用Google DNS解析域名
二、实时网络流量监控
1. iftop:实时流量可视化
功能:按接口显示实时带宽使用情况,支持按 IP 排序,类似top的交互界面。
安装:
apt-get install iftop # Debian/Ubuntu
yum install iftop # CentOS/RHEL
常用参数:
iftop -i eth0 # 监控指定接口
iftop -P # 显示端口对应的进程名
2. nload:分上下行流量监控
功能:实时显示网卡上下行流量,支持多接口切换,界面简洁。
安装:
apt-get install nload
示例:
nload eth0 # 监控eth0的上下行流量
3. speedtest-cli:测速工具
功能:基于Speedtest.net测试网络带宽(需联网)。
安装:
pip install speedtest-cli
示例:
speedtest-cli --server 1234 # 指定测速服务器ID
三、网络连接与端口监控
1. netstat:经典连接分析工具
功能:显示所有网络连接、路由表、端口状态等,支持 TCP/UDP 协议。
常用参数:
netstat -antp # -a(所有连接)-n(数字形式)-t(TCP)-u(UDP)-p(进程)
netstat -ltnp | grep 80 # 查看监听80端口的进程
2. ss:更高效的netstat替代工具
功能:基于netlink套接字接口,比netstat更快,支持过滤和统计。
常用参数:
ss -t state established # 查看已建立的TCP连接
ss -lup | grep ssh # 查看监听SSH端口的UDP进程
3. lsof:查看进程打开的网络连接
功能:列出所有打开的文件描述符,包括网络套接字。
示例:
lsof -i :80 # 查看占用80端口的进程
lsof -i TCP:ESTABLISHED # 查看已建立连接的进程
四、进程级网络流量监控
1. nethogs:按进程统计流量
功能:实时显示各进程的网络带宽占用,支持按接口过滤。
安装:
apt-get install nethogs
示例:
nethogs eth0 # 监控eth0接口各进程的流量
2. pidstat:结合进程的网络统计
功能:属于sysstat工具包,可按进程显示网络接收 / 发送数据量。
安装:
apt-get install sysstat
示例:
pidstat -d 5 # 每5秒显示进程的磁盘和网络I/O
五、网络抓包与协议分析
1. tcpdump:命令行抓包工具
功能:捕获指定接口的网络数据包,支持协议、端口、IP 等过滤。
常用示例:
tcpdump -i eth0 port 80 -w http.pcap # 抓取80端口数据包并保存为pcap文件
tcpdump -nn 'tcp dst port 22 and (src host 192.168.1.100)' # 过滤SSH连接
2. Wireshark:图形化抓包分析
功能:通过tcpdump抓包后,用 Wireshark 图形界面分析协议细节(需在 Linux 桌面环境或远程转发)。
安装:
apt-get install wireshark
使用:
tcpdump -i eth0 -w - | wireshark -k -i - # 实时管道传输至Wireshark
六、网络性能与延迟测试
1. ping/ping6:测试连通性与延迟
功能:发送 ICMP 包测试目标主机的可达性和往返时间(RTT)。
示例:
ping -c 5 192.168.1.1 # 发送5个ICMP包
ping6 ipv6.google.com # 测试IPv6连通性
2. traceroute/mtr:路由追踪与诊断
traceroute:显示数据包经过的路由节点。
traceroute baidu.com
mtr:结合ping和traceroute,实时显示各节点的丢包率和延迟。
mtr --report-wide baidu.com # 生成详细路由报告
3. iperf3:吞吐量测试
功能:测量网络带宽、延迟、丢包率(需客户端 – 服务器模式)。
安装:
apt-get install iperf3
示例:
服务器端:iperf3 -s
客户端:iperf3 -c server_ip -t 30 (测试 30 秒吞吐量)
七、系统级网络性能统计
1. sar:系统活动报告
功能:统计网络接口的流量、错误包、丢包率等,支持历史数据查询(需sysstat工具包)。
常用命令:
sar -n DEV 5 2 # 每5秒采样2次,显示各接口流量
sar -n TCP,ETCP 10 # 监控TCP连接状态统计(如重传、超时)
2. /proc文件系统
功能:通过内核虚拟文件获取网络统计信息。
关键文件:
/proc/net/dev:各接口的字节数、包数统计。
cat /proc/net/dev | grep eth0 # 查看eth0的接收/发送数据量
/proc/net/tcp:TCP 连接状态(可解析为人类可读格式)。
八、自动化监控与可视化
1. Shell 脚本定时统计
示例:每分钟记录一次 eth0 的流量并生成日志
while true; do
timestamp=$(date +"%Y-%m-%d %H:%M:%S")
rx=$(cat /proc/net/dev | awk '/eth0/ {print $2}')
tx=$(cat /proc/net/dev | awk '/eth0/ {print $10}')
echo "$timestamp,$rx,$tx" >> network.log
sleep 60
done
2. Prometheus + Grafana
功能:通过node_exporter采集 Linux 节点的网络指标(如带宽、连接数),用 Grafana 可视化。
配置步骤:
安装node_exporter:
wget https://github.com/prometheus/node_exporter/releases/latest/download/node_exporter-*.linux-amd64.tar.gz
在 Prometheus 配置中添加采集任务。
在 Grafana 中导入网络监控仪表盘(如 ID 13100)。
3. Cacti/Zabbix
传统监控工具:Cacti 通过 SNMP 采集流量数据并生成趋势图;Zabbix 支持自定义脚本监控网络延迟、端口状态等。
九、网络故障排查常用流程
基础检查:
ifconfig确认网卡状态(是否 UP,IP 是否正确)。
ping测试网关和外部网络连通性。
流量分析:
iftop/nload查看是否有异常流量占用。
nethogs定位耗流量的进程。
连接排查:
ss查看端口监听状态,确认服务是否正常运行。
tcpdump抓包分析协议交互是否异常(如 SYN Flood 攻击)。
性能优化:
通过ethtool调整网卡参数(如 RSS、GRO/TSO)。
检查/proc/sys/net/ipv4下的内核参数(如tcp_max_tw_buckets)。
总结:工具选择建议
实时流量监控:iftop(可视化)、nload(简洁分上下行)。
连接分析:ss(高效)、lsof(进程关联)。
进程级流量:nethogs(实时排序)、pidstat(历史统计)。
抓包诊断:tcpdump(命令行)、Wireshark(图形化)。
长期趋势:sar(系统日志)、Prometheus+Grafana(可视化)。
根据具体场景组合使用这些工具,可有效监控和优化 Linux 系统的网络性能。
想了解更多干货,可通过下方扫码关注
可扫码添加上智启元官方客服微信👇