Technical/Network

방화벽 또는 L4 동작 중 Reverse-NAT 설정 관련

귀하신분 2022. 7. 11. 22:17

이미 이 글을 보시는 분들은 간파하고 계시겠지만, 초기 구축이나 망 전환(특히, 방화벽/L4/L7 교체) 시 누락되어 가장 큰 이슈가 되는 내용이라 간단히 정리합니다.

 

방화벽이나 L4에서는 NAT 또는 Proxy를 통하여 ip를 대신하는 보안 기능을 제공합니다.

궁극적인 목적은 보안입니다.

 

방화벽에서는 source ip나 destination ip를 변환시키거나 ipsec vpn에서는 proxy 또는 route 경로를 배제시키고, L4에서는 VIP, L7에서는 Proxy를 이용해 로드밸런싱 또는 캐싱 시킵니다.

이 때 내부 구간(inside 쪽이나 real ip 구간)에서 문제점이 하나 발생하게 됩니다.

(현재 거의 모든 사이트에 설정되어 있음, but 내부에서 접근 필요 없는 경우 설정 필요 없음)

 

 

1 : Real ip가 동일한 서브넷 또는 외부 구간의 VIP로 Request 할 때,

2 : 방화벽이나 L4는 이미 설정된 내부의 Real server의 ip로 경로를 배정하여,

3 : Real server는 source ip인 Real ip로 direct로 직접 회신을 하기 때문에 세션이 성립되지 않음!

     (TCP 세션을 관리하는 장비는 HA 또는 동기화 방식이 아닌 이상 단방향 세션에 대해 reset 또는 drop 동작)

 

증상은 보통 아래와 같이 설명됩니다.

 

1. 내부 망의 어떠한 호스트에서, 방화벽에 1:1 NAT된 내부 서버의 공인ip로 접속이 안됨

2. L4 내부 망의 어떠한 서버에서, L4에서 부하분산 중인 외부 VIP로의 접속이 안됨

3. 패킷 수집 및 디버깅 시 최초의 sync 패킷이 보인 후 30초 후 reset 패킷이 제너레이트 됨

 

여기서 해결책은,

 

1. 일반적인 방화벽 : Reverse-NAT 설정을 통해 내부 어떠한 호스트에서 VIP로 요청할 때 Real server의 ip를 강제로 바라보도록 하고,

2. 일반적인 L4/L7 : 또다른 개념으로, 보통의 경우 VIP로 요청이 올 경우, 전혀다른 여분의 ip를 이용하여 source ip를 NAT 시켜서 직접 direct로 응답하지 말고 L4/L7에게 회신오도록 합니다.

 

제조사별로 대응하는 방식이 다르긴 하지만 모두 목표는 세션의 성립을 강제하는 것이고, 방화벽/L4/L7의 리소스는 추가 소모됩니다.

 

이러한 기능을 각 제조사별로 다르게 명칭하지만(어휘 풀이는 다른 의미가 될 수도 있지만) 모두 동일한 동작입니다.

(Reverse-NAT / Reverse-arp / Proxy-NAT / Proxy 반환 / Source-NAT / Lan-to-Lan)