Ubuntu 서버 20.04에서 링크 속도를 어떻게 제한할 수 있나요?

Ubuntu 서버 20.04에서 링크 속도를 어떻게 제한할 수 있나요?

OS: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/focus/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

sudo crontab -e다음과 같이 각 부팅 후에 명령을 실행하는 줄을 추가하여 해당 명령을 cronjob으로 추가할 수 있습니다 .

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

sleep 30인터페이스가 먼저 나타날 수 있도록 부팅 후 30초 동안 명령 실행이 지연됩니다. 필요에 따라 지연 시간을 줄이거나 늘릴 수 있습니다 .

또는 다양한 방법을 사용하여 원하는 결과의 일부 또는 전부를 얻을 수 있습니다. 예를 들어 트래픽 조정 규칙은tc대역폭 속도를 제한하기 위해 ... 내 것을 복사하고 수정하여 관련 없는 규칙을 제거하고 요구 사항에 맞게 숫자를 변경했습니다. 다운로드 및 업로드를 10Mbit/초로 제한해야 합니다. 모든 명령을 복사/붙여넣고 실행합니다한번에 한:

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인터페이스 이름을 변경해야 합니다 .

먼저 문서를 읽어야 하지만 10Mbit/s에 멈춰서 돌아가는 방법을 모르는 경우 다음 내용을 참조하면 다시 돌아올 수 있습니다.

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

wlp2s0여기에서도 인터페이스 이름을 변경하세요 .

관련 정보