之前有一台服务器,说是给了2.5Gbps的带宽但不能长时间占满,如果要长时间占满的话上传需要限速到200Mbps。好吧这么一说恐怕很多人都知道这是哪家的服务器了。不过今天的重点是,如果要这么限速的话,该怎么做?网上去搜索的话一般都会告诉你用tc配合iptables等等高级操作,一看配置实在是麻烦的很,且不说我们根本不需要那么精细的设置。那有没有更简单的办法?所以今天我给大家推荐这个叫做WonderShaper的玩意来简简单单的限制服务器带宽速度。

首先先简单的说明一下WonderShaper的原理。根据官方介绍来看其实他只是个脚本,实际上原理还是iproutetc命令来对速率进行控制。更准确的说WonderShaper其实是个流量整形脚本。

下面我来介绍一下如何使用这个脚本来对服务器进行限速。

首先,我们可以先打开WonderShaperGithub地址来下载最新的源码包进行编译。这里需要说明的是,虽然在yum或者apt中是可以安装WonderShaper的,但由于aptyum中的版本过于古老,所以我们建议使用源码包进行编译安装。

Github地址:https://github.com/magnific0/wondershaper

1. 安装前准备

由于编译我们需要安装make以及git,所以我们要先确认系统中已经安装了makegit

apt install make -y
apt install git -y

2. 开始安装

git clone https://github.com/magnific0/wondershaper.git && cd wondershaper && make install

3. 开始设置

在这里我们得先知道我们的网卡名称是什么,使用以下命令查看后,得知我们的网卡名称是eth0

ifconfig

然而我们使用编译安装的方式安装了之后,是不会在sbin下建立软链的,所以为了方便后续,我们先为它建个软链。

ln -s /usr/bin/wondershaper /sbin/wondershaper

接下来我们就能够按照官方给的文档来进行限速了。比如我要限制网卡eth0上传下载均为100Mbps

wondershaper -a eth0 -d 102400 -u 102400

这里的102400是怎么算的呢,因为这个脚本的速度单位是Kbps,100Mbps等于102400Kbps,以此类推。以上命令是同时限制上传与下载,如果我们想要只限制上传或者只限制下载的话可以参考以下设置。

限制网卡eth0上传为100Mbps:

wondershaper -a eth0 -u 102400

限制网卡eth0下载为100Mbps:

wondershaper -a eth0 -d 102400

如果感觉刚刚的设置不太行,需要调整,要先用以下命令清除刚刚的设置。

清除对网卡eth0的限制:

wondershaper -c -a eth0

这时候我们设置好了之后,可以用speedtest来试试效果如何,在使用前我们得先装好python。这里我就不写要怎么装python了。

wget https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py && python speedtest.py

4. 开机自动启动限速

由于Ubuntu16Debian8开始使用了Systemd,而WonderShaper在编译安装的时候已经写好了针对Systemd的配置文件。所以我们只需要对他自带的配置文件稍作设置就行。

首先我们打开这个配置文件:

vim /etc/conf.d/wondershaper.conf

比如我要限制网卡eth0上传下载均为100Mbps,我们就这么设置:

[wondershaper]
# Adapter
#
IFACE="eth0"

# Download rate in Kbps
#
DSPEED="102400"

# Upload rate in Kbps
#
USPEED="102400"

修改完毕之后 !wq 进行保存。

之后我们使用以下命令启用WonderShaper并启用自启动。

systemctl start wondershaper
systemctl enable wondershaper

之后就可以试试重启以下再跑跑测速脚本看看是否正常。

最后我们一起来看一下官方给出的用法

   wondershaper [-hcs] [-a <adapter>] [-d <rate>] [-u <rate>]

命令行参数解释:

-h 显示帮助信息

-a <网卡> 设置限制的网卡

-d <速率> 设置最大下载速率 (单位为Kbps)

-u <速率> 设置最大上传速率 (单位为Kbps)

-p 使用/etc/conf.d/wondershaper.conf中的设置作为默认设置

-c 清除对网卡的限速设置

-s 显示网卡的当前状态
一些不同的模式使用方法:

wondershaper -a <网卡> -d <速率> -u <速率>

wondershaper -c -a <网卡>

wondershaper -s -a <网卡>

以上教程再debian11测试成功,debian10的官方源有问题,需要降级到buster或者oldstable,推荐升级至Debian 11解决此问题。

sudo apt reinstall libcurl3-gnutls/buster


Last modification:December 24, 2021
如果觉得我的文章对你有用,请随意赞赏