¿Cómo puedo limitar la velocidad del enlace en el servidor Ubuntu 20.04?

¿Cómo puedo limitar la velocidad del enlace en el servidor Ubuntu 20.04?

SO: servidor Ubuntu 20.04 - Interfaz Virtualbox: enp0s3

He estado buscando una solución para limitar la velocidad del enlace a 10 Mb/s, semidúplex y negociación automática deshabilitada. Como vi en la guía [enlace][1] pero no funciona. Cuando hago un estado de networkctl enp0s3, simplemente muestra negociación automática activada, velocidad 1G y dúplex completo. Y eso nunca cambia, incluso si muestra que está tomando la configuración de mi archivo. Luego descubrí el comando systemctl status systemd-udevd para obtener más información sobre el problema y encontré este error:

Necesito crear un archivo dentro de /etc/systemd/network/ que se llama 10-mb.link para aplicar la siguiente configuración:

[MATCH]

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

[LINK]

BitsPerSecond=10M

Duplex=Half

Seguí estas instrucciones: [1]:https://manpages.ubuntu.com/manpages/focal/man5/systemd.link.5.htmly 2]:https://linuxiac.com/how-to-manipulate-ethernet-card-on-linux-with-ethtool-command/

Pero ninguno funcionó, no sé qué más probar, mi sistema de prueba no tiene NetworkManager (que leí podría estar causando problemas, pero ni siquiera está instalado)

Además, en los dispositivos físicos he podido establecer la configuración que dije anteriormente, pero tan pronto como arrancamos, pierden lo que se configuró. Lo hice usando este comando: "ethtool -s enp2s0 speed 10 duplex half autoneg on" pero no funciona en la máquina virtual, mi sistema simplemente lo olvida después de iniciar, así que mi pregunta es, ¿cómo puedo hacer esto? ¿Los cambios son permanentes?

Respuesta1

Puede agregar ese comando como un cronjob usando sudo crontab -eluego agregar una línea para ejecutar el comando después de cada arranque de esta manera:

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

Retrasará sleep 30la ejecución del comando durante 30 segundos después del arranque para permitir que la interfaz aparezca primero... Puede disminuir o aumentar el retraso según lo necesite.

Alternativamente, puede usar diferentes métodos para lograr algunos o todos los resultados que desea... Por ejemplo, puede usar reglas de modelado de tráfico usando solotcpara limitar la velocidad del ancho de banda... Copié el mío y lo modifiqué eliminando reglas irrelevantes y cambiando los números para que coincidan con sus requisitos... Debería limitar la descarga y carga a 10 Mbit/segundo... Copiar/pegar y ejecutar todos los comandosuno a la 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

Debe cambiar wlp2s0el nombre de su interfaz.

Deberías leer la documentación primero, pero si te quedas atascado con 10 Mbit/s y no sabes cómo regresar, esto debería traerte de regreso:

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

Cambie wlp2s0aquí también el nombre de su interfaz.

información relacionada