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

RockyLinux网络服务质量配置(手把手教你设置QoS实现高效带宽管理)

在企业或家庭网络环境中,合理分配网络带宽资源至关重要。当多个应用同时使用网络时(如视频会议、文件下载、在线游戏等),若不加以控制,可能会导致关键业务卡顿甚至中断。这时,RockyLinux网络服务质量(QoS)配置就显得尤为重要。

本教程将带你从零开始,在RockyLinux系统中配置网络服务质量(QoS),实现智能的网络带宽管理流量控制。即使你是Linux新手,也能轻松上手!

RockyLinux网络服务质量配置(手把手教你设置QoS实现高效带宽管理) RockyLinux网络服务质量  QoS配置教程 RockyLinux流量控制 网络带宽管理 第1张

什么是QoS?

QoS(Quality of Service,服务质量)是一种网络技术,用于对不同类型的网络流量进行分类、标记和优先级调度。通过QoS,你可以确保语音通话、视频会议等实时应用获得更高的带宽优先级,而后台下载任务则使用剩余带宽。

RockyLinux中实现QoS的工具:tc + HTB

在RockyLinux(以及大多数Linux发行版)中,我们主要使用 tc(Traffic Control)命令配合HTB(Hierarchical Token Bucket)队列规则来实现QoS。RockyLinux流量控制的核心就是通过这些工具完成的。

HTB是一种灵活且高效的带宽管理机制,支持多级带宽限制和优先级设置。

准备工作

  1. 一台安装了RockyLinux 8/9 的服务器或虚拟机
  2. 具有 root 权限或 sudo 权限
  3. 已知网络接口名称(如 eth0、ens192 等,可通过 ip a 命令查看)

步骤一:安装必要工具

首先,确保系统已安装 iproute 包(通常默认已安装):

sudo dnf install -y iproute

步骤二:清除现有QoS规则(可选)

为避免冲突,先清除指定网卡上的所有tc规则(假设网卡名为 eth0):

sudo tc qdisc del dev eth0 root 2>/dev/null || echo "No existing qdisc to delete"

步骤三:创建HTB根队列

假设你的外网总带宽为 100Mbps(即 100mbit),我们将其设为根限制:

sudo tc qdisc add dev eth0 root handle 1: htb default 30

解释:

  • root:表示这是根队列
  • handle 1::给这个qdisc一个标识符
  • htb:使用HTB算法
  • default 30:未匹配任何规则的流量将进入 class 1:30

步骤四:定义带宽类别(Classes)

我们将创建三个优先级类别:

  • 高优先级(class 1:10):用于 VoIP、视频会议,保证 30Mbps
  • 中优先级(class 1:20):用于网页浏览、API调用,保证 50Mbps
  • 低优先级(class 1:30):用于下载、备份,最多使用剩余带宽
# 高优先级类(30Mbps)sudo tc class add dev eth0 parent 1: classid 1:10 htb rate 30mbit ceil 100mbit prio 1# 中优先级类(50Mbps)sudo tc class add dev eth0 parent 1: classid 1:20 htb rate 50mbit ceil 100mbit prio 2# 低优先级类(默认,无最低保障,最高100Mbps)sudo tc class add dev eth0 parent 1: classid 1:30 htb rate 1mbit ceil 100mbit prio 3

步骤五:添加过滤器(Filters)匹配流量

现在,我们需要告诉系统哪些流量属于哪个类别。这里以端口为例:

  • 将 SIP(5060)和 RTP(10000-20000)流量归为高优先级
  • 将 HTTP/HTTPS(80/443)归为中优先级
  • 其余流量归为低优先级(由 default 30 处理)
# 高优先级:SIP 和 RTPsudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 5060 0xffff flowid 1:10sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip sport 5060 0xffff flowid 1:10sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 10000 0xc000 flowid 1:10  # 匹配10000-19999# 中优先级:HTTP/HTTPSsudo tc filter add dev eth0 protocol ip parent 1:0 prio 2 u32 match ip dport 80 0xffff flowid 1:20sudo tc filter add dev eth0 protocol ip parent 1:0 prio 2 u32 match ip dport 443 0xffff flowid 1:20

注意:实际生产环境中,建议结合 iptables 打标记(mark)再用 tc 匹配,更灵活可靠。

步骤六:验证配置

使用以下命令查看当前QoS规则:

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

持久化配置

上述配置在重启后会丢失。为使其永久生效,可将命令写入启动脚本:

sudo tee /etc/systemd/system/qos-setup.service << 'EOF'[Unit]Description=Setup QoS on bootAfter=network.target[Service]Type=oneshotExecStart=/bin/bash /usr/local/bin/setup-qos.shRemainAfterExit=yes[Install]WantedBy=multi-user.targetEOF# 创建脚本文件sudo tee /usr/local/bin/setup-qos.sh << 'EOF'#!/bin/bashIFACE="eth0"# 清除旧规则tc qdisc del dev $IFACE root 2>/dev/null# 设置新规则tc qdisc add dev $IFACE root handle 1: htb default 30tc class add dev $IFACE parent 1: classid 1:10 htb rate 30mbit ceil 100mbit prio 1tc class add dev $IFACE parent 1: classid 1:20 htb rate 50mbit ceil 100mbit prio 2tc class add dev $IFACE parent 1: classid 1:30 htb rate 1mbit ceil 100mbit prio 3tc filter add dev $IFACE protocol ip parent 1:0 prio 1 u32 match ip dport 5060 0xffff flowid 1:10tc filter add dev $IFACE protocol ip parent 1:0 prio 1 u32 match ip sport 5060 0xffff flowid 1:10tc filter add dev $IFACE protocol ip parent 1:0 prio 1 u32 match ip dport 10000 0xc000 flowid 1:10tc filter add dev $IFACE protocol ip parent 1:0 prio 2 u32 match ip dport 80 0xffff flowid 1:20tc filter add dev $IFACE protocol ip parent 1:0 prio 2 u32 match ip dport 443 0xffff flowid 1:20EOF# 赋予执行权限sudo chmod +x /usr/local/bin/setup-qos.sh# 启用服务sudo systemctl enable --now qos-setup.service

总结

通过本教程,你已经掌握了在RockyLinux中配置网络服务质量(QoS)的基本方法。利用 tc 和 HTB,你可以有效实现RockyLinux流量控制网络带宽管理,确保关键业务流畅运行。

记住,QoS配置需要根据实际网络环境调整参数。建议在测试环境中充分验证后再部署到生产系统。

如果你觉得这篇QoS配置教程对你有帮助,欢迎收藏并分享给其他RockyLinux用户!