https://pushstonez.tistory.com/13

 

[WebtoB] X-Forwarded-For(XFF) 설정

X-Forwarded-For(XFF) 란? XFF는 Http Header 중 하나로 HTTP Server에 요청한 Client의 IP를 식별하기 위한 표준 웹서버나 WAS 앞에 L4 같은 로드 밸런서나 Proxy Server, Caching Server 등의 장비가 있을 경우, 웹서버는 P

pushstonez.tistory.com

WebtoB의 X-Forwarded-For 설정을 마친 후 다중 IP를 사용하여 테스트를 진행한다.


 0. Jmeter?

Apache JMeter는 서버가 제공하는 성능 및 부하를 측정할 수 있는 테스트 도구다.

JMeter는 순수 Java 애플리케이션 오픈소스이며 서버나 네트워크 또는 개체에 대해 과부하를 시뮬레이션하여 강도를 테스트하거나 다양한 부하 유형에서 전체 성능을 분석하는 데 사용할 수 있다.


1. Jmeter 설치

1. https://jmeter.apache.org/ 에 접속한다.

 

Apache JMeter - Apache JMeter™

Apache JMeter™ The Apache JMeter™ application is open source software, a 100% pure Java application designed to load test functional behavior and measure performance. It was originally designed for testing Web Applications but has since expanded to oth

jmeter.apache.org

2. Download → Download Releases 를 선택한다.

3. Binaries -> jmeter-*.zip 파일을 다운로드 받는다.

4.적당한 위치에 압축을 해제 한 후, bin 디렉토리 내 jmeter.bat 파일을 실행한다.

5. Apache Jmeter 창이 제대로 떴다면 설치 완료.


2. Jmeter 설정

1. Thread Group 생성 및 설정

Thread Group은 하나의 Test Case 이다.

(마우스 우클릭) Test Plan → Add → Threads → Thread Group 선택

Thread Group 생성
Thread Group 설정

  • Number of Threads : Thread 생성 수 (test: 10)
  • Ramp-up period : Thread를 Ramp-up preiod 시간 만큼 실행 (test: 1)
  • Loop Count : Thread의 반복 횟수 (test: 30)

2. HTTP Request 생성 및 설정

(마우스 우클릭) Thread Group → Add → Sampler → Htto Request 선택

HTTP Requset 생성

BASIC 과 Advanced 탭을 선택하여 설정한다.

HTTP Request 설정


BASIC

  • Server Name or IP : 접속할 WEB SERVER IP 또는 Domain을 입력한다. (test: WEB Server IP)
  • Port Number : 서비스 Open 된 Port를 입력한다.  (test: 80)

Advanced

  • Implementation : X-Forwarded-For 설정을 위해 HttpClient4 로 변경한다.

3. CSV Data Set Config 생성 및 설정

(마우스 우클릭) Test Plan → Add → Config Element→ CSV Data Set Config 선택

CSV Data Set Config 생성

  • Filename : 다중 IP가 설정되어 있는 파일을 선택해준다. (절대경로)

ip_list 파일 내용

  • Variable Names : HTTP Header 설정에서 가져올 변수 명을 설정한다. (test: IP_LIST)

4. HTTP Header Manager 생성 및 설정

(마우스 우클릭) Http Request → Add → Config Element→ HTTP Header Manager 선택

HTTP Header Manager 생성
HTTP Header Manager 설정

  • Headers Stored in the Header Manager : 요청과 함께 전달될 헤더 필드 목록 (Name : X-Forwarded-For , Value : ${IP_LIST}

모든 설정을 완료 후 하단의 Save 버튼을 통해 설정 값을 저장한다.


3. Test

1. WebtoB 기동

 

2. Jmeter 실행

Jmeter 상단의 실행 버튼을 통해 JMeter 테스트를 시작한다.

 

3. Access 로그 모니터링

tail -F {accesslog name}

ip_list에 설정한 IP 들의 요청을 확인할 수 있다.

X-Forwarded-For(XFF) 란?

XFF는 Http Header 중 하나로 HTTP Server에 요청한 Client의 IP를 식별하기 위한 표준

웹서버나 WAS 앞에 L4 같은 로드 밸런서나 Proxy Server, Caching Server 등의 장비가 있을 경우, 웹서버는 Proxy server나 다른 장비 IP에서 접속한 것으로 인식한다.

 

클라이언트 IP -> Proxy 서버 및 장비 -> 웹 서버

 

X-Forwarded-For HTTP Hearder 에 있는 클라이언트 IP 를 찾아 실제 요청한 클라이언트 IP 를 알 수 있고, 웹로그에도 실제 요청한 클라이언트 IP 를 남길 수 있다.
X-Forwarded-For 는 다음과 같이 콤마를 구분자로 Client 와 Proxy IP 가 들어가게 되므로 첫번째 IP 를 가져오면 클라이언트를 식별할 수 있다.

X-Forwarded-For: client, proxy1, proxy2

 

WebtoB 설정

[$WEBTOBDIR/config/http.m]

*LOGGING
log1        Format   = "%h %l %u %t \"%r\" %>s %b %{X-Forwarded-For}i %{Referer}i"
            FileName = "/backup/webtob/log/access_%Y%%M%%D%.log", Option="sync"
                Option = "sync"

 

*LOGGING.Format에서 "%{HTTP_HEADER_FIELD}i"는 Client Request 중 해당되는 HTTP header field를 그대로 로그에 남기는 지시문이다.

X-Forwarded-For 를 사용하면 실제 클라이언트 IP 확인이 가능하다.
Referer -> URI를 획득했던 이전 URI를 Web Server에 알려주는 역할을 한다.

 

Node절 설정

*NODE.RPAFHeader = "X-Forwarded-For"와 같이 설정하면, WebtoB로 들어오는 HTTP 요청에서 Proxy 등을 거치면서 변경된 Remote IP에 Proxy 서버의 IP가 아닌 원래 요청이 발생된 Host IP로 설정할 수 있다.

 

확인

설정 후 page를 호출하여 개발자 도구 (f12) 에서 Remote Address  REAL IP를 확인 할 수 있다.

+ Recent posts