L4/L7 스위치의 NAT 방식 중에서 NAT 모드는 Destination NAT로서 클라이언트가 전송한 패킷의 목적지 IP 주소를 L4/L7 스위치의 VIP(가상 IP) 주소에서 서버의 IP로 변환하여 서버로 전송하고 서버가 전송하는 응답 패킷의 출발지 주소를 서버의 IP주소에서 L4/L7 스위치의 VIP로 변환하여 클라이언트에 전송하는 역할을 수행한다.
위 그림은 NAT 모드로 설정된 L4/L7 스위치의 클라이언트와 서버 간 송수신되는 패킷의 출발지/목적지 주소가 변환되는 과정을 보여주는 그림이다. 이를 순서대로 살펴보면 다음과 같다.
1. L4/L7 스위치는 클라이언트의 요청 패킷을 수신한다. 해당 패킷을 확인해 보면 DIP(Destination IP) 주소가 부하 분산 서비스를 요청하는 VIP(Virtual IP Address) 주소인 것을 확인할 수 있다.
2. L4/L7 스위치는 클라이언트의 요청을 서버에 전달하기 위해 SMAC(Source Media Access Control)을 자신의 MAC으로 변경하고 NAT를 수행하여 DIP와 DMAC(Destination Media Access Control)을 서버의 IP 주소와 MAC으로 변환한다.
3. 서버는 클라이언트의 요청을 처리한 이후 SIP(Source IP) 주소와 SMAC을 DIP주소와 DMAC으로 변환하여 전송한다.
클라이언트는 L4/L7 스위치의 VIP로 서비스를 요청하고 L4/L7 스위치가 NAT를 수행하기 때문에 외부에서는 서버의 IP 주소를 알 수 없다.
DNAT의 한계
L4/L7 스위치에서 DNAT를 사용하는 경우 같은 대역에 있는 서버와 클라이언트 간에는 DNAT를 수행할 수 없다. 해당 이유는 3. NAT와 하드웨어 구조에서 확인한 바와 같이 L4/L7 스위치는 VLAN이 변경되는 과정에서 CPU로 패킷을 전달하기 때문에 응답 패킷을 CPU가 확인할 수 없어 리버스 NAT가 수행되지 않는다.
위 그림은 동일 대역에 있는 서버 간에 서비스를 요청하는 경우 패킷의 송수신을 출발지/목적지 주소가 변환되는 과정을 보여주는 그림이다. 1번 2번 과정은 정상적인 NAT과정과 동일하다. 하지만 문제가 되는 3번 과정을 보면 2가지 문제가 발생할 수 있다.
3-1. L4/L7 스위치에서 DMAC이 자신의 MAC이지만 CPU로 전달되지 않아서 리버스 NAT가 처리되지 않는 문제
3-2. 서버 1이 ARP를 통하여 서비 2의 정보로 변경하여 전송하기 때문에 L2 통신을 수행하여 리버스 NAT가 처리되지 않는 문제
결론
1. NAT 모드는 패킷의 목적지 정보를 변경하여 전송되는 방식이다.
2. NAT 모드는 외부에서 서버의 IP 주소를 알 수 없는 장점이 있다.
3. NAT 모드는 동일 VLAN에선 서비스를 제공하지 못하는 한계가 있다.
이번 포스팅에서는 L4/L7 스위치의 NAT 방식 중 가장 많이 사용하는 DNAT에 대하여 알아보았습니다. 다음 포스팅에서는 DNAT의 한계를 극복하기 위한 FNAT에 대하여 알아보겠습니다.