NLB 사용 시 Source IP 유지로 인해 발생한 ACG 방화벽 정책 이슈 해결
문제 상황
- NCP에서 WEB → NLB → WAS 구조로 서비스 구성
- 구축 단계에서는 아웃바운드 ANY OPEN으로 사이트 정상 동작
- 운영 전환을 위해 아웃바운드 제한하니 사이트에서 503 오류 발생
- 인바운드는 그대로였으므로 아웃바운드 정책 문제로 확인
- WEB 서버에서 NLB의 Private IP로 아웃바운드를 허용했던 상황
원인 분석
- WAS에서 tcpdump 확인
- Source IP가 NLB Private IP일 줄 알았으나, 덤프 확인 시 WEB 서버 Private IP로 출력됨
- 트래픽을 단순 포워딩만 하고 클라이언트 IP를 그대로 전달
- Source IP가 NLB Private IP일 줄 알았으나, 덤프 확인 시 WEB 서버 Private IP로 출력됨
- 결과적으로 WAS는 NLB가 아닌 WEB 서버와 직접 통신하는 형태가 됨
- 동작 방식은 AWS에서의 NLB도 동일하며 L4 LB의 정상적인 구조로 확인
조치
- WEB 서버의 아웃바운드에 WAS 서버의 Private IP 추가 후 정상 동작 확인
결론
L4 LB인 NLB NAT를 하지 않기 때문에 WAS는 항상 앞단 서버의 Real IP를 보게 된다.
따라서 ACG 정책도 NLB가 아닌 실제 통신 경로(WEB → WAS) 기반으로 설정해야 한다.