如何限制 Ubuntu 伺服器 20.04 上的連結速度

如何限制 Ubuntu 伺服器 20.04 上的連結速度

作業系統:Ubuntu 20.04 伺服器 - Virtualbox 介面:enp0s3

我一直在尋找一種解決方案,將鏈路速度限制為 10Mb/s、半雙工並停用自動協商。正如我在 [link][1] 指南中看到的那樣,但它不起作用。當我執行 networkctl status enp0s3 時,它只顯示自動協商開啟、速度 1G 和雙工已滿。即使它顯示它正在從我的文件中獲取配置,這也永遠不會改變。然後我發現了 systemctl status systemd-udevd 命令來獲取有關該問題的更多信息,並發現了此錯誤:

我需要在 /etc/systemd/network/ 內建立一個名為 10-mb.link 的檔案來套用以下設定:

[MATCH]

MACAddress=ex:am:pl:e0:ma:c1

[LINK]

BitsPerSecond=10M

Duplex=Half

我遵循了這些說明:[1]:https://manpages.ubuntu.com/manpages/focal/man5/systemd.link.5.html和[2]:https://linuxiac.com/how-to-manipulate-ethernet-card-on-linux-with-ethtool-command/

但沒有一個起作用,我不知道我還能嘗試什麼,我的測試系統沒有 NetworkManager (我讀到它可能會導致問題,但它甚至沒有安裝)

另外,在實體設備上,我已經能夠設定上面所說的配置,但是一旦我們啟動,它們就會丟失已配置的內容。我使用以下命令完成了此操作:“ethtool -s enp2s0 speed 10 duplex half autoneg on”,但它在虛擬機上不起作用,我的系統在啟動後就會忘記它,所以我的問題是,我怎樣才能做到這一點改變永久?

答案1

您可以將該命令新增為 cronjob,sudo crontab -e然後添加一行以在每次啟動後運行該命令,如下所示:

@reboot sleep 30 && ethtool -s enp2s0 speed 10 duplex half autoneg on

啟動後將延遲sleep 30命令的執行 30 秒,以便首先出現介面…您可以根據需要減少或增加延遲。

或者,您可以使用不同的方法來實現您想要的部分或全部結果......例如,您可以只使用流量整形規則tc限制頻寬速率...我複製了我的並對其進行了修改,消除了不相關的規則並更改了數字以滿足您的要求...它應該將下載和上傳限制為10 Mbit/秒.. .複製/貼上並執行所有命令一次一個:

sudo tc qdisc add dev wlp2s0 root handle 1: cbq avpkt 1000 bandwidth 10mbit
sudo tc class add dev wlp2s0 parent 1: classid 1:1 cbq rate 10000kbit allot 1500 prio 5 bounded isolated
sudo tc class add dev wlp2s0 parent 1:1 classid 1:10 cbq rate 10000kbit allot 1600 prio 1 avpkt 1000
sudo tc class add dev wlp2s0 parent 1:1 classid 1:20 cbq rate 10000kbit allot 1600 prio 2 avpkt 1000
sudo tc qdisc add dev wlp2s0 parent 1:10 handle 10: sfq perturb 10
sudo tc qdisc add dev wlp2s0 parent 1:20 handle 20: sfq perturb 10
sudo tc filter add dev wlp2s0 parent 1:0 protocol ip prio 10 u32 match ip tos 0x10 0xff  flowid 1:10
sudo tc filter add dev wlp2s0 parent 1:0 protocol ip prio 11 u32 match ip protocol 1 0xff flowid 1:10
sudo tc filter add dev wlp2s0 parent 1: protocol ip prio 13 u32 match ip dst 0.0.0.0/0 flowid 1:20
sudo tc qdisc add dev wlp2s0 handle ffff: ingress
sudo tc filter add dev wlp2s0 parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate 10000kbit burst 1000kbit drop flowid :1

您需要更改wlp2s0為您的介面的名稱。

您應該先閱讀文檔,但如果您遇到 10 Mbit/s 的問題並且不知道如何返回,這應該會讓您回來:

sudo tc qdisc del dev wlp2s0 handle ffff: ingress
sudo tc qdisc del dev wlp2s0 root

在這裡也更改wlp2s0為您的介面名稱。

相關內容