在 Linux 上,您可能需要限製網絡帶寬。了解如何使用兩個簡單的程序在 Linux 上限制全局和特定於應用程序的網絡帶寬:Wonder Shaper 和 Trickle。

內容

為什麼要限製網絡帶寬?

您需要在 Linux 上限製網絡帶寬有幾個原因。

我們的一位訂閱者說 互聯網數據價格 他住在高處,希望限製網絡帶寬以減少互聯網支出。作為前 Windows 用戶,他為此運行 Netlimiter。他目前正在尋找 Linux 上 Netlimiter 的替代方案。

流量限制在以下情況下也很有用: 減緩..應用程序競爭流量。為特定應用程序設置流量限制有助於您優先考慮如何使用流量。

在另一種情況下,服務器管理員應將出站流量限制為: 服務器不會宕機 因為高峰時段的活動是活躍的。

在本文中,您將學習如何做到這一點 限製網絡帶寬 對於 Linux 全世界 什麼時候 特定應用 那裡有兩個 什麼時候 方便使用的 應用..

使用 Wondershaper 限制每個網絡接口的帶寬

奇蹟製造者 一個簡單的命令行實用程序,用於限制 Linux 上的網絡帶寬。 您可以對其進行配置以限制 Linux 機器上每個網絡接口的下載和上傳速度。讓我們來看看。

安裝 Wondershaper

安裝 Wondershaper Linux 包管理器..這是一個開源應用程序,應該適用於所有 Linux 發行版。這是我推薦的安裝。 在 Ubuntu 和其他基於 Debian 的發行版上,您可以運行以下命令:

sudo apt install wondershaper

如果你想 最新版本 您可以從 Wondershaper 下載它。 GitHub

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

希望這個安裝不會工作。 安裝 Wondershaper 不如使用發行版提供的版本可靠。我已經在 Ubuntu 20.04.3 上測試了這個安裝,它工作正常。但是,如果您對 Github 版本有疑問, 除了它wondershaper git克隆目錄:

sudo make uninstall

如果您決定保留 Wondershaper 的 GitHub 版本,與發行版中包含的版本不同, 不要更新自己 當新版本發佈時。您需要手動更新它。你可以輸入 wondershaper 文件夾, 從 GitHub 拉取更新並重新安裝:

cd wondershaper
git pull 
sudo make install

如果您是 Linux 的完全初學者,我們建議您學習 Linux命令行基礎..

學習 Wondershaper 的語法

取決於版本 wondershaper, 配置語法可能不同。你可以使用它 man 命令:

man wondershaper

您將獲得類似於以下內容的輸出:

就我而言,這是一系列界面、下載和上傳速度限制。

wondershaper [ interface ] [ downlink ] [ uplink ]

在較新的版本中,您需要指定選項名稱。

wondershaper -a [interface] -d [downlink] -u [uplink]

檢查網絡接口名稱

現在您知道 Wonder Shaper 的語法,您可以通過簡單地查找網絡接口名稱來限制語法。在大多數現代 Linux 系統上,您可以使用以下命令列出可用的網絡接口。

ip addr show

但是,一些較舊的系統可能需要運行 ifconfignet-tools

sudo apt install net-tools
ifconfig

我的系統只有一個以太網接口 enp0s3

ipaddshow 的輸出示例

您還可以列出 Wi-Fi 接口,如下所示: wlan0 或類似的。

測試奇蹟塑造者

一旦您知道網絡接口名稱,您就可以測試您的 Wonder shaper。例如,讓我們將帶寬限制設置為 6MB/秒下載, 什麼時候 1MB/秒上傳 在以太網接口上 enp0s3

sudo wondershaper enp0s3 6144 1024

現在您可以測試您的網速以查看是否應用了這些設置 極速網絡..以下是您通過這些設置獲得的結果:

限速測試結果示例

如果您清除所有限制:

sudo wondershaper clear enp0s3

如果您再次測試您的互聯網速度,您將獲得以下值:

去除帶寬限制的速度測試結果

如果您同時擁有 Wi-Fi 連接和以太網連接,請務必設置限制並測試相同的接口。

繼續運行Wondershaper

上面測試的設置僅在您重新啟動 Linux 系統之前有效。要永久應用限制,您需要創建 系統 Wondershaper 配置和服務文件。

打開 配置、設置 文檔:

sudo nano /etc/systemd/wondershaper.conf

將以下內容粘貼到界面和限制設置中。

[wondershaper]

# Adapter
IFACE="enp0s3"

# Download rate in Kbps
DSPEED="6144"

# Upload rate in Kbps
USPEED="1024"

然後創建 服務 文檔:

sudo nano /etc/systemd/system/wondershaper.service

內容如下所述。

[Unit]
Description=Bandwidth shaper/Network rate limiter
After=network-online.target
Wants=network.target

[Service]
Type=oneshot
RemainAfterExit=yes
EnvironmentFile=/etc/systemd/wondershaper.conf
ExecStart=/usr/sbin/wondershaper $IFACE $DSPEED $USPEED
ExecStop=/usr/sbin/wondershaper clear $IFACE

[Install]
WantedBy=multi-user.target

請注意,如果 Wondershaper 使用選項名稱,您將需要對其進行編輯。 ExecStart 什麼時候 ExecStop 線:

ExecStart=/usr/sbin/wondershaper -a $IFACE -d $DSPEED -u $USPEED
ExecStop=/usr/sbin/wondershaper -c -a $IFACE

供參考,如果你不熟悉 nano 在編輯器中,按 Ctrl + O 保存更改,按 Ctrl + X 退出。

然後激活 Wondershaper 並連續運行它。

sudo systemctl enable --now wondershaper.service

Wondershaper 現在即使在重新啟動系統後也會限制 Linux 網絡帶寬。

如果你想 禁用 Wondershaper 的連續執行。 嵌入:

sudo systemctl disable --now wondershaper.service

使用涓流限制每個應用程序的帶寬

涓涓細流 是一種輕量級帶寬整形器,可用於設置每個應用程序的數據限制。 使用 Unix 加載程序預加載通過套接字向應用程序添加新版本的數據傳輸功能,並通過延遲通過套接字發送和接收數據來抑制流量。與 Wonder Shaper 不同,Trickle 無需root權限無需使用 sudo 當你這樣做的時候。

安裝涓流

Trickle 在大多數 Linux 發行版上都可用。 在 Ubuntu 上,您可以使用以下命令安裝它:

sudo apt install trickle

如何使用涓涓細流

獲取有關所有可用選項以及如何使用它們的幫助。

trickle -h

涓流幫助信息

大多數情況下,您只需要設置下載/上傳限制和應用名稱即可。

trickle -d [ download speed ] -u [ upload speed ] [ application/command ]

這是一個例子 下載限制為 6MB/秒, 什麼時候 1MB/秒上傳 存在 火狐

trickle -d 6144 -u 1024 firefox

如果您只想限制其中之一,您可以分別設置下載速率和上傳速率。

trickle -d 6144 firefox

您還可以限制 Linux 命令的網絡帶寬。例如,您可能希望限制 wget 下載速度:

trickle -d 512 wget https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso

你也可以開始 bash 具有所有命令帶寬限制的 Shell:

trickle -d 6144 -u 1024 bash

要重置帶寬限制,請按如下方式關閉此 bash: exit 命令或 Ctrl + Q。

您還可以向涓流命令添加一些高級設置。 您可以使用 man 命令閱讀每個選項的詳細說明。

man trickle

例如,在這裡您可以看到平滑時間選項的功能。

平滑時間決定了 Trickle 嘗試允許應用程序發送和接收數據的時間間隔。減小該值會使會話更加連續(平滑),而增大該值會導致發送和接收數據的突發。較小的值(0.1 – 1 s)非常適合交互式應用,而稍大的值(1 – 10 s)則適合需要批量傳輸的應用。

使用 rsync 涓涓細流

使用帶有 rsync 的涓流通過 ssh 複製文件有一個小區別。如果你只是把涓涓細流放在 rsync 前面,它是行不通的,因為 rsync 分叉了 ssh 進程。因此,ssh 運行沒有涓流限制。要使用涓流限制調用 rsync,請執行以下操作:

rsync --rsh="trickle -d 6144 -u 1024 ssh" SORCE DESTINATION

測試涓涓細流

您可以像測試 Wondershaper 一樣測試涓涓細流 極速網絡.. 設置 Firefox 下載限制並添加一個小的平滑值,因為它是一個交互式應用程序。

trickle -d 6144 -u 1024 -t 0.1 firefox

通過這些設置,獲得了以下網絡速度:

Firefox 有涓流限制

您還可以測試涓涓細流 wget

trickle -d 512 wget https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso

可以看到速度限制在 547KB/秒。

涓流限制 wget

永久應用特定於應用程序的限制

涓流也可以配置為具有持久的網絡帶寬限制。它可以是全局的,包括所有應用程序和特定於應用程序的。這是通過涓流守護進程完成的。

檢查該選項 -hman

一些有用的信息

您可以為使用涓流啟動的所有應用程序設置默認帶寬限制。

trickled -d 6144 -u 1024 -s

您現在開始使用的所有應用程序 trickle application 有了這些限制,您無需指定最大上傳和下載速率。使用此命令可在重新啟動後保持這些選項持續存在 ~/.bashrc/etc/profile 如果要為所有用戶啟用這些設置。

要設置每個應用程序如何共享這些限制,您需要將它們添加到 trickled.conf 文檔。打開配置文件。

sudo nano /etc/trickled.conf

按以下格式添加每個應用程序:

[service]
Priority = <value>
Time-Smoothing = <value>
Length-Smoothing = <value>

我們看到了 時間平滑 以上參數。目標 平滑長度 相同,但唯一的區別是它是在 KB 中定義的。這是平滑時間選項的後備。

這個 優先 這些參數定義瞭如何跨應用程序對流量進行優先級排序。較小的值賦予較高的優先級,因此值較低的應用程序比值較高的應用程序獲得更多的帶寬。

這是一個真實的例子 trickled.conf 該文件如下所示:

[www]
Priority = 1
Time-Smoothing = 1

[ssh]
Priority = 2
Time-Smoothing = 0.1
Length-Smoothing = 2

[ftp]
Priority = 8
Time-Smoothing = 5
Length-Smoothing = 10

為圖形應用程序創建涓流啟動器

trickle application 可能不是終端中最有用的圖形應用程序。幸運的是,您還可以選擇添加 trickle 對於圖形啟動器。

打開啟動器配置文件。

sudo nano /usr/share/applications/application.desktop

例如,要編輯 Firefox 啟動器,請製作備份副本並打開並編輯原始文件。

sudo cp /usr/share/applications/firefox.desktop /usr/share/applications/firefox.desktop.backup
sudo nano /usr/share/applications/firefox.desktop

找到以開頭的行 Exec= 添加和編輯 trickle 對於每個命令。有這樣的三行 firefox.desktop

Exec=trickle -d 6144 -u 1024 firefox %u
...
Exec=trickle -d 6144 -u 1024 firefox -new-window
...
Exec=trickle -d 6144 -u 1024 firefox -private-window

火狐啟動器配置文件

現在,每次單擊菜單中的啟動器時,Firefox 都會使用修改後的命令和有限的網絡帶寬啟動。

如果要刪除這些限制,請還原備份副本。

sudo cp /usr/share/applications/firefox.desktop.backup /usr/share/applications/firefox.desktop

某些應用程序可能不會 application.desktop 文件 /usr/share/applications/..這適用於 AppImages、snap 和 flatpak 應用程序。 您可以按照有關如何在 Linux 上創建自定義啟動器的教程輕鬆創建這些自定義啟動器。

禁用自動更新

我想與您分享一些關於如何在 Linux 上限制 Internet 流量的技巧。我們建議禁用自動系統更新,以降低更新頻率並讓您訪問更快、更便宜的互聯網連接。

在 Ubuntu 上,您可以通過啟用“即用即付”來做到這一點。

[設定]->[ネットワーク]->[有線/Wi-Fi接続設定]->[詳細]->[従量制接続を有効にする]

在 Ubuntu 上啟用即用即付連接的選項

如果您需要更新系統,可以從更新管理器或命令行手動進行。

結論是

我會盡力提供 簡單明了的說明 如何在沒有任何技術細節的情況下使用 Wondershaper 和 Trickle 來限制 Linux 網絡帶寬。我們希望這些步驟將幫助您配置 Linux 帶寬。 它為您節省了一些後腿..

如果您想了解更多 技術資料 閱讀涓流 涓流技術論文有關 .Wondershaper 的更多信息,請訪問: Wondershaper GitHub 頁面..

我有另一種選擇 tc 用命令 iptables 流量整形配置是本網站未涵蓋的高級主題之一。但你可以學習如何 tc 從設置 Arch Linux 維基..

如果 你知道更多用戶友好的工具 這有助於限制 Linux 網絡帶寬。請在下面的評論中分享。