如何在 Linux 中限製網絡帶寬


在 Linux 上,您可能需要限製網絡帶寬。 了解如何使用兩個簡單的程序在 Linux 中限制全局和特定於應用程序的網絡帶寬:wondershaper 和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]

查找網絡接口名稱

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

ip addr show

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

sudo apt install net-tools
ifconfig

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

ip add show 的示例輸出

您還可以將您的 Wi-Fi 接口列為: wlan0 或類似的。

測試塑形者

一旦您知道網絡接口名稱,您就可以測試 Wondershaper。例如,將帶寬限制設置為 6 MB/秒下載, 什麼時候 1 MB/秒上傳 在以太網接口上 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 加載程序預加載應用程序,通過套接字向應用程序添加新版本的數據傳輸功能,並通過延遲通過套接字發送和接收數據來限制流量。 不像Wondershaper,涓涓細流 無需root權限,所以你不需要使用 sudo 當你運行它時。

安裝涓涓細流

涓流可用於大多數 Linux 發行版。 在 Ubuntu 上,您可以通過以下方式安裝它:

sudo apt install trickle

如何使用涓涓細流

查看所有可用選項和有關如何使用它們的幫助。

trickle -h

涓涓幫助信息

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

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

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

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 秒)最適合交互式應用程序,而稍大的值(1 – 10 秒)更適合需要批量傳輸的應用程序。

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/s。

具有涓流限制的 wget

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

Trickle 還可以配置為具有全局永久網絡帶寬限制,例如針對所有應用程序或特定應用程序。這是通過涓流守護進程完成的。

檢查該選項 -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 到每個命令。我有 3 行這樣的 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 中限制互聯網流量的技巧。如果您想減少更新頻率並訪問快速且廉價的互聯網連接,我們建議禁用自動系統更新。

在 Ubuntu 中,您可以通過啟用“計量連接”來做到這一點。

設置 -> 網絡 -> 有線/Wi-Fi 連接設置 -> 高級 -> 啟用計量連接

在 Ubuntu 中啟用計量連接的選項

如果您需要更新系統,可以通過 Update Manager 或命令行手動進行。

結論是

我會盡力提供 簡單明了的說明 我不會詳細介紹如何使用 Wondershaper 和 Trickle 在 Linux 中限製網絡帶寬。我們希望這些步驟可以幫助您配置 Linux 帶寬。 它可以節省你的後腿.

想知道更多? 技術資料 閱讀涓流 涓涓技術論文有關 Wondershaper 的更多信息,請訪問: Wondershaper GitHub 頁面.

還有一個選項可以使用 tc 命令和 iptables 配置流量整形。但是,這是本網站不會涵蓋的更高級的主題之一。但是,您可以學習如何 tc 從配置 Arch Linux 維基.

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