最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
CentOS Sniffer 流量控制如何实现
时间:2026-06-28 09:33:02 编辑:袖梨 来源:一聚教程网
在 CentOS 上实现流量控制的思路与工具

在 Linux 环境中,嗅探工具(如 tcpdump、tshark、iftop、nethogs)负责“看见”流量;真正的“控制”需要借助内核的 TC(Traffic Control) 框架或用户态工具(如 trickle、wondershaper)。TC 以 qdisc/class/filter 的树形结构实现限速、整形与优先级;需要注意的是,TC 主要作用于发送队列,通常“控发不控收”,下载侧限速常需借助 ingress 过滤或上游设备配合。若你是网关/NAT 场景,还需开启 IP 转发 并结合 iptables mangle/fwmark 做策略分流。
方案一 接口级限速与整形(TC + HTB)
- 适用:对服务器某网卡的整体出/入方向设定带宽上限与优先级,保持交互会话低延迟。
- 思路:在网卡上创建 HTB 根,划分多个 class(不同速率),用 sfq 做公平排队,配合 iptables fwmark + tc filter 将流量导入对应 class。
- 示例(出方向 eth0 限速 10Mbit,保留 1Mbit 应急带宽;入方向 eth1 对 192.168.0.10 限速 2Mbit):
说明:上述出方向使用 HTB 实现多速率与优先级;入方向通过 ingress policer 丢包来“限入”。若需更复杂的入方向整形,通常在网关上游或本机做 ifb 伪设备配合 HTB 实现。# 1) 出方向 eth0:整体 10M,保留 1M 应急,按 class 整形tc qdisc del dev eth0 root 2>/dev/nulltc qdisc add dev eth0 root handle 1: htb default 30tc class add dev eth0 parent 1: classid 1:1 htb rate 10Mbit ceil 10Mbittc class add dev eth0 parent 1:1 classid 1:10 htb rate 8Mbit ceil 9Mbit prio 0tc class add dev eth0 parent 1:1 classid 1:20 htb rate 1Mbitceil 1Mbitprio 1tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10tc qdisc add dev eth0 parent 1:20 handle 20: sfq perturb 10# 将某业务(示例:源 IP 192.168.0.10)打标并导入 class 1:20iptables -t mangle -I PREROUTING -s 192.168.0.10 -j MARK --set-mark 0x20tc filter add dev eth0 parent 1: protocol ip prio 1 handle 0x20 fw classid 1:20# 2) 入方向 eth1:对 192.168.0.10 限速 2Mbit(ingress 不能直接“整形”,用 policer 丢包近似限速)tc qdisc del dev eth1 ingress 2>/dev/nulltc qdisc add dev eth1 handle ffff: ingresstc filter add dev eth1 parent ffff: protocol ip prio 1 u32 match ip src 192.168.0.10/32 police rate 2Mbit burst 10k drop flowid :1
方案二 按进程限速(trickle)
- 适用:只想限制某个应用的上传/下载速率,且该程序使用 glibc 的动态链接。
- 特点:用户态实现、无需 root 即可限制进程;对 UDP 与静态链接程序无效。
- 示例(将 scp 上传限速为 100 KB/s):
提示:先用# 安装(EPEL)sudo yum install -y epel-releasesudo yum install -y trickle# 限制命令trickle -u 100 scp backup.tgz [email protected]:/home/wsluldd /usr/bin/your_app | grep libc.so检查是否使用 libc.so,否则 trickle 不会生效。
方案三 一键接口限速(wondershaper)
- 适用:快速为某网卡设置下载/上传上限,并保持交互会话低延迟。
- 原理:wondershaper 是封装了 tc 的脚本,出方向用队列整形,入方向通过丢包近似限速。
- 示例(网卡 eth0,下载 1024 Kbps,上传 512 Kbps;清除限速用 clear):
说明:wondershaper 适合“快速落地”,如需细粒度策略(多用户/多业务/优先级),建议直接使用 TC 手工编排。# 安装(EPEL)sudo yum install -y epel-releasesudo yum install -y wondershaper# 设置限速sudo wondershaper -a eth0 -d 1024 -u 512# 清除限速sudo wondershaper -a eth0 -c# 或sudo wondershaper clear eth0
验证与排错
- 查看与清理规则:
tc -s qdisc ls dev eth0tc -s class ls dev eth0tc filter show dev eth0tc qdisc del dev eth0 roottc qdisc del dev eth1 ingress - 实时观测带宽:
sudo yum install -y iftop nethogssudo iftop -i eth0sudo nethogs eth0 - 常见注意点:
- TC 主要“控发不控收”,入方向限速多用 ingress policer 或上游配合;
- 作为网关/NAT 时需开启 net.ipv4.ip_forward=1 并正确配置 SNAT;
- 多业务分流优先用 iptables mangle + fwmark + tc filter,便于维护与扩展。
相关文章
- VisualStudioCode怎样调用外部浏览器查看效果 06-28
- Premiere怎么添加闪光灯效果 06-28
- 极空间怎么安装Docker 06-28
- 流浪法师技能搭配攻略——掌握绝世法术,征服游戏世界(解锁全新魔法组合,打造最强法师阵容) 06-28
- 橙子阅读如何调整字体大小 06-28
- 买谷子的App推荐:人气高、好用的二次元周边购物软件 06-28