Ncloud(네이버 클라우드)에서 X-Forwarded-For를 이용해 Proxy, Load Balancer 환경에서 Client IP를 Windows IIS Log에 기록하는 방법

개요

X-Forwarded-For (XFF) 는 HTTP Header 중 하나로 Load Balancer(로드밸런서)나 Proxy Server를 통해 웹서버에 접속하는 Client의 IP 주소를 식별하는 표준 헤더입니다.
웹서버나 WAS 앞쪽에 Load Balancer 혹은 Proxy Server 등이 위치하게 된다면 서버 접근 로그에는 Client IP가 아닌 Load Balancer 혹은 Proxy Server의 IP 주소가 기록됩니다. 이때 웹 어플리케이션에서 X-Forwarded-For 헤더를 이용하면 Client IP를 서버 접근 로그에 남길 수 있습니다.

여기서는 Load Balancer와 연동된 Windows Server의 IIS에서 X-Forwarded-For를 이용해 IIS(Internet Information Services) Log에 Clinet의 IP를 기록하는 과정을 살펴보겠습니다.

테스트 환경

테스트는 Windows 서버를 Load Balancer와 연동한 후 Cloud Log Analytics에서 IIS Log를 수집해 IP 주소를 확인하는 방식으로 진행하겠습니다.

Network 환경

  • VPC 대역 : 10.0.0.0/16
  • Subnet 대역 (Server) : 10.0.0.0/24
  • Subnet 대역 (Load Balancer) : 10.0.4.0/24

Server 환경

  • Windows Server 2019 (64-bit) English Edition

테스트 서버

위 서버 환경에서 정리한 대로 Windows 서버를 준비했습니다. VPC 환경에서 서버 생성하는 방법은 아래 문서를 참고하시면 됩니다.

Ncloud(네이버 클라우드)에서 X-Forwarded-For를 이용해 Proxy, Load Balancer 환경에서 Client IP를 Windows IIS Log에 기록하는 방법

로드밸런서도 마찬가지로 준비하고, 서버와 연동까지 완료했습니다. VPC 환경에서 로드밸런서를 생성하는 방법은 아래 문서를 참고하시면 됩니다.

  • 로드밸런서 상세 정보에서 [10.0.4.0/24]로 표시되는 서브넷 정보를 기억했다가 아래쪽에서 테스트할 때 확인해보겠습니다.
Ncloud(네이버 클라우드)에서 X-Forwarded-For를 이용해 Proxy, Load Balancer 환경에서 Client IP를 Windows IIS Log에 기록하는 방법

설정 전 테스트

우선, X-Forwarded-For (XFF) 설정을 하기 전에 어떻게 기록이 남는지 확인해보겠습니다.

IIS 접속 로그 확인

Windows IIS 접속 로그를 [Cloud Log Analytics]에서 확인하는 방법은 아래 문서를 참고하시며 됩니다.

Cloud Log Analytics에서 수집한 로그를 확인해보면 위에서 설정했던 Load Balancer의 IP 대역 (10.0.4.xx)이 기록된 것을 확인할 수 있습니다.

Ncloud(네이버 클라우드)에서 X-Forwarded-For를 이용해 Proxy, Load Balancer 환경에서 Client IP를 Windows IIS Log에 기록하는 방법

IIS 설정

이제 실제 Client IP가 기록 되도록 설정을 변경해보겠습니다.

  • IIS Manager를 실행시켜서 메뉴 중에 [Logging]을 선택합니다.
Ncloud(네이버 클라우드)에서 X-Forwarded-For를 이용해 Proxy, Load Balancer 환경에서 Client IP를 Windows IIS Log에 기록하는 방법
  • [Logging] 화면에서 [Format]은 기본 값인 [W3C] 그대로 두고 [Log File] 항목의 [Select Fields] 버튼을 클릭합니다.
Ncloud(네이버 클라우드)에서 X-Forwarded-For를 이용해 Proxy, Load Balancer 환경에서 Client IP를 Windows IIS Log에 기록하는 방법
  • [W3C Logging Fields] 팝업창에서 [Custom Fields] 항목의 [Add Field] 버튼을 클릭합니다.
Ncloud(네이버 클라우드)에서 X-Forwarded-For를 이용해 Proxy, Load Balancer 환경에서 Client IP를 Windows IIS Log에 기록하는 방법
  • [Add Custom Field] 팝업창에서 [Field Name], [Source] 두가지 항목 모두에 [X-Forwarded-For]를 입력하고 [OK] 버튼을 클릭합니다.
Ncloud(네이버 클라우드)에서 X-Forwarded-For를 이용해 Proxy, Load Balancer 환경에서 Client IP를 Windows IIS Log에 기록하는 방법
  • [Custom Fields]에 [X-Forwarded-For] 설정이 추가된 것을 확인할 수 있습니다.
Ncloud(네이버 클라우드)에서 X-Forwarded-For를 이용해 Proxy, Load Balancer 환경에서 Client IP를 Windows IIS Log에 기록하는 방법
  • 팝업창을 닫고 [IIS Manager] - [Logging] 설정 화면 오른쪽에 있는 [Apply]를 클릭해서 변경된 설정을 적용합니다.
Ncloud(네이버 클라우드)에서 X-Forwarded-For를 이용해 Proxy, Load Balancer 환경에서 Client IP를 Windows IIS Log에 기록하는 방법
  • 변경된 설정이 적용되었다는 메시지를 확인할 수 있습니다.
Ncloud(네이버 클라우드)에서 X-Forwarded-For를 이용해 Proxy, Load Balancer 환경에서 Client IP를 Windows IIS Log에 기록하는 방법

설정 후 테스트

위와 같이 서버에서 설정을 모두 마친 후에 로드 밸런서 URL로 접속합니다.
이후에 Cloud Log Analytics에서 로그를 확인해보면 아래와 같이 실제 접속한 Client의 IP가 추가로 기록된 것을 확인할 수 있습니다.

Ncloud(네이버 클라우드)에서 X-Forwarded-For를 이용해 Proxy, Load Balancer 환경에서 Client IP를 Windows IIS Log에 기록하는 방법

참고 URL

  1. X-Forwarded-For 안내
  2. Cloud Log Analytics에서 Windows IIS Log 수집하는 방법

문서 업데이트 내역

날짜 내용
2023-11-17 문서 최초 생성