Today Keys : Proxy protocol, target , group, mod_remoteip, aws, network load balancer, nlb, access log, cloud
이번 포스팅은 AWS Network Load Balancer에서 Target Group Type으로 IP를 사용하는 경우에도 Proxy Protocol를 이용해서 사용자 IP를 확인하는 방법에 대해서 알아봅니다. 이 방법은 Target Group Type이 IP인 경우 이외에도 Private Link를 통한 서비스 호출 시에도 동일하게 적용하여 사용자 IP를 확인할 수 있습니다.
먼저 서버에서 Proxy Protocol에 의한 사용자 IP를 Access Log에 남기기 위해서 설정하는 방법을 알아 봅니다.
아파치 데몬 설치 및 mod_remoteip module 확인
[root@ip-10-1-0-142 ~]# yum -y install httpd |
설정 파일에 Proxy Protocol 지원 및 로그 포맷 설정 추가 (/etc/httpd/conf/httpd.conf)
RemoteIPProxyProtocol On |
※ ProxyProtocol 활성화 이후에는 ProxyProtocol을 적절하게 처리하지 않은 경우에 정상적인 서비스 불가
이제 Proxy Protocol을 사용하기 전과 후의 테스트를 통해서 정상적으로 원하는 출발지(사용자) IP주소가 Access log에 남는지 확인해 봅니다.
Proxy Protocol v2 설정 전
Target Group에 Proxy Protocol v2를 설정하기 전의 Target Group Type에 따라서 서비스 호출 및 Access log 확인
Target Type : Instance
Target Type : IP
Target Group Type에 따른 Access Log.
- NLB의 경우 Target Type이 Instance인 경우에 별도의 NAT 과정이 없기 때문에 Client IP 확인 가능
- Target Type이 IP인 경우에는 NLB에서 NAT를 수행하여 Client IP가 Server에서는 NLB로 보임
[root@ip-10-1-0-142 ~]# cat /var/log/httpd/access_log | cut -d' ' -f-6 |
Proxy Protocol v2 설정 후
Target Type : Instance
Target Type : IP
Target Group Type에 따른 Access Log.
- Target Goup IP Type인 경우에도 Access log에서 출발지 IP 확인 가능
[root@ip-10-1-0-142 ~]# cat /var/log/httpd/access_log | cut -d' ' -f-6
2XX.XXX.9.90 80 2XX.XXX.9.90 36933 - - // IP Type Target 호출 로그
Private Link 사용 시의 Proxy Protocol을 사용한 사용자 IP 확인
▪ Private Link 사용 시에 Provider 쪽에 Private Link Service를 위해서 NLB가 필요한 데, 출발지에서 Private Link를 이용해서 서비스 호출 시, 서버에서는 NLB IP 주소로 Access log가 남게 됨.
▪ Private Link Service를 위한 Provider의 NLB에서도 Proxy Protocol v2를 활성화하여, Private Link를 이용해서 호출하는
사용자(출발지)의 IP주소 식별 가능
※ 테스트 환경
Private Link 구성을 위한 NLB의 Target은 Instance Type으로 구성
Proxy Protocol v2 설정 전
일반적인 Private Link를 통한 서비스 호출 시, NLB IP가 로그에 남게 됨.
Private Link 사용자 (요청) Private Link 제공자(로그)
[root@ip-10-1-0-142 ~]# cat /var/log/httpd/access_log | cut -d' ' -f-6
10.1.0.206 - - [26/Jun/2020:08:35:08 +0000] "GET // Private Link 제공자의 ENI IP 출력 |
Proxy Protocol v2 설정 후
Private Link를 통한 서비스 호출 시에도 출발지의 IP를 Access Log에서 확인 가능
Private Link 사용자 (요청) Private Link 제공자(로그)
[root@ip-10-1-0-142 ~]# cat /var/log/httpd/access_log | cut -d' ' -f-6
10.2.0.22 80 10.2.0.22 39030 - - // Private Link 사용자의 IP 출력 |
테스트 화면 :
출발지에서 서비스를 2번 호출(Proxy Protocol 활성화 전 / 활성화 후)
서비스 제공자에서 Access Log 확인 시에 출발지 IP 확인 가능