IT/Network

[L4] SLB 서비스 설정시 라우팅 방식으로 FNAT를 쓰는 경우

착한아줌마 2017. 7. 19. 03:28
반응형

L4 장비에 SLB 설정시 선택할 수 있는 라우팅 방식은 아래와 같다

1. NAT

2. FNAT

3. DSR

 

이 중 FNAT 방식이 쓰이는 경우에 대해 간단히 메모

 

일단 먼저 FNAT이란

FNAT란, Full NAT의 약자로 표준 용어는 아니다.

 

- FNAT

L4 스위치로 서비스가 적용되는 패킷의

출발지(source)와 목적지(destination) IP주소가

 모두 변경되어 전송되는 방식

 

 

기본적인 동작 과정을 그려보았다

L4 스위치를 기준으로 Source IP와 Destination IP가 모두 바뀐다는 점이 중요하다

 

 

 

 

이제 FNAT를 써야할 경우를 살펴본다

실제로 여러 경우가 있겠지만 간편히 알 수 있는 CASE는 아래와 같다

 

L4 스위치와 내부 Server 사이에 L2 스위치가 존재한다

그 상태에서 L2 스위치에 연결된 같은 대역의 Server 단 내에서 SLB 서비스를 요청하는 경우이다

 

 

 

Client가 Server2와 같은 네트워크 대역에 존재하면서 같은 L2 스위치 아래 물려있다.

 

 

 

 

 

이 경우에 일반적인 NAT 방식으로 동작시켰을때 문제가 생긴다

아래 동작 과정을 살펴본다

 

 

1-2-3 과정으로 플로우를 정리해 볼 수 있는데,

중요한 점은

Client에서 요청한 Destination IP는 192.168.23.10 (VIP)인데

실제로 응답을 주는 Source IP는 192.168.23.2 (Server2)이다

 

Client입장에서는 요청에 대한 응답이 다른 IP에서 돌아왔으므로 정상적을 connection을 맺지 못하게 되므로 문제가 발생한다

 

문제가 생기는 이유는 3번 플로우(빨간색)중 Server2에서 L2 스위치로 간 뒤에 있다

실제로 Server2에서는 Source를 자기 자신으로 하여 Client에 패킷을 보낸다

 

그러나 Source IP는 L4 스위치를 통해 실제로 요청했던 VIP로 바뀌어 Client에 전달되어야하는데

지금 CASE에서는 L2 스위치가 중간에서 Client를 알고있기 때문에

L4 스위치로 가지못하고 다이렉트로 Client로 전달되어 발생한다

 

 

 

 

 

아래는 위 경우를 FNAT로 설정 했을 때의 플로우이다

 

 

L4 스위치에서 FNAT 동작을 하며, Proxy IP로 VIP를 사용한다

플로우를 보면 1-2으로 넘어갈때 Source IP가 Client에서 Proxy IP로 변경된다

 

이 때문에 Server2에서 응답을 주면 그 Destination이 L4가 가지고있는 IP이기 때문에

L4 스위치까지 전달되어 FNAT되었던 IP들을 자체 테이블을 보고

다시 바꾸어 Client로 전달하여

정상적인 connection이 이루어 진다

 

 

 

 

지금 CASE말고 다른 CASE가 존재 하기도 하지만

제일 알기 쉬운 CASE라고 생각하여 정리하였다

 

실제론 L4와 Server단 사이에 L2 스위치가 존재하지 않아도 발생하는 문제이지만

L4 설정으로 해결 할 수 있기도 하고, FNAT 설명시 알기 쉽기 위해 넣었다