首頁 > 軟體

怎樣在 Linux 中限制網路頻寬使用

2020-06-16 18:03:16

假如你經常在 Linux 桌面上執行多個網路應用,或在家中讓多台電腦共用頻寬;那麼你可能想更好地控制頻寬的使用。否則,當你使用下載器下載一個大檔案時,互動式 SSH 對談可能會變得緩慢以至不可用;或者當你通過 Dropbox 來同步一個大資料夾時,你的室友可能會抱怨在她的電腦上,視訊流變得斷斷續續。

在本教學中,我將為你描述兩種在 Linux 中限制網路流量速率的不同方法。

 

在 Linux 中限制一個應用的速率

限制網路流量速率的一種方法是通過一個名為trickle的命令列工具。通過在程式執行時,預先載入一個速率限制 socket 庫 的方法,trickle 命令允許你改變任意一個特定程式的流量。 trickle 命令有一個很好的特性是它僅在使用者空間中執行,這意味著,你不必需要 root 許可權就可以限制一個程式的頻寬使用。要能使用 trickle 程式控制程式的頻寬,這個程式就必須使用非靜態連結庫的通訊端介面。當你想對一個不具有內建頻寬控制功能的程式進行速率限制時,trickle 可以幫得上忙。

Ubuntu,Debian 及其衍生發行版中安裝 trickle :

  1. $ sudo apt-get install trickle

在 Fdora 或 CentOS/RHEL (帶有 EPEL 軟體倉庫):

  1. $ sudo yum install trickle

trickle 的基本使用方法如下。僅需簡單地把 trickle 命令(及速率引數)放在你想執行的命令之前。

  1. $ trickle -d <download-rate>-u <upload-rate><command>

這就可以將 <command> 的下載和上傳速率限定為特定值(單位 KBytes/s)。

例如,將你的 scp 對談的最大上傳頻寬設定為 100 KB/s:

  1. $ trickle -u 100 scp backup.tgz alice@remote_host.com:

如若你想,你可以通過建立一個自定義啟動器的方式,使用下面的命令為你的 Firefox 瀏覽器設定最大下載速率(例如, 300 KB/s)。

  1. trickle -d 300 firefox %u

最後, trickle 也可以以守護行程模式執行,在該模式下,它將會限制所有通過 trickle 啟動且正在執行的程式的總頻寬之和。 啟動 trickle 使其作為一個守護行程(例如, trickled):

  1. $ sudo trickled -d 1000

一旦 trickled 守護行程在後台執行,你便可以通過 trickle 命令來啟動其他程式。假如你通過 trickle 啟動一個程式,那麼這個程式的最大下載速率將是 1000 KB/s, 假如你再通過 trickle 啟動了另一個程式,則每個程式的(下載)速率極限將會被限制為 500 KB/s,等等。

 

在 Linux 中限制一個網路介面的速率

另一種控制你的頻寬資源的方式是在每一個介面上限制頻寬。這在你與其他人分享你的網路連線的上行頻寬時尤為實用。同其他一樣,Linux 有一個工具來為你做這件事。wondershaper就是幹這個的。

wondershaper 實際上是一個 shell 指令碼,它使用 tc 來定義流量調整命令,使用 QoS 來處理特定的網路介面。外發流量通過放在不同優先順序的佇列中,達到限制傳出流量速率的目的;而傳入流量通過丟包的方式來達到速率限制的目的。

事實上, wondershaper 的既定目標不僅僅是對一個介面增加其頻寬上限;當批次下載或上傳正在進行時,wondershaper 還試圖去保持互動性對談如 SSH 的低延遲。同樣的,它還會控制批次上傳(例如, Dropbox 的同步)不會使得下載“窒息”,反之亦然。

在 Ubuntu Debian 及其衍生發行版中安裝 wondershaper:

  1. $ sudo apt-get install wondershaper

在 Fdora 或 CentOS/RHEL (帶有 EPEL 軟體倉庫) 中安裝 wondershaper:

  1. $ sudo yum install wondershaper

wondershaper 的基本使用如下:

  1. $ sudo wondershaper <interface><download-rate><upload-rate>

舉個例子, 將 eth0 的最大下載/上傳頻寬分別設定為 1000Kbit/s 和 500Kbit/s:

  1. $ sudo wondershaper eth0 1000500

你也可以通過執行下面的命令將速率限制進行消除:

  1. $ sudo wondershaper clear eth0

假如你對 wondershaper 的執行原理感興趣,你可以閱讀其 shell 指令碼原始檔(/sbin/wondershaper)。

 

總結

在本教學中,我介紹了兩種不同的方法,來達到如何在 Linux 桌面環境中,控制每個應用或每個介面的頻寬使用的目的。 這些工具的使用都很簡單,都為使用者提供了一個快速且容易的方式來調整或限制流量。 對於那些想更多地了解如何在 Linux 中進行速率控制的讀者,請參考 the Linux bible.

本文永久更新連結地址http://www.linuxidc.com/Linux/2015-03/115538.htm


IT145.com E-mail:sddin#qq.com