如何用Debian Sniffer进行流量整形
导读:概念澄清与总体思路 Debian 并不存在名为“Sniffer”的官方流量整形工具;常见的抓包/嗅探器如 tcpdump、Wireshark/dumpcap 仅用于捕获与分析流量,不具备流量整形能力。若要进行流量整形,应使用 Linux...
概念澄清与总体思路
- Debian 并不存在名为“Sniffer”的官方流量整形工具;常见的抓包/嗅探器如 tcpdump、Wireshark/dumpcap 仅用于捕获与分析流量,不具备流量整形能力。若要进行流量整形,应使用 Linux 内核的 tc(Traffic Control) 子系统,它可实现基于令牌桶/漏桶等算法的限速与整形策略。
快速上手示例 限制本机出网带宽
- 目标:在接口 eth0 上将本机对外“发送”流量整形为1 Mbps(HTB 分级示例,便于后续扩展优先级/多类限速)。
- 步骤:
- 安装工具(若未安装) sudo apt update sudo apt install iproute2
- 添加根队列与默认类 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 2mbit ceil 2mbit
- 创建受限子类(本例限制为 1 Mbps) sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate 1mbit ceil 1mbit
- 将流量导向子类(示例:按源地址匹配;如需按目的地址,将 ip src 改为 ip dst) 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
- 查看与调整
- 查看:tc -s qdisc ls dev eth0;tc -s class ls dev eth0
- 调整/删除:tc class change/replace …;tc qdisc del dev eth0 root
- 说明:上述示例仅对“出接口”生效(影响本机对外发送流量)。若需限制“入站”流量,见下一节。
限制入站流量的两种做法
- 方法 A(推荐):使用 ifb 伪接口 将入站流量重定向为“出方向”再整形
- 加载模块并创建 ifb sudo modprobe ifb sudo ip link add name ifb0 type ifb sudo ip link set ifb0 up
- 将 eth0 入站重定向到 ifb0 sudo tc qdisc add dev eth0 handle ffff: ingress sudo tc filter add dev eth0 parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0
- 对 ifb0 出方向做 HTB 限速(示例 1 Mbps) sudo tc qdisc add dev ifb0 root handle 1: htb default 30 sudo tc class add dev ifb0 parent 1: classid 1:1 htb rate 2mbit ceil 2mbit sudo tc class add dev ifb0 parent 1:1 classid 1:10 htb rate 1mbit ceil 1mbit sudo tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip src 0.0.0.0/0 flowid 1:10
- 方法 B(简单丢弃式监管):在 ingress 上使用 police 丢弃超速率包(不平滑,适合“封顶”) 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 队列不支持真正的队列调度,若需要平滑整形请优先采用 ifb 方案。
与抓包工具配合进行验证
- 抓包工具(如 tcpdump/dumpcap)不负责整形,但可用于验证限速效果与观察突发。示例:
- 抓取本机发往某目标的流量 sudo tcpdump -i eth0 -nn host 1.2.3.4 and port 80
- 使用 dumpcap 写入文件(便于后续分析) sudo dumpcap -i eth0 -w /tmp/cap.pcap ‘tcp port 80’
- 建议做法:先配置 tc 限速,再用抓包/统计工具观察吞吐是否接近设定值、是否存在丢包/重传等异常。
常见问题与注意事项
- 作用方向:tc 默认只影响出接口;入站整形需借助 ifb 或在 ingress 上使用 police(丢弃式)。
- 单位与突发:rate/ceil 支持 kbit/mbit;突发与延迟参数(如 burst/latency)需结合业务容忍度与链路 RTT 调整,过小会丢包,过大则失去整形意义。
- 监控与回滚:使用 tc -s 观察队列/类统计;变更前记录当前规则,必要时用 tc qdisc del 快速回滚。
- 生产变更:先在测试环境验证,逐步调参,避免一次性大幅限速影响业务。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何用Debian Sniffer进行流量整形
本文地址: https://pptw.com/jishu/770927.html
