IT Technology/Network

L4 스위치 쉽게 이해하기(Source IP NAT문제)

by빵수 2022. 1. 11. 17:39
728x90
반응형

L4 스위치 쉽게 이해하기(Source IP NAT문제) 대해서 알아보자

 

해당 문서 'L4 스위치 쉽기 이해하기'와 '서버 부하 분산 쉽게 이해하기', 다음에 이어질 문서인 'L4/L7 로드밸런싱 쉽게 이해하기'는 L4/L7 Network Swtich인 'F5 Networks' 장비를 기준으로 설명합니다.
Alteon(Radware), Brocade, Cisco, Piolink, Pumkin, Citrix, A10의 관점에서는 다소 다를 수 있습니다.

 

 

 

L4 스위치를 활용함에 있어서 L4 스위치 통과 시 사용자 IP를 L4 스위치의 IP로 변경하는 Source IP NAT 사용해야 하는 경우가 꽤 있다.

 

그리고 그 이유는 서버의(Gateway), Local Address Network(LAN) 그리고 MAC Address와 연관이 깊다.

그 이유에 대해서 먼저 살쳐보자.

 

 

L4 스위치에서 Source IP NAT가 필요한 이유

 

1. L4 스위치를 통한 3-way handshake는 모든 과정(SYN, SYN/ACK, ACK Packet은 반드시 L4 스위치를 통해서 실시해야 한다.

 

 

  • L4 스위치를 통한 3-way handshake는 모든 과정(SYN, SYN/ACK, ACK Packet은 반드시 L4 스위치를 통해서 이루어져야 한다.
  • 그렇지 않으면 제대로 된 Connection을 맺을 수 없으며 Perfomance L4 Type의 Virtual Server의 경우
  • SYN Packet을 받아 생성한 Connection을 삭제한다.

서버의 게이트웨이(Gateway)가 L4스위치가 아닌 다른 곳이라면?

 

 

 

  • 사용자가 서버에 접속하기 위해 L4 스위치를 통해 3-way handshake를 요청하는 상황을 표현한 그림이다.
  • 위의 그림에서 가장 두드러지는 특징은 서버의 트래픽이 외부로 나가는 관문 역할을 하는 게이트웨이(Gateway)가 L4 스위치가 아닌 다른 스위치로 설정되어 있다는 점이다.
  • 저게 대체 무슨 구성인가 하는 생각이겠지만 L4스위치가 다운되더라도 외부와 서버의 통신이 유지되도록 하고자 할 때 많이 사용하는 구성이다.

(네트워크 구성 중 하나인 'One-Arm' 구성을 보기 쉽게 하기 위해 약간 틀어서 그렸음)

 

 

  • 사용자가 서비스 접속을 위해 SYN Packet을 L4스위치에 보낸다.
  • 그럼 L4 스위치는 이 SYN Packet을 받아 서버에게 넘겨준다.
  • 서버는 SYN Packet을 받고 SYN/ACK Packet을 사용자에게 전달하려 한다.
  • 그런데 서버의 게이트웨이가 L4스위치가 아닌 백본 스위치(Backbone Switch)가 된다면 SYN/ACK Packet은 백본 스위치로 이동한다.
  • 그리고 백본 스위치와 외부 인터넷을 거쳐서 사용자에게 전달된다.

 

  • 이 시점에서 L4 스위치는 분명 사용자가 전달한 SYN Packet을 전달했지만 서버에게서 SYN/ACK Packet을 받지 못했다.
  • 그런데 이미 SYN/ACK Packet 받은 사용자가 ACK Packet을 L4 스위치에게 전달한다.
  • L4 스위치는 SYN/ACK Packet을 받지 못했음에도 사용자로부터 ACK Packet을 받았다.
  • 그리고 L4 스위치는 이 Packet 을 드랍(Drop)한다.
  • 이유는 3-way handshake가 제대로 이루어지지 않았다고 판단하였기에 아래 사진과 같은 상황이 나타난다.

 

'SYN Packet' 이후 느닷없이 나타난 'ACK Packet'을 드랍(Drop)하는 L4 스위치

 

위의 그림에서는 ACK Packet을 드랍하는 L4 스위치를 볼 수 있다.

이렇게 되면 사용자와 서버는 제대로 된 Connection을 맺지 못할 것이니 통신이 불가능한 상황에 놓이게 된다.

이것이 첫 번째 이유이며, 이런 비슷한 상황이 벌어지는 Case가 하나 더 있다.

 

 

2. Locak Address Network(LAN)에서의 통신은 IP 뿐만 아니라 MAC Addess를 이용해 이루어진다.

 

  • Local Address Network(LAN)에서 단말과 단말 간 통신 시 출발지와 목적지는 IP뿐만 아니라 MAC Address를 이용한다.
  • 출발지와 목적지를 IP로 지정하면 ARP Table에 일대일 매칭 된 IP, MAC Address를 확인하고 목적지 IP, MAC Address를 향해 나아간다.
  • 보통 아래와 같은 구성에서 발행하는 문제이다.

L4 스위치가 서버와 백본 스위치(서버의 게이트웨이) 중간에 위치할 경우

 

  •  L4 스위치가 서버와 백본 스위치(서버의 게이트웨이) 중간에 위치하고 있다.
  • 그리고 L4 스위치, 서버, 백본 스위치(서버의 게이트웨이)는 하나의 Local Address Network(LAN)에 소속되어 있다.
  • 그럼 지금부터 문제가 되는 부분인 SYN/ACK Packet 전달 과정을 확인해보자.

 

 

 

서버로 부터 받은 SYN/ACK이 사용자에게 전달되는 과정

 

  • 먼저 서버에 접속하고자 하는 사용자로부터 SYN Packet을 받은 L4 스위치는 이 SYN Packet을 서버에게 전달한다.
  • 이때 출발지와 목적지 정보는 다음과 같다.

 

 

  • 이제 서버는 SYN/ACK Packet을 사용자에게 전달하기 위해 백본 스위치(서버의 게이트웨이)를 목적지로 잡고 Packet을 전달한다. 
  • 이때 출발지, 목적지 정보는 아래와 같다.

 

  • 서버는 위 정보를 가진 Packet을 L4 스위치를 경유하여 백본 스위치에 전달한다.
  • 그리고 L4 스위치는 Packet을 보고 Destination IP, Destination MAC 모두 자신에 해당하지 않으므로 백본 스위치로 SYN/ACK Packet을 그대로 Forwarding 한다. (서버의 게이트웨이로 보내기 때문)
  • 그리고 백본 스위치는 이 Packet을 받아 사용자에게 전달한다.

 

여기서 중요한 점은 L4 스위치는 SYN/ACK Packet의 목적지 정보에 자신의 IP, MAC 모두 해당하지 않으므로 직접 처리 지 않은 점이다.

 

서버의 목적지 정보에 Destination IP, Destination MAC도 해당 없는 L4 스위치

 

  • L4 스위치가 직접 Packet을 처리하기 위해서는 Packet의 목적지 정보 (IP or MAC)가 L4 스위치를 가리키고 있어야 한다.
  • 다시 말하면 위의 상황에서는 이 Packet이 SYN/ACK Packet이라는 것을 모르는 상태에서 그저 전달한 했다는 이야기다.
  • 그리고 SYN/ACK Packet을 받아 든 사용자는 다시 ACK Packet을 L4 스위치로 보낼 것이고, L4 스위치는 아직 SYN/ACK Packet을 받지 못했다고 생각하기에 ??? 반응을 보이며 이 Packet을 드랍시킨다.

 

 

 

ACK Packet을 드랍시키는 L4 스위치

 

위의 그림처럼 ACK Packet을 드랍하기 때문에 사용자와 서버는 Connection을 맺을 수 없게 된다.

이렇듯 백본 스위치(서버의 게이트웨이)와 서버 사이에 L4 스위치가 있고 L4 스위치를 지난다 하더라도 Connection이 맺어지지 않는 현상이 발생할 수 있다.

 

지금까지 L4 스위치에서 Source IP NAT가 필요한 2가지 문제점에 대해서 알아보았다.

 

 

 

 

 

 

출처

https://aws-hyoh.tistory.com/entry/L4-%EC%8A%A4%EC%9C%84%EC%B9%98-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-5

 

L4 스위치 쉽게 이해하기 #5(Source IP NAT 문제)

이번 문서 'L4 스위치 쉽기 이해하기'와 '서버 부하 분산 쉽게 이해하기', 다음에 이어질 문서인 'L4/L7 로드밸런싱 쉽게 이해하기'는 L4/L7 Network Swtich인 'F5 Networks' 장비를 기준으로 설명합니다. Alteo

aws-hyoh.tistory.com

 

반응형