Debian 带宽回收与管理的实用方案
一 目标与思路
- 在 Linux/Debian 中,带宽不是“可回收”的资源,常见目标是:限制非关键业务的带宽占用、为关键业务预留带宽、识别并终止异常流量,从而把带宽“让给”高优先级任务。
- 核心手段包括:用 tc(Traffic Control)做限速与整形、用 nethogs/iftop 定位占用者、用 nftables/iptables 做速率限制与访问控制、配合 NetworkManager/netplan 做统一网络配置与持久化。
二 快速定位占用带宽的进程与连接
- 按进程查看实时带宽:安装并运行 nethogs,直观看到每个进程的发送/接收速率,便于快速“揪出”占用者。示例:sudo apt-get install nethogs;sudo nethogs eth0。
- 按连接查看带宽:安装并运行 iftop,按主机/端口观察实时流量,定位异常连接或突发流量来源。示例:sudo apt-get install iftop;sudo iftop -i eth0。
三 用 tc 限速与整形把带宽让给关键业务
- 令牌桶整形(TBF,简单全局限速):对接口做整体上限,适合“兜底”控制。示例:sudo tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms(可按需调整 rate/burst/latency)。
- 分层令牌桶(HTB,精细分类与预留):为不同业务分配带宽并保证关键业务的 ceil(上限)与 rate(保证)。示例:
- 根队列:sudo tc qdisc add dev eth0 root handle 1: htb default 30
- 业务类(保证 1Mbps,上限 1Mbps):sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit ceil 1mbit
- 过滤器(把目标为 192.168.1.100 的流量导向该类):sudo tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip dst 192.168.1.100 flowid 1:1
- 验证与回滚:
- 查看:tc -s qdisc ls dev eth0;tc -s class ls dev eth0;tc -s filter ls dev eth0
- 清除:sudo tc qdisc del dev eth0 root
- 提示:接口名可能为 eth0/enp0s3/wlan0 等,请先确认实际接口名称。
四 用 nftables 或 iptables 做速率限制与访问控制
- nftables 速率限制(轻量整形,适合“节流”而非严格整形):示例(限制来自 192.168.1.100 的入站速率不超过 1mbit/s,突发 10kb):sudo nft add table ip filter;sudo nft add chain ip filter input { type filter hook input priority 0 ; };sudo nft add rule ip filter input ip saddr 192.168.1.100 limit rate 1mbit/s burst 10kb。
- 防火墙层面的连接限制:如用 ufw 限制某端口的并发/速率(示例:sudo ufw limit 22/tcp),可间接减少滥用带来的带宽压力。
五 持久化与网络管理工具配合
- 持久化建议:将 tc/nftables 规则写入系统启动脚本(如 /etc/rc.local 或 systemd 服务),确保重启后仍然生效。
- 网络管理工具:
- NetworkManager:适合桌面/混合环境统一配置网络与脚本集成。
- netplan(若系统采用):通过 YAML 配置接口与参数,应用:sudo netplan apply。
- 监控与审计:结合 vnStat 做历史流量统计(sudo apt-get install vnstat;sudo systemctl start vnstat;vnstat -i eth0),用于容量评估与异常回溯。