Debian下Dumpcap流量整形与控制的正确做法
核心结论与思路
- Dumpcap 是 Wireshark 的命令行抓包组件,职责是“捕获”,不提供流量整形/速率控制能力。若需要限制带宽或整形流量,应在操作系统层使用 Linux 内核的 tc(Traffic Control) 对网卡队列进行限速/整形,然后再用 Dumpcap 进行捕获与分析。这样既不会影响抓包完整性,又能稳定复现网络条件。
前置准备
- 安装抓包工具与网络控制工具:
- 安装 Wireshark(内含 Dumpcap):sudo apt update && sudo apt install wireshark
- 安装 iproute2(内含 tc):sudo apt install iproute2
- 权限与组(可选,便于非 root 抓包):
- 将当前用户加入 wireshark 组,并配置 Dumpcap 能力或 Polkit 规则,以便非特权捕获。
使用tc进行流量整形与控制
- 限速方向与思路
- 对“本机发出”的流量:在出口方向(egress)使用 HTB 等队列进行整形/限速。
- 对“进入本机”的流量:在入口方向(ingress)使用 ingress qdisc + police 进行丢弃式限速(注意:ingress 不支持真正的队列整形,仅能丢弃/标记)。
- 示例一 出口限速(HTB,限制本机发送为约 1 Mbps)
- 创建根队列与类,并添加子类用于不同业务或主机:
- sudo tc qdisc add dev eth0 root handle 1: htb default 30
- sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit ceil 1mbit
- sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate 512kbit ceil 1mbit
- 将流量分类到子类(示例:按源地址将所有 IP 流量导向 1:10)
- sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src 0.0.0.0/0 flowid 1:10
- 说明:rate 为承诺带宽,ceil 为峰值带宽;可按需增加更多子类与过滤器实现细粒度控制。
- 示例二 入口限速(ingress,限制进入本机的下载为约 1 Mbps)
- 添加 ingress 伪队列并下发限速策略(丢弃超限速报文):
- sudo tc qdisc add dev eth0 ingress
- sudo tc filter add dev eth0 parent ffff: protocol ip u32 match ip dst 0.0.0.0/0 police rate 1mbit burst 15k drop flowid :1
- 说明:ingress 使用 police 动作进行限速,超出部分直接丢弃;适合模拟弱网/控制下载速率。
- 验证与回滚
- 查看队列/类/过滤器状态:
- tc -s qdisc ls dev eth0
- tc -s class ls dev eth0
- 清理规则(恢复默认):
- 出口:sudo tc qdisc del dev eth0 root
- 入口:sudo tc qdisc del dev eth0 ingress。
配合Dumpcap进行捕获与分析
- 在已施加速率控制的接口上进行抓包(示例):
- 抓取所有流量:sudo dumpcap -i eth0 -w capture.pcap
- 仅抓取 HTTP 流量:sudo dumpcap -i eth0 -w http.pcap ‘tcp port 80’
- 按时间/数量分段:sudo dumpcap -i eth0 -w cap -G 60 -c 1000(每 60 秒新建文件,最多 1000 个包/文件)
- 建议做法
- 先设置 tc 限速/整形,再用 Dumpcap 捕获;抓包完成后用 Wireshark 分析时延、丢包、重传等指标,验证限速效果与网络行为。
实用建议与注意事项
- 选择队列与动作
- 需要“整形”(平滑速率、队列排队)用 HTB/CBQ 等在 egress 侧;需要“限速/丢弃”用 ingress + police 或 egress 的 tbf/htb + police。
- 参数调优
- burst 过小会导致抖动与丢包,过大则峰值过高;通常从较小值开始(如 15–32 kbit),结合业务逐步放大并观察曲线。
- 方向与接口
- 明确是对“发送”还是“接收”流量整形;虚拟机/容器场景注意对 veth/tap 等虚拟接口限速。
- 影响与回滚
- 限速会影响业务时延与吞吐,建议先在测试环境验证;变更前记录当前规则,变更后及时校验并按需回滚。