NAT(Network Address Translation) 란?

아현·2022년 12월 22일
0

네트워크

목록 보기
1/1

출처

사설망(Private Network)탄생


  • Private Network(사설망)는 IPv4 중 특정 대역을 공인 인터넷이 아닌 가정, 기업 등의 한정된 공간에 사용한 네트워크를 의미합니다.

  • 사설망에 소속된 IP인 사설 IP 대역은 다음과 같으며 오로지 사설망(내부망)에서만 사용 가능하기 때문에 공인망(외부망, 인터넷)에선 사용할 수 없습니다.

  • 사설망과 공인망이 사용하는 IP에 따라 분리되면서 공인망과 사설망의 경계에서 별도의 조치를 취해야 할 필요성이 생겼습니다.

    • 사설망에서 공인 인터넷으로 나가고자 할 때 자신의 출발지 IP(Source IP)를 사설 IP 그대로 쓸 수 없기 때문입니다.

      • 사설 IP는 사설망에서만 사용하도록 규정한 만큼 공인 인터넷에서 사설 IP를 쓸 수 없지요.

      • 사설 IP는 사설망이라면 어디에서든 쓸 수 있기 때문에 자신의 IP(Source IP)를 사설 IP로 유지한 채 공인 인터넷로 나간다면 자신이 왔던 길을 찾지 못한 채 영영 돌아오지 못할 것입니다.

      • 그렇기에 사설 IP를 공인 IP로 변환할 필요가 있습니다.


  • IP를 변환하는 것은 사설망과 공인망의 통신에서만 필요한 것이 아닙니다.

    • 자사의 사설망(내부망)과 전용 회선(Leased Line)을 통해 대외사의 사설망(내부망)을 연결할 경우, 이 경우의 통신에서도 IP를 변환해야 할 필요가 많습니다.

    • 자신의 실제 IP를 노출시키지 않아야 하거나 반대편 기업의 실제 IP로 목적지 IP를 변환하여야 할 필요가 있을 때 사용합니다.

      • 소위 '대외망'라 불리는 결제 대행사(금융 공동망)와 유통회사의 통신이 대표적입니다.
  • 이에 IP를 변환하기 위한 방법을 고안한 것이 바로 Network Address Translation(NAT)입니다.



NAT 란?


  • NAT(Network Address Translation)는 IP 주소 혹은 IP 패킷의 TCP/UDP Port 숫자를 변환 및 재기록하여 네트워크 트래픽을 주고받는 기술을 의미합니다.

    • 사설망에서 공인망으로, 공인망에서 사설망으로 통신하고자 할 때 공인망/사설망에서 사용하는 IP로 변환하는 것을 의미한다고 볼 수 있습니다.
  • 여기서 IP 주소뿐만 아니라 IP 패킷의 TCP/UDP Port 숫자를 변환한다고 말한 이유는 실제로 NAT 의미가 IP 주소뿐만 아니라 Port(이하 포트)까지 변환시켜 사용하는 것을 포함하기 때문입니다.

    • 이를 Port Address Translation(이하 PAT 또는 NAPT)라고 부릅니다.



예시


  • 사용자 1(10.10.10.10/24)이 공유기를 통해 공인망에 존재하는 웹 서버(125.209.22.142:80)에 접속하려고 합니다.

  • 사용자 1은 사설 IP를 보유하고 있기 때문에 공인망으로 나아가기 위해서는 자신의 사설 IP를 공인 IP로 반드시 변환(NAT)해야 합니다.

    • 이를 NAT Device(이하 NAT 장비, 공유기 등)가 수행하게됩니다.

① 사용자가 웹 서버에 접속하기 위해 NAT 장비(Gateway)에 패킷을 보내는데 IP/Port 정보는 첫 번째 표와 같습니다.

② 이를 받아든 NAT 장비가 자신에게 허용된 규칙을 확인하고 공인망의 웹서버에게 보내기 위해 사용자의 사설 IP를 자신의 공인 IP로 변환하여 웹서버에게 전달합니다.

  • 정확히 말하면 공인망에 맞닿아 있는 자신의 인터페이스 IP로 변환하는 것이죠.

③ 웹서버가 사용자가 보낸 요청을 처리하고 응답을 사용자에게 보냅니다.

  • 그렇기 위해서는 출발지와 목적지가 뒤바뀌어야합니다.
  • 응답 패킷을 받아든 NAT 장비가 과거 사용자가 보낸 요청에 대한 응답임을 기억(Stateful)합니다.

④ 목적지 IP를 공인 IP에서 사용자의 실제 사설 IP로 변환하여 전달합니다.



  • NAT 장비에 할당된 공인 IP는 하나이지만 사용자는 2명입니다.

    • 사용자 1이 자신의 출발 포트를 9999로 지정하여 NAT 장비에 전송했음을 위 과정을 통해 알 수 있었죠. 그런데 동시에 사용자 2도 자신의 출발 포트를 9999로 설정하여 전송한다면 어떻게 될까요? 패킷이 공인망으로 나아갈 땐 문제가 없겠지만 되돌아올 때 문제가 발생하겠죠.(③)

      • 목적지가 공인 IP이고 포트는 9999인데 이게 사용자 1인지 사용자 2인지 구분할 수 없습니다.

  • 이에 사용되는 것이 PAT(Port Address Translation)입니다.

    • 애초에 사용자 1과 사용자 2로부터 패킷을 전달받아 사용자의 IP에 대해 NAT 장비가 NAT를 실시할 때 출발지 포트를 임의로 변경하는 것입니다.

      • 사용자 1의 출발지 포트를 10000으로 바꾸고, 사용자 2의 출발지 포트를 20000으로 바꾼다면 공인 IP는 하나이지만 사용자마다 포트로 구분할 수 있으니 문제가 해결됩니다.

  • 위 그림을 보시면 사용자 1에게 받은 패킷은 출발지 포트를 10000로 변환하여 구분한 것을 알 수 있습니다.(②) 그리고 패킷이 되돌아 올 때 변경된 목적지 포트를 보고 포트 10000은 사용자 1임을 구별할 수 있게 되겠죠.(③)

PAT는 출발지 포트 변경 시에는 오로지 이 용도로만 사용되기 때문에 기억해두시는 것이 좋습니다.



  • NAT에는 목적지의 IP 변경도 존재합니다.

    • L4 스위치의 목적지 IP NAT가 가장 대표적



Session Table & Stateful


  • NAT를 수행하는 네트워크 장비의 종류는 매우 다양합니다.

    • 주로 관문 역할(Gateway)을 하는 네트워크 장비가 주로 NAT를 수행

    • 가정에서는 공유기가 내부망과 공인망의 경계에서 NAT를 실시

    • 기업에서는 과거 라우터가 이 역할을 자주 맡았으나 요즘에는 방화벽, VPN, L4 스위치 등이 이 역할을 수행

  • 공인망에 노출되는 관문에 해당하는 장비인만큼 보안 기능을 곁들인 장비는 맡는 것이죠.

  • NAT를 수행하는 장비들은 자신에게 설정된 규칙(Rule)에 따라 허용/거부를 판단하고, NAT를 실시하고 이를 기록

    • 이를 수행하는 장비들을 보통 Session 장비(이하 세션 장비)라고 부르며 NAT를 실시한 내역을 기록한 테이블을 Session Table(이하 세션 테이블)이라고 부릅니다.

  • 위에서 언급했던 NAT와 PAT 과정에서 생성된 세션 테이블을 표현한 그림입니다.

    • 첫 번째 예시에서는 사용자 1의 세션 테이블에는 어떠한 IP와 어떠한 Port로 NAT/PAT되어있는지 기록되어있습니다.

      • 공인 IP가 1개뿐인지라 사용자별로 출발지 포트를 구분하여 기록
    • 두 번째 예시에서는 L4 스위치를 거쳐 실제 서버로 Request가 유입되면서 목적지인 실제 서버의 사설 IP로 NAT된 것이 세션 테이블에 반영

  • 보통 세션 장비에 정해진 Rule(이하 규칙)에 의해 허용된 IP만이 NAT를 실시할 수 있고 세션 테이블에 이름(Session, 이하 세션)을 올릴 수 있게 됩니다.

    • 주로 방화벽과 같은 장비가 이러한 작업을 수행하죠. 그리고 테이블에 기록된 IP는 규칙에 의해 나가거나/들어온 뒤 다시 들어오거나/나갈 수 있습니다.

      • 즉 규칙에 의해 한 번 허용이 된 패킷(Request)은 반대 방향(Response)에 대한 정책을 별도로 수립할 필요 없이 테이블에 기록된 세션을 보고 네트워크 장비가 통과시킨다는 것을 의미하죠.

      • 이러한 특성을 Stateful이라고 합니다.

profile
For the sake of someone who studies computer science

0개의 댓글