네트워크

13. NAT

YJH3968 2021. 7. 5. 13:57
728x90

1. NAT

  • 일반적인 기술 용어로 구현 방식이나 작동 방식은 다를 수 있다.
  • network address translation
  • 보통 router나 firewall인 게이트웨이가 전송하는 IP datagram의 source IP를 기존 IP를 보유한 채로(이는 후에 응답 시 반영을 위함) 변경하는 것
    ex) 10.1.1.0 network A 내의 10.1.1.100의 컴퓨터가 192.168.1.0 network B 내의 192.168.1.100의 컴퓨터의 웹 서버에 packet을 전송할 때 처음 IP datagram의 source IP는 10.1.1.100이나 packet이 router에 도착하고 이를 다시 전송할 때 source IP를 network B의 router의 IP인 192.168.1.1로 바꾼다. 이를 받은 컴퓨터가 응답을 router에 보내면 router는 보관하고 있던 기존 IP인 10.1.1.100을 destination IP로 변경해 응답을 정상적으로 보낸다.
  • 이를 통해 요청하는 컴퓨터의 IP를 요청받는 컴퓨터로부터 숨길 수 있다.
  • 이를 IP masquerading(IP 가장(가장 무도회할 때 가장))이라 한다.
  • NAT를 이렇게 사용함으로써 network A의 수백 대의 컴퓨터의 IP를 외부에서 못 보게 한다. (이를 one-to-many NAT이라 한다)

2. NAT & Transport Layer

  • one-to-many NAT에서 수백 대의 컴퓨터가 전송하는 트래픽을 NAT를 통해 하나의 IP로 변경할 수 있었다. 그런데 회신 트래픽의 경우, 수백 개의 응답이 각각 어떤 컴퓨터로 향해야 하는지 판별해야 하는데, 이 때 사용할 수 있는 방법이 바로 port preservation(port 보존)이다.
  • port preservation
    • 클라이언트에 의해 결정된 source port를 router가 동일하게 사용하는 기술이다.
    • 외부로 전송하는 트래픽은 source port를 임시 port(49152~65535)에서 결정하는데, router는 이 source port를 추적해 후에 받은 응답을 적절한 컴퓨터로 보내기 위해 이를 사용한다.
    • ex) 10.1.1.100의 IP를 가진 장치가 외부로 연결을 시작하고 운영체제의 networking stack이 연결을 위해 port 51300을 선택했다 하자. 외부 연결이 router에 도착하면 NAT를 시행해 IP를 교체하고 TCP datagram의 source port는 남겨두고 이 data를 table에 저장한다.
      후에 트래픽이 router의 port 51300로 돌아오면 이를 IP 10.1.1.100으로 보낸다.
    • 만약 두 다른 컴퓨터가 같은 source port를 선택한 경우 router는 랜덤으로 미사용 중인 port를 골라 사용한다.
  • port forwarding
    • 특정 destination port가 특정 node로 항상 전달되도록 구성하는 기술
    • ex) 10.1.1.5의 IP를 가진 웹 서버가 있을 때 port forwarding이 있으면 아무도 이 IP를 몰라도 되고, 웹 브라우저는 router의 외부 IP만 알고 있어도 된다. 해당 router의 IP와 port 80으로 향하는 모든 트래픽은 10.1.1.5에 자동으로 향하게 된다.
    • 이 기술은 IP 가장뿐만 아니라, 외부 사용자가 같은 단체의 많은 서비스와의 상호작용을 간단하게 해 준다. 즉, 같은 외부 IP, 즉 같은 DNS 이름을 가리키고 있어도 destination port에 따라 다른 내부 서버로 향하게 한다.

3. NAT, non-routable address space, 그리고 IPv4의 한계

  • IANA는 IP 주소를 1988년부터 분배하고 있었으나 인터넷의 급격한 성장으로 IPv4에 해당하는 주소를 사실상 다 써버리게 된다.
  • 그래서 IPv6를 도입해 이 문제를 해결하고 있다. 하지만 이는 시간이 걸린다.
  • 이에 NAT와 non-routable address space를 이용한다.
    non-routable address space는 누구나 쓸 수 있는 IP 범위를 만들어 이 주소 공간을 쓰는 사람들 간의 IP 주소 충돌이 일어나지 않도록 한다.
    그리고 이에 더해 NAT 기술을 동원해 수백의 컴퓨터에 대해 하나의 공용 IP로 트래픽을 인터넷과 주고받을 수 있다.
  • 이는 완벽한 해결은 아니지만 IPv6가 전세계적으로 사용 가능하기 전까지는 이를 이용해야 한다.
728x90