当前位置:首页 > RockyLinux > 正文

RockyLinux网络流量整形实战教程(手把手教你用tc命令实现带宽控制与QoS)

在企业或家庭网络环境中,合理分配带宽资源至关重要。当多个应用同时使用网络时(如视频会议、文件下载、在线游戏等),若不加以控制,高带宽应用可能“吃掉”全部带宽,导致关键业务卡顿。这时,RockyLinux网络流量整形技术就派上用场了。

本文将带你从零开始,使用 Linux 内核自带的 tc(Traffic Control)工具,在 RockyLinux 系统中实现精细的带宽控制QoS配置,即使是 Linux 新手也能轻松上手!

RockyLinux网络流量整形实战教程(手把手教你用tc命令实现带宽控制与QoS) RockyLinux网络流量整形 tc命令限速 RockyLinux带宽控制 Linux QoS配置 第1张

什么是网络流量整形?

网络流量整形(Traffic Shaping)是一种主动管理网络流量的技术,通过限制特定连接或应用的带宽、设置数据包发送速率、分配优先级等方式,优化网络资源使用,保障关键服务的稳定性。在 RockyLinux 中,主要依靠 tc 命令配合 netfilter(iptables/nftables)实现。

准备工作

确保你的 RockyLinux 系统已安装必要的工具:

# 安装 iproute2(包含 tc 命令)sudo dnf install -y iproute# 检查 tc 是否可用tc -V

步骤一:理解基本概念

  • qdisc(排队规则):决定数据包如何排队和发送,如 htb(分层令牌桶)适合做带宽限制。
  • class(类别):用于划分不同优先级或带宽的流量组。
  • filter(过滤器):根据 IP、端口等条件将流量导向特定 class。

步骤二:为网卡设置根 qdisc

假设你的外网接口是 eth0(可通过 ip a 查看),我们先为其设置 HTB 根队列:

# 清除已有规则(避免冲突)sudo tc qdisc del dev eth0 root 2>/dev/null# 添加 HTB 根队列,总带宽设为 100Mbpssudo tc qdisc add dev eth0 root handle 1: htb default 30

步骤三:创建流量类别(Class)

我们将创建两个类别:高优先级(如 VoIP、SSH)和低优先级(如 BT 下载):

# 高优先级类:保证 20Mbps,最高可 burst 到 50Mbpssudo tc class add dev eth0 parent 1: classid 1:10 htb rate 20mbit ceil 50mbit prio 1# 低优先级类:最大 10Mbpssudo tc class add dev eth0 parent 1: classid 1:20 htb rate 5mbit ceil 10mbit prio 2# 默认类(未匹配流量)sudo tc class add dev eth0 parent 1: classid 1:30 htb rate 10mbit ceil 100mbit prio 3

步骤四:设置过滤器(Filter)

使用 u32 过滤器,将特定端口的流量导向对应类别。例如,将 SSH(22端口)和 HTTPS(443端口)设为高优先级:

# 高优先级:目标端口 22 或 443sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 \    match ip dport 22 0xffff flowid 1:10sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 \    match ip dport 443 0xffff flowid 1:10# 低优先级:目标端口 6881-6889(BitTorrent)sudo tc filter add dev eth0 protocol ip parent 1:0 prio 2 u32 \    match ip dport 6881 0xf800 flowid 1:20

步骤五:验证与测试

查看当前规则:

tc qdisc show dev eth0tc class show dev eth0tc filter show dev eth0

使用 iperf3 或在线测速工具分别测试不同端口的带宽,确认限速生效。

持久化配置

重启后 tc 规则会丢失,建议将上述命令写入脚本并设置开机启动:

# 创建脚本sudo nano /usr/local/bin/traffic-shaping.sh# 添加执行权限sudo chmod +x /usr/local/bin/traffic-shaping.sh# 在 /etc/rc.d/rc.local 中调用(确保 rc-local 服务启用)echo "/usr/local/bin/traffic-shaping.sh" >> /etc/rc.d/rc.localsudo chmod +x /etc/rc.d/rc.local

结语

通过本教程,你已经掌握了在 RockyLinux 中使用 tc 命令实现RockyLinux网络流量整形tc命令限速RockyLinux带宽控制Linux QoS配置 的核心方法。合理运用这些技术,可以显著提升网络服务质量,保障关键业务稳定运行。

> 💡 提示:生产环境中建议结合 nftables/iptables 标记数据包(使用 fwmark),再通过 tc 匹配标记,实现更灵活的策略。