Linux 网络进阶与压测命令速查
更新时间:2026-08-28。本文是 Linux 命令速查主题第⑯族:网络进阶与压测,约 29 个命令。第④族 网络命令 解决"通不通、连得上吗",这一族解决更进一步的问题——带宽到底能跑多少、慢在哪一层、包里究竟装了什么、以及如何在不改动代码的前提下模拟弱网。抓包与连接分析见 tcpdump、ss,原理见 网络概念。
一、带宽与吞吐测试
iperf3 是测量网络带宽的事实标准。它的思路很直接:一端当服务端监听,另一端发数据,统计单位时间内传了多少。它测的是"这条链路最大能跑多少",跟应用实际能跑多少是两回事——中间的差距往往就是协议栈开销、小包、延迟造成的问题。所以排查时通常先 iperf3 测出链路上限,再对比应用的实际吞吐,差距越大说明优化空间越多。
| 命令 | 作用 | 常用示例 |
|---|---|---|
iperf3 | 网络带宽测试工具,测 TCP/UDP 最大吞吐、丢包、抖动,量化链路能力 | 服务端 iperf3 -s;客户端 iperf3 -c 10.0.0.1;iperf3 -c host -t 60(测 60 秒);iperf3 -c host -P 8(8 并发流,跑满多核);iperf3 -c host -u -b 1G(UDP 1Gbps);iperf3 -c host -R(反向测,即测下行) |
单条 TCP 流常常跑不满带宽——这是 TCP 拥塞窗口和延迟共同作用的结果,不是故障。要测出链路真实上限,加
-P 4或-P 8开多条并发流。反过来,如果单流速度远低于多流总和,说明存在需要调优的窗口或缓冲问题。
二、HTTP 压力测试
这几款工具的定位不同:ab 最简单但只支持 HTTP/1.1 且单线程;wrk 用多线程 + 事件驱动,能压出高得多的并发,是服务端压测的首选;siege 擅长模拟真实的用户访问序列。
| 命令 | 作用 | 常用示例 |
|---|---|---|
wrk | 现代 HTTP 压测工具,多线程 + epoll,并发能力强,支持 Lua 脚本定制请求 | wrk -t4 -c100 -d30s http://host/api(4 线程 100 连接 30 秒);wrk -t4 -c100 -d30s -s post.lua http://host/api;wrk --latency(输出延迟分布) |
ab | Apache 自带的简易压测工具,一条命令看 QPS,快速验证够用 | ab -n 10000 -c 100 http://host/(1 万请求 100 并发);ab -k(启用 keepalive);ab -p post.txt -T application/json http://host/api(POST) |
siege | 支持按 URL 列表模拟真实访问序列的压测工具 | siege -c 50 -t 60s http://host/;siege -f urls.txt -i(随机访问列表) |
压测要盯的不只是 QPS,延迟分布往往更有价值:平均响应 20ms 听起来不错,但 P99 如果是 2 秒,说明有相当一部分用户会遇到明显卡顿。
wrk --latency会给出 P50/P90/P99,这才是该优化的靶子。压测前记得先确认压测机自身不是瓶颈——看它的 CPU 是否打满。
三、HTTP 调试与代理
| 命令 | 作用 | 常用示例 |
|---|---|---|
httpie | 人性化的 HTTP 客户端,语法比 curl 直观,默认格式化 JSON 并高亮 | http GET api.example.com/users;http POST api.example.com name=bob age:=30(:= 表示数字);http -v(显示请求头);http --download(下载) |
mitmproxy | 交互式 HTTPS 中间人代理,可实时查看和篡改请求,调试 API 与移动端抓包利器 | mitmproxy(终端交互界面);mitmweb(Web 界面);mitmdump -w out.log(只记录) |
mitmproxy抓 HTTPS 需要在客户端安装它的根证书,否则浏览器会报证书错误——这不是它坏了,正是 TLS 设计的目的。调试自家应用时没问题,抓别人的流量前请确认你有授权。
四、实时流量观察
iftop 和 nethogs 回答的问题不同:前者看"和谁在通信",后者看"哪个进程在通信"。排查"带宽被谁吃掉了"时,通常先用 iftop 定位到对端 IP,再用 nethogs 定位到进程。
| 命令 | 作用 | 常用示例 |
|---|---|---|
iftop | 按连接实时显示带宽占用,类似 top 的网络版 | iftop(默认第一块网卡);iftop -i eth0;iftop -n(不解析域名,更快更准);iftop -P(显示端口) |
nethogs | 按进程统计带宽占用,直接告诉你哪个程序在传数据 | nethogs;nethogs eth0;nethogs -d 5(5 秒刷新) |
tcpflow | 按 TCP 连接重组数据流,把每个连接的内容存成文件,看明文协议很直观 | tcpflow -i eth0 -c port 80(输出到屏幕);tcpflow -i eth0 port 3306 -o /tmp/flows(存文件) |
ngrep | 网络版的 grep,在包负载里做正则匹配,找特定关键字很方便 | ngrep -d eth0 -W byline "GET /api" port 80;ngrep -q "password" tcp |
用
iftop时建议加-n:不加的话它会反向解析每个 IP 的域名,在有大量外连时会明显卡顿,甚至因为 DNS 查询本身失败而拖慢显示。"看到一堆不认识的 IP 占满带宽"通常就是异常流量的信号,值得顺手记下对端去查。
五、深度抓包分析
tshark 是 Wireshark 的命令行版本。它的价值在于把 tcpdump 抓到的包用协议字段的方式问出来——不用自己去数字节偏移。抓包落地用 tcpdump,分析过滤用 tshark,这个组合能覆盖绝大多数场景。
| 命令 | 作用 | 常用示例 |
|---|---|---|
tshark | Wireshark 命令行版,按协议字段过滤与解析,输出可读的连接详情 | tshark -i eth0 -f "port 80"(抓取);tshark -r file.pcap -Y "http.request"(读文件并过滤);tshark -r f.pcap -T fields -e ip.src -e tcp.port(只输出指定字段);tshark -r f.pcap -q -z conv,tcp(统计 TCP 会话) |
ssldump | 解析 SSL/TLS 握手过程,排查证书、协议版本、加密套件协商失败 | ssldump -i eth0 port 443;ssldump -r f.pcap -k key.pem(有私钥可解密内容) |
想快速找出"谁在重传"(网络质量差或丢包的直接证据):
tshark -r f.pcap -Y "tcp.analysis.retransmission"。重传率高往往是链路丢包或接收端缓冲不足,而不是应用本身的问题。握手失败看tshark -r f.pcap -Y "tls.alert"。
六、探测与 DNS 诊断
fping 与 ping 的区别是它能同时探测多台主机并按汇总输出,扫一个网段时快得多;arping 工作在数据链路层,用来确认"这个 IP 在局域网里到底有没有人占"——IP 冲突排查的标准动作。
| 命令 | 作用 | 常用示例 |
|---|---|---|
fping | 批量 ping 多台主机,速度快、可按存活汇总,扫网段用 | fping -a -g 192.168.1.0/24(列出存活主机);fping -c 3 -q host1 host2(各测 3 次只出汇总) |
arping | 发 ARP 请求探测二层主机,可检测 IP 冲突(同一 IP 多个 MAC 回应) | arping -I eth0 192.168.1.1;arping -D -I eth0 192.168.1.100(冲突检测,无回应才可用) |
hping3 | 可定制 TCP/IP 报文的发包工具,能做端口扫描、防火墙测试、SYN flood 压测 | hping3 -S -p 80 host(SYN 探测);hping3 -c 5 -S -p 80 --flood host(压力测试,注意合规);hping3 --traceroute -p 80 host |
whois | 查询域名或 IP 的注册信息,确认归属、注册商、 Abuse 联系人 | whois example.com;whois 1.2.3.4 |
dnstracer | 追踪 DNS 解析的逐级查询路径,定位解析在哪一级超时或被劫持 | dnstracer -o -4 example.com |
dnsperf | DNS 服务器性能测试,测权威/递归服务器的查询吞吐与延迟 | dnsperf -s 8.8.8.8 -d queries.txt -c 100 -l 30 |
解析慢或不通时的排查顺序:
dig看能否解析 → 换公共 DNS(8.8.8.8)对比,判断是本地 DNS 还是权威 DNS 的问题 →dnstracer看卡在哪一级 → 若怀疑劫持,对比不同 DNS 的返回结果是否一致。DNS 基础知识见 网络命令。
七、限速与网络模拟
tc(traffic control,流量控制)是内核的流量控制子系统。它最被人熟知的用法是"模拟弱网"——在没有真实弱网环境的情况下,人为加上延迟、丢包、乱序,验证应用在不理想网络下的表现。这在上线前的健壮性测试里价值很高。
| 命令 | 作用 | 常用示例 |
|---|---|---|
tc | 流量控制:限速、加延迟、丢包、乱序,也可做 QoS 队列管理 | tc qdisc add dev eth0 root netem delay 100ms(加 100ms 延迟);tc qdisc add dev eth0 root netem loss 5%(5% 丢包);tc qdisc add dev eth0 root tbf rate 1mbit latency 50ms burst 1540(限速 1Mbps);tc qdisc del dev eth0 root(清除规则);tc -s qdisc show dev eth0(查看统计) |
用完一定要记得
tc qdisc del dev eth0 root清掉规则——我见过不止一次"测试完忘了删,整台机器网络一直卡着"的情况。另外netem的 delay/loss 可以叠加,比如netem delay 50ms 10ms loss 1%表示 50ms 基准延迟 ±10ms 抖动加 1% 丢包,很接近真实的移动网络。
八、连接跟踪与网络配置
| 命令 | 作用 | 常用示例 |
|---|---|---|
conntrack | 查看和管理内核的连接跟踪表,NAT 与防火墙都依赖它,表满会导致新连接被丢弃 | conntrack -L(列出);`conntrack -L |
bridge | 管理以太网网桥(二层交换机功能),容器网络与虚拟化网络的基础 | bridge link(查看端口);bridge fdb show(MAC 转发表);brctl show(老命令) |
brctl | 传统的网桥管理命令,新系统推荐用 bridge | brctl addbr br0;brctl addif br0 eth0;brctl show |
nmcli | NetworkManager 的命令行工具,管理连接、IP、DNS、Wi-Fi,桌面与服务器通用 | nmcli device status;nmcli connection show;nmcli con up eth0;nmcli con mod eth0 ipv4.addresses 192.168.1.10/24 |
resolvectl | systemd-resolved 的管理命令,查/改 DNS 配置与缓存 | resolvectl status;resolvectl query example.com(查解析);resolvectl flush-caches(清缓存);resolvectl dns eth0 8.8.8.8 |
iwconfig / iwlist | 无线网卡配置与扫描(较老的 iw 系列,新系统建议用 iw) | iwconfig wlan0;`iwlist wlan0 scanning |
aria2c | 多连接下载工具,支持 HTTP/FTP/BT/磁力,断点续传,比 wget 快很多 | aria2c -x 16 -s 16 URL(16 连接);aria2c -c URL(续传);aria2c -i urls.txt(批量) |
rclone | 云存储同步工具,支持 S3、OSS、Google Drive 等几十种后端,备份与迁移利器 | rclone sync /data remote:bucket(同步);rclone copy src remote:dst -P(带进度);rclone ls remote:bucket;rclone mount remote:bucket /mnt(挂载) |
sshuttle | 基于 SSH 的透明代理,不需要在远端装任何东西就能把流量走隧道 | sshuttle -r user@host 10.0.0.0/8(把目标网段走隧道);sshuttle -r user@host 0.0.0.0/0(全流量,谨慎) |
conntrack表满的典型症状是"新连接建不上,但已有连接正常",日志里出现nf_conntrack: table full, dropping packet。高并发网关或 NAT 服务器上要关注这个计数器,必要时调大net.netfilter.nf_conntrack_max。
一句话总结
网络进阶速查:测带宽用 iperf3,压 HTTP 用 wrk(盯 P99 而不只是 QPS),看谁在占带宽用 iftop+nethogs,分析包用 tshark 按协议字段问,模拟弱网用 tc netem(用完记得删),排查 IP 冲突用 arping,传数据用 aria2c/rclone——29 个命令覆盖"测得准、看得见、压得出、传得快"的网络工程全流程。