클라우드

클라우드 운영 LB L4 환경에서 Proxy protocol 설정하기 |네이버클라우드플랫폼

놀개_ 2022. 12. 29. 14:11

개요

1. 사설 IP 사용하는 WAS  A서버에서 ssh 로 서버 B서버(WEB/WAS단일) 접근 후

2. B서버에서 다시 WAS A서버로 L4 통해 API 통신 시도

문제

사설 대역에서 접속한 B서버는 https://cmail.cloud.kr/api/xxx/xxxx/xxxx 이라는 API URL  호출한다.

이 과정이 3번 과정이다. 3번을 보면 URL 호출 후 외부로 나갔다가 다시 L4 통해 WEB1, WAS A서버로 들어온다.

 

문제는 해당 API URL 호출 시 WAS A서버까지 들어오지 않았다.

 

분석

1. B서버에서 80/443 통신이 안되나?

서버 통신할 때 확인하는 방법으로 아래와 같이 확인해봤다.

echo > /dev/tcp/cmail.cloud.kr/80

echo > /dev/tcp/cmail.cloud.kr/443

정상 통신 되는 걸 확인하였다.

-> 나가는 포트는 모두 열려있으므로 L4까지는 도달한다는 의미이다.

 

2. 그래서 그 다음으로 L4 통해 들어오는 WEB 서버 apache access 로그를 봤다.

client IP 가 찍혀 있어야 하는데 웬 사설 IP 가 찍혀있었다.

 

동일한 WEB서버를 바라보는 다른 L4 로 등록된 mail.sensmailcloud.kr URL 로 API 호출해봤떠니 얘는 정상적으로 WAS 까지 들어오더라.

apache access 로그 봤더니 얘는 사설 IP가 아닌 clientIP(=공인IP) 가 찍혀있었다. (정상)

 

핵심

모든 곳에서 https://cmail.cloud.kr 에 접속하여 아파치 access 로그를 확인한 결과  모두 동일한 사설IP 가 찍히고 있었다.

사무실 와이파이로 접속해도, LTE로 접속해도, 다른 서버에서 접속해도 모두 같은 IP 로 찍혔다.

정상적인 Client IP 설정이 되어 있다면, 사무실 와이파이로 접속하면 사무실 IP 가 찍혀야하고 다른 서버에서 접속했다면 접속한 서버 IP 가 찍혀야한다. (Client IP=요청한 곳의 IP)

 

해결

이 부분은 클라우드 콘솔에서 LB 설정 proxy protocol사용을 해야한다.

프록시 프로토콜을 사용(체크)하지 않으면 실제 Client Ip 가 아닌 L4 사설 Ip 가 찍히게 된다.

출처 : 네이버클라우드플랫폼 로드밸런서 생성화면

생각넓히기

Proxy Protocol 설정을 왜 하는가?

로드밸런서에서 TCP/SSL 프로토콜 사용 시, Proxy Protocol 을 사용하여 Client IP를 추출하고 특정 IP만 접근 허용할 수 있도록 한다.

 

그렇다.  Client IP 를 추출하기 위해 해당 설정을 해주는 것이다.

IP 기반으로 처리하기 위해서는 Client Ip가 필요하다.

Ip 추척 기능이라든가 API 기능이라든가 IP 제한 이라든가 하는 다양한 IP 기반의 기능을 처리해야한다면 Client IP가 필요하기 때문이다.

 

★ 주의할 점은 Proxy Protocol 을 사용하기 위해서는 반드시 TCP나 SSL 프로토콜선택해 주어야 한다.

Proxy Protocol  https://whyjlee.tistory.com/31

 

참고

 

L4 환경에서의 ACL 설정 — TCP 프로토콜 사용 시

로드밸런서에서 TCP/SSL 프로토콜 사용 시, Proxy Protocol을 사용하여 Client IP를 추출하고 특정 IP만 접근을 허용하는 법에 대해서 소개해드리고자 합니다.

medium.com

 

 

Proxy Protocol을 이용해 Client IP 확인하기 CentOS

Ncloud Network Proxy Load Balancer의 Proxy Protocol을 이용해 CentOS 서버에서 클라이언트 IP 주소를 확인하는 방법입니다.

docs.3rdeyesys.com