해당 포스팅은 작성자가 공부 목적으로 작성한 글로써 작동하지 않거나 일부 틀린 부분이 존재할 수 있습니다.
개요
본인의 직장에서 작업 중 대용량의 파일을 온라인에서 내려받을 일이 생겼고 해당 작업을 실행 시 회사의 여유롭지 않은 네트워크 트래픽을 다 사용하게 되는 문제가 있었다. 그래서 기존 40Mbps 로 받아지는 대용량 파일 5Mbps로 내려 조금 오래걸리더라도 해당 작업을 회사 네트워크에 문제가 되지 않도록 네트워크 속도에 제한을 걸어 느리게 진행하였다. Wondershaper
라는 도구를 이용하여 네트워크 속도를 제한하였고 구성 환경 및 특징 다음과 같다. 다른 사용자의 포스팅에 의하면 우분투 20.04 에서도 사용가능하다고 한다.
- Ubuntu 18.04
- 유선 랜 사용
- Wondershaper 툴 사용
- Ubuntu 20.04도 가능
일련의 설치과정이 존재하지만 어렵지 않게 수행할 수 있다.
Wondershaper 설치
해당 툴은 apt
패키지로도 설치할 수 있지만 2022년 6월 기준 해당 깃헙 레포지토리에서 최신버전을 받아 사용하였다. 가장 마지막 커밋은 2021년 10월 이고 따로 릴리즈 버전은 없지만 Readme.md
내용을 기준으로 1.4.1
버전인 것 같다.
$ git clone https://github.com/magnific0/wondershaper.git
$ cd wondershaper
$ sudo make install
설치에 문제가 있거나 작동에 문제가 있을 시 다음 명령어로 삭제할 수 있다.
$ sudo make uninstall
위의 설치 과정은 바이너리, 서비스, 설정파일을 각각 필요한 위치에 옮겨준다. 본인의 PC 기준으로 다음과 같다.
/usr/local/sbin/wondershaper
/usr/local/lib/systemd/system/wondershaper.service
/etc/systemd/wondershaper.conf
사용
설치가 완료되었다면 서비스의 형태로 제공되는 wondershaper
를 작동 시키자.
1회성으로 사용한다면 바로 바이너리 파일을 이용하여 실행 할 수 있다. 지속적 사용이 필요하다면 설정파일을 셋팅하고 systemctl
명령어를 통해 enable
과 start
까지 하자.
네트워크 인터페이스 확인
하나의 PC에 네트워크 인터페이스는 여러개가 설정되어있을 수 있다. 단순 로컬 뿐 아니라 VM과의 연결, 도커 사용으로 인한 인터페이스 등이 있지만 여러개가 있을 수 있지만 사용자인 본인이 보기에 외부와의 연결 속도를 제한한다면 어떤 네트워크 인터페이스를 건드려야할 지 알 것이라 생각한다. 본인의 경우 다음과 같다.
$ ip addr show
>>>
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
...
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
...
3: vmnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
...
4: vmnet8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
...
5: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
...
6: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
...
7: docker_gwbridge: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
...
8: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
...
14: vethe84347f@if13: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker_gwbridge state UP group default
...
위 내용과 같이 9가지의 인터페이스가 나오는데 사무실 내에서 본인이 외부와 연결하기 위해 사용하는 인터페이스는 eno1
이다. 본인의 IP와 저기에 생략하였지만 실제로 출력된 내용을 보면 알 수 있다.
바로 실행(바이너리를 통해)
기본적인 wondershaper
의 사용법은 다음과 같다.
$ wondershaper [-a <adapter>] [-d <rate>] [-u <rate>]
# wondershaper [-a 네트워크 인터페이스 명] [-d 다운로드 속도] [-u 업로드 속도]
다른 옵션들이 일부 더 있는데 이는 wondershaper --help
명령어를 통해서 확인해보자.
아래와 같이 실행한다면 다운로드 속도는 5MB/s, 업로드 속도는 1MB/s 로 제한 할 수 있다.
$ sudo wondershaper -a eno1 -d 5120 -u 1024
서비스로 실행(설정 파일 셋팅)
지속적 사용을 위한다면 설정파일을 열어 네트워크 인터페이스, 다운로드 속도, 업로드 속도를 지정해주자. 해당 파일은 /etc/systemd/wondershaper.conf
경로에 있다.
$ sudo vi /etc/systemd/wondershape.conf
>>>
[wondershaper]
# Adapter
IFACE="eth0"
# Download rate in Kbps
DSPEED="2048"
# Upload rate in Kbps
USPEED="512"
...
...
해당 내용 아래에 있는 설정들은 건들 필요 없이 위의 바이너리로 실행할 때와 마찬가지로 네트워크 인터페이스, 다운로드 속도, 업로드 속도를 지정한다. 해당 값들을 본인의 환경에 맞게 변경한다.
그 후 서비스를 enable
및 start
해 주어 wondershaper
를 작동시킨다.
$ sudo systemctl enable wondershaper.service
$ sudo systemctl start wondershaper.service
속도 확인
본인은 https://www.speedtest.net/ 라는 사이트에서 속도를 체크하였다.
차이를 확인하기 위해 wondershaper
를 적용 전과 후 2번을 체크해보면 확실한 차이를 알 수 있다.
속도 제한 설정 해제
설정 해제도 간단하게 구현되어있는 것 같다. 바이너리 사용 시와 서비스 사용 시 둘다 문제 없이 설정 해제가 된다.
바이너리 사용 시
-c
옵션은 clear
인 듯하다. 설정했던 내용을 날려준다.
# sudo wondershaper -c -a [인터페이스 명]
$ sudo wondershaper -c -a eno1
서비스 사용 시
서비스를 중지하고 아예 사용을 안한다면 disable
명령어를 통해 서비스 등록을 해제한다.
$ sudo systemctl stop wodnershaper.service
# 아예 사용을 중단 할 시
$ sudo systemctl disable wondershaper.service
댓글남기기