Como posso limitar a velocidade do link no servidor Ubuntu 20.04

Como posso limitar a velocidade do link no servidor Ubuntu 20.04

SO: Servidor Ubuntu 20.04 - Interface Virtualbox: enp0s3

Estou procurando uma solução para limitar a velocidade do link a 10Mb/s, half duplex e negociação automática desabilitada. Como vi no guia [link][1], mas não funciona. Quando faço um status networkctl enp0s3, ele apenas mostra negociação automática ativada, velocidade 1Gs e Duplex cheio. E isso nunca muda, mesmo que mostre que está pegando a configuração do meu arquivo. Então descobri o comando systemctl status systemd-udevd para obter mais informações sobre o problema e encontrei este erro:

Preciso criar um arquivo dentro de /etc/systemd/network/ chamado 10-mb.link para aplicar a seguinte configuração:

[MATCH]

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

[LINK]

BitsPerSecond=10M

Duplex=Half

Eu segui estas instruções: [1]:https://manpages.ubuntu.com/manpages/focal/man5/systemd.link.5.htmle [2]:https://linuxiac.com/how-to-manipulate-ethernet-card-on-linux-with-ethtool-command/

Mas nada funcionou, não sei mais o que tentar, meu sistema de testes não tem NetworkManager (o que li pode estar causando problemas, mas nem está instalado)

Além disso, nos dispositivos físicos consegui definir as configurações que mencionei acima, mas assim que inicializamos, eles perdem o que foi configurado. Eu fiz isso usando este comando: "ethtool -s enp2s0 speed 10 duplex half autoneg on" mas não funciona na máquina virtual, meu sistema simplesmente esquece depois de inicializar, então minha pergunta é, como posso fazer isso mudanças permanentes?

Responder1

Você pode adicionar esse comando como um cronjob usando sudo crontab -ee adicionar uma linha para executar o comando após cada inicialização como esta:

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

O sleep 30irá atrasar a execução do comando por 30 segundos após a inicialização para permitir que a interface apareça primeiro… Você pode diminuir ou aumentar o atraso conforme necessário.

Alternativamente, você pode usar métodos diferentes para alcançar alguns ou todos os resultados desejados... Por exemplo, você pode usar regras de modelagem de tráfego usando apenastcpara limitar a taxa de largura de banda... Copiei o meu e modifiquei-o eliminando regras irrelevantes e alterando os números para atender às suas necessidades... Deve limitar o download e o upload a 10 Mbit/segundo... Copie/cole e execute todos os comandosum por vez:

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

Você precisa mudar wlp2s0para o nome da sua interface.

Você deve ler a documentação primeiro, mas se ficar preso em 10 Mbit/s e não souber como voltar, isso deve trazê-lo de volta:

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

Mude wlp2s0o nome da sua interface aqui também.

informação relacionada