본문 바로가기
IT이야기

[iperf3] 서버 네트워크 구간 별 속도 확인 Tool

by 너머스고(numusgo) 2024. 1. 31.

 

민간클라우드 사업하던 중에 CSP(VPN) ↔ 기관(VPN) 간 속도가 느리다는 문의가 왔다.

 

CSP 네트워크 구간 모니터링을 해보고, CPS/기관 VPN 속도 모니터링을 하였으나... 정상이었다.

 

그런데 기관에서는 속도가 느리다는 불만이 많아서... 어떻게 하면 속도 체크를 할 수 있을까? 고민을 하였다.

 

그래서 찾아보다가 iperf3라는 툴을 확인하여 테스트를 진행했다.

 

CSP내 VM을 서버로 두고 기관에 있는 VPN관 직접 물려있는 서버를 클라이언트로 하여 테스트를 하였는데....

 

진짜... 속도가 안 나왔다.

 

CSP도 문제없고.. VPN도 문제없고.... 몇 주의 삽질을 한 후에 알아낸 것이 바로 기관 내에 있는 IPS 장비였다.

 

VPN 네트워크 속도 체크 구성도

(기관 VPN도 인터넷이 되는 구간이기 때문에 대부분 VPN을 IPS 하단에 구성한다. 아닌 경우도 있다.)

 

IPS장비는 DDOS 공격에 대응하기 위해 조건을 넣어두는 게 있다.

VPN 장비에 대해서 예외 처리를 하거나 대역폭을 늘려줘야 하는데 막은 거였다.

 

예로 기본 조건이 10분 동안 차단하면 10 후에 풀려서 다시 동작을 하는 것이었다.. 네트워크를 모르는 저에게는 까막눈이였어요

 

iperf로 테스트하면 처음에는 Transfer 하지만 두 번째부터 0으로 나온다...

 

 

 

* 조치 방법 :기관 IPsecVPN (공인 IP) , UDP Flooding Attack 예외처리 해야 한다.

 


 

1.서버에 iperf 서버 모드로 기동해놓은다.

예시)
// 기본 포트(5201)가 아닌 지정된 포트로 서버 구동
$ iperf3 -s -f g -p 1234
-----------------------------------------------------------
Server listening on 1234
-----------------------------------------------------------


2. 클라이어트에서 접속하여 속도 체크한다.
// 시험 패킷을 전송하되 단위를 MB/sec로 표기
$ iperf3 -c 10.20.30.40 -p 1234 -f M

 

 

설치방법(윈도우 버전은 next만 누르면 된다.)

yum install iperf3

rpm -ivh iperf3-3.1.7-2.el7.x86_64.rpm


기본 설명
기본적인 사용 방법 : 서버와 클라이언트의 구성
iperf3는 서버 역할을 할 데몬과 클라이언트 역할을 할 데몬을 실행함으로써 시험을 수행하게 됩니다. 
성능 측정을 하고자 하는 대상 장비, 인스턴스에서 iperf3를 서버 모드로 실행하고 
다른 장비에서 iperf3를 클라이언트 모드로 실행하여 성능을 측정합니다. 

 

서버 모드로 iperf3 실행하기
iperf3를 서버 모드로 실행하기 위해서는 -s 파라메터를 지정합니다. 
서버의 성능은 대역폭 혹은 전송량으로 표기되는데
-f 파라메터 뒤에 소문자 m, g, t 등을 사용하면 대역폭으로
-f 파라메터 뒤에 대문자 M, G, T 등을 사용하면 전송량으로 표기합니다.

iperf2는 기본적으로 5201 포트로 수신을 합니다만
다른 포트를 사용하기 위해 -p 파라메터와 포트 번호를 지정할 수도 있습니다.


// 서버 모드로 iperf3를 실행
$ iperf3 -s

// 서버 모드로 iperf3를 실행하되 대역폭을 Mbps로 표기
$ iperf3 -s -f m

// 서버 모드로 iperf3를 실행하되 대역폭을 Gbps로 표기
$ iperf3 -s -f g

// 서버 모드로 iperf3를 실행하되 전송량 GB/sec로 표기
$ iperf3 -s -f G

// 기본 포트(5201)가 아닌 지정된 포트로 서버 구동
$ iperf3 -s -f g -p 1234
-----------------------------------------------------------
Server listening on 1234
-----------------------------------------------------------
 

클라이언트 모드로 iperf3 실행하여 시험 수행하기
서버를 구동했다면 이제 클라이언트를 구동할 차례입니다. 
옵션은 서버로 쓸때와 비슷한데요
접속 대상 iperf3 서버 IP를 -c 옵션으로 지정한다는 정도의 차이가 있습니다. 

// 서버 10.20.30.40 으로 시험 패킷을 전송
$ iperf3 -c 10.20.30.40

// 서버 10.20.30.40를 1234번 포트로 연결하여 시험 패킷을 전송
$ iperf3 -c 10.20.30.40 -p 1234

// 시험 패킷을 전송하되 단위를 Mbps로 표기
$ iperf3 -c 10.20.30.40 -p 1234 -f m

// 시험 패킷을 전송하되 단위를 MB/sec로 표기
$ iperf3 -c 10.20.30.40 -p 1234 -f M


참조 : https://ondemand.tistory.com/368