0. 요약
클라이언트 IP 주소 보존 (Client IP preservation) 활성화

- 외부에서는 NLB의 퍼블릭도메인(공인IP)로 접속하면, 대상(타켓 EC2)의 IP로 DNAT(목적지 IP 변환)하여 전달
- 클라이언트 IP 주소 보존 활성화 상태이므로, 외부 클라이언트의 IP 주소를 대상(타켓 EC2)에서 확인 가능
클라이언트 IP 주소 보존 (Client IP preservation) 비활성화

- NLB 에서 대상(타켓 EC2)로 전달 시, 출발지 IP 주소를 NLB 의 내부 ENI(IP)로 SNAT(출발지 IP 변환) 하여 전달
- 클라이언트 IP 주소 보존 비활성화 상태이므로, 외부 클라이언트의 IP 주소를 대상(타켓 EC2)에서 확인 불가능
Proxy protocol version2 (PPv2
) 사용 시 ← 클라이언트 IP 주소 보존 비활성화
상태

- NLB 에서 PPv2 사용 시, 외부 클라이언트 IP 정보를 PPv2 헤더에 담아서 TCP 데이터에 추가하여 대상(타켓 EC2)에게 전달
- NLB 에서 PPv2 사용 시에는 대상(타켓 EC2)의 애플리케이션이 추가된 PPv2 헤더를 인식할수 있게 설정이 반드시 필요함!
- 결과적으로 NLB PPv2 사용 시, 외부 클라이언트의 IP 주소를 대상(타켓 EC2)에서 확인 가능

예시) VPC Endpoint service 를 통해서 NLB 로 인입 시, 위 형식의 PPv2 헤더를 추가하여 대상에게 전달
<aside>
💬 NLB는 클라이언트 IP 확인을 위한 HTTP 헤더의 XFF(X-Forwarded-For) 를 왜 사용하지 못할까?
⇒ NLB 는 Layer4 계층까지만 이해하고 제어가 가능하여 HTTP 헤더를 이해하지 못하여 XFF 추가를 할 수 없음
</aside>
1. NLB - Client IP Preservation
실습 환경

- 각 서버(인스턴스)에 '웹 서비스(TCP 80)' 와 'SNMP 서비스(UDP 161)' 가 동작 중입니다
- 외부 사용자가 NLB 를 통해서 서버의 서비스로 연결되는 구성 환경입니다
- 실습 기본 환경 CloudFormation - 링크
1.1 NLB 대상 유형 : 인스턴스, IP
NLB 인스턴스
유형

NLB IP
유형
