在管理和维护 CentOS 服务器的过程中,有时我们需要对网卡的速率进行限制,这可能是为了模拟特定的网络环境进行测试、遵守服务商的带宽政策,或是为了进行服务质量控制,防止单个应用占用过多带宽,本文将详细介绍在 CentOS 系统中限制网卡速度的两种主流方法,并解释如何使这些配置永久生效。
使用 ethtool
命令
ethtool
是一个强大且常用的工具,用于查询和配置以太网网卡驱动程序和硬件设置,它可以直接修改网卡的连接速率和双工模式,这是最直接的限制方式。
我们需要查看当前网卡的配置信息,以确定网卡名称(如 eth0
, ens33
等)和当前支持的速率,可以使用以下命令:
ethtool eth0
在输出信息中,Speed:
字段显示了当前的连接速度,Supported link modes:
字段则列出了网卡支持的所有速率和双工模式。
假设我们希望将名为 eth0
的网卡速度强制限制在 100Mbps,并设置为半双工模式,可以执行以下命令:
sudo ethtool -s eth0 speed 100 duplex half autoneg off
speed 100
: 设置速度为 100Mbps。duplex half
: 设置双工模式为半双工。autoneg off
: 关闭自动协商,强制使用我们设定的参数。
重要提示:使用 ethtool
命令所做的修改是临时的,服务器重启或网络服务重启后,配置会恢复为默认值。
使用 wondershaper
进行流量整形
与 ethtool
直接修改物理链路速度不同,wondershaper
是一个基于 Linux 内核流量控制(tc
)工具的脚本,它可以在应用层面对上传和下载的实际吞吐量进行限制,这种方法更加灵活,因为它不依赖于网卡的物理能力,可以在任何支持的速率上进行限制。
需要安装 wondershaper
,它通常包含在 EPEL (Extra Packages for Enterprise Linux) 仓库中:
sudo yum install epel-release sudo yum install wondershaper
安装完成后,使用起来非常简单,要将 eth0
网卡的下载速度限制为 2Mbps,上传速度限制为 1Mbps,可以执行:
sudo wondershaper eth0 2048 1024
注意,速率单位是 kbps,2Mbps 对应 2048kbps。
要移除所有限制,恢复网卡到原始状态,只需运行:
sudo wondershaper clear eth0
同样,wondershaper
的默认设置也是临时的。
如何使配置永久生效
无论是 ethtool
还是 wondershaper
,若要使其配置在重启后依然有效,需要将其集成到系统的启动流程中。
永久化 ethtool
设置
在 CentOS 7 及以上版本,可以通过修改网络接口配置文件来实现,编辑 /etc/sysconfig/network-scripts/ifcfg-<interface_name>
文件(ifcfg-eth0
),在其中添加以下一行:
ETHTOOL_OPTS="speed 100 duplex half autoneg off"
保存文件后,重启网络服务或重启服务器即可使配置生效。
sudo systemctl restart network
永久化 wondershaper
设置
推荐为 wondershaper
创建一个 systemd
服务,创建一个服务文件:
sudo vi /etc/systemd/system/wondershaper.service
粘贴到文件中(请根据实际情况修改 eth0
和速率值):
[Unit] Description=Wondershaper Service After=network.target [Service] Type=oneshot ExecStart=/usr/sbin/wondershaper eth0 2048 1024 ExecStop=/usr/sbin/wondershaper clear eth0 RemainAfterExit=yes [Install] WantedBy=multi-user.target
保存后,启用并启动该服务:
sudo systemctl enable wondershaper.service sudo systemctl start wondershaper.service
两种方法的对比
特性 | ethtool | wondershaper |
---|---|---|
作用层级 | 物理链路层(驱动/硬件) | 应用层(流量整形) |
限制方式 | 强制连接速率/双工模式 | 限制实际数据吞吐量 |
优点 | 简单直接,与硬件强相关 | 灵活,可精确控制上下行速率 |
缺点 | 速率受硬件支持限制,不够灵活 | 依赖内核的 tc 模块,有轻微性能开销 |
适用场景 | 兼容性测试,强制降速 | QoS 控制,模拟慢速网络,带宽分配 |
选择哪种方法取决于您的具体需求,如果需要强制物理链路速度以测试硬件兼容性,ethtool
是最佳选择,如果需要精确控制应用程序的实际带宽使用,wondershaper
则更为合适。
相关问答 (FAQs)
问1:使用 ethtool
限制网卡速度和使用 wondershaper
限制带宽有什么本质区别?
答: 最本质的区别在于作用层级。ethtool
是在物理层和数据链路层工作,它通过与网卡驱动程序交互,直接修改网卡的物理连接速率(如 10/100/1000Mbps)和双工模式,这种限制是“硬”限制,整个网卡的连接速度都被改变了,而 wondershaper
则在网络层和传输层之上工作,它利用 Linux 内核的流量控制机制,像一个“交通警察”一样对数据包进行排队和调度,从而限制实际的数据传输速率(吞吐量),但网卡的物理连接速度可能仍然是 1Gbps。
问2:如果我使用 ethtool -s
命令设置了一个我的网卡硬件不支持的速度(在百兆网卡上设置 1000Mbps),会发生什么?
答: 命令执行时通常会报错,或者 ethtool
会尝试设置但最终失败,网卡会回退到之前的默认状态或自动协商的结果,在设置之前,最好先用 ethtool <interface_name>
命令查看 Supported link modes:
字段,确认你的网卡硬件确实支持你想要设置的速度和双工模式,否则设置将无法生效。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复