在Linux中使用Wondershaper限制網(wǎng)絡(luò)帶寬
以下內(nèi)容將向你介紹如何輕松對網(wǎng)絡(luò)帶寬做出限制,并在類 Unix 操作系統(tǒng)中對網(wǎng)絡(luò)流量進(jìn)行優(yōu)化。通過限制網(wǎng)絡(luò)帶寬,可以節(jié)省應(yīng)用程序不必要的帶寬消耗,包括軟件包管理器(pacman、yum、apt)、web 瀏覽器、torrent 客戶端、下載管理器等,并防止單個(gè)或多個(gè)用戶濫用網(wǎng)絡(luò)帶寬。在本文當(dāng)中,將會介紹 Wondershaper 這一個(gè)實(shí)用的命令行程序,這是我認(rèn)為限制 Linux 系統(tǒng) Internet 或本地網(wǎng)絡(luò)帶寬的最簡單、最快捷的方式之一。
請注意,Wondershaper 只能限制本地網(wǎng)絡(luò)接口的傳入和傳出流量,而不能限制路由器或調(diào)制解調(diào)器的接口。換句話說,Wondershaper 只會限制本地系統(tǒng)本身的網(wǎng)絡(luò)帶寬,而不會限制網(wǎng)絡(luò)中的其它系統(tǒng)。因此 Wondershaper 主要用于限制本地系統(tǒng)中一個(gè)或多個(gè)網(wǎng)卡的帶寬。
下面來看一下 Wondershaper 是如何優(yōu)化網(wǎng)絡(luò)流量的。
在 Linux 中使用 Wondershaper 限制網(wǎng)絡(luò)帶寬
wondershaper
是用于顯示系統(tǒng)網(wǎng)卡網(wǎng)絡(luò)帶寬的簡單腳本。它使用了 iproute 的 tc
命令,但大大簡化了操作過程。
安裝 Wondershaper
使用 git clone
克隆 Wondershaper 的版本庫就可以安裝***版本:
$ git clone https://github.com/magnific0/wondershaper.git
按照以下命令進(jìn)入 wondershaper
目錄并安裝:
$ cd wondershaper
$ sudo make install
然后執(zhí)行以下命令,可以讓 wondershaper
在每次系統(tǒng)啟動時(shí)都自動開始服務(wù):
$ sudo systemctl enable wondershaper.service
$ sudo systemctl start wondershaper.service
如果你不強(qiáng)求安裝***版本,也可以使用軟件包管理器(官方和非官方均可)來進(jìn)行安裝。
wondershaper
在 Arch 用戶軟件倉庫(Arch User Repository,AUR)中可用,所以可以使用類似 yay 這些 AUR 輔助軟件在基于 Arch 的系統(tǒng)中安裝 wondershaper
。
$ yay -S wondershaper-git
對于 Debian、Ubuntu 和 Linux Mint 可以使用以下命令安裝:
$ sudo apt-get install wondershaper
對于 Fedora 可以使用以下命令安裝:
$ sudo dnf install wondershaper
對于 RHEL、CentOS,只需要啟用 EPEL 倉庫,就可以使用以下命令安裝:
$ sudo yum install epel-release
$ sudo yum install wondershaper
在每次系統(tǒng)啟動時(shí)都自動啟動 wondershaper
服務(wù)。
$ sudo systemctl enable wondershaper.service
$ sudo systemctl start wondershaper.service
用法
首先需要找到網(wǎng)絡(luò)接口的名稱,通過以下幾個(gè)命令都可以查詢到網(wǎng)卡的詳細(xì)信息:
$ ip addr
$ route
$ ifconfig
在確定網(wǎng)卡名稱以后,就可以按照以下的命令限制網(wǎng)絡(luò)帶寬:
$ sudo wondershaper -a <adapter> -d <rate> -u <rate>
例如,如果網(wǎng)卡名稱是 enp0s8
,并且需要把上行、下行速率分別限制為 1024 Kbps 和 512 Kbps,就可以執(zhí)行以下命令:
$ sudo wondershaper -a enp0s8 -d 1024 -u 512
其中參數(shù)的含義是:
-a
:網(wǎng)卡名稱-d
:下行帶寬-u
:上行帶寬
如果要對網(wǎng)卡解除網(wǎng)絡(luò)帶寬的限制,只需要執(zhí)行:
$ sudo wondershaper -c -a enp0s8
或者:
$ sudo wondershaper -c enp0s8
如果系統(tǒng)中有多個(gè)網(wǎng)卡,為確保穩(wěn)妥,需要按照上面的方法手動設(shè)置每個(gè)網(wǎng)卡的上行、下行速率。
如果你是通過 git clone
克隆 GitHub 版本庫的方式安裝 Wondershaper,那么在 /etc/conf.d/
目錄中會存在一個(gè)名為 wondershaper.conf
的配置文件,修改這個(gè)配置文件中的相應(yīng)值(包括網(wǎng)卡名稱、上行速率、下行速率),也可以設(shè)置上行或下行速率。
$ sudo nano /etc/conf.d/wondershaper.conf
[wondershaper]
# Adapter
#
IFACE="eth0"
# Download rate in Kbps
#
DSPEED="2048"
# Upload rate in Kbps
#
USPEED="512"
Wondershaper 使用前:
Wondershaper 使用后:
可以看到,使用 Wondershaper 限制網(wǎng)絡(luò)帶寬之后,下行速率與限制之前相比已經(jīng)大幅下降。
執(zhí)行以下命令可以查看更多相關(guān)信息。
$ wondershaper -h
也可以查看 Wondershaper 的用戶手冊:
$ man wondershaper
根據(jù)測試,Wondershaper 按照上面的方式可以有很好的效果。你可以試用一下,然后發(fā)表你的看法。