본문으로 바로가기

NAT(Network Address Translation)란?

category Computer/네트워크(Network) 2019. 1. 19. 19:41

서론

'글로벌 유니크 주소(public ip)를 가지고 있어야 기기간 통신이 된다'
IPv4를 처음에 사용하다 90년대 중반에 IPv4로는 부족하다고 판단하여 IPv6를 만들어냄
IPv4 => 2^32 , IPv6 => 2^128

근데 왜 아직 IPv4를 사용할까? 왜 IPv6로  바꾸지 않았을까?

  1.  라우터를 바꿔야 한다. IPv4 이외의 형식은 쓰레기 취급을 당함
           기존은 IPv4만 인식할수 있다. 라우터 장비만 바꾸면 되는거 아닌가? 라우터가 한두개가 아니다. 누가 손해보면서 바꾸겠냐.

              But , 아무리 라우터가 비싸도 바꿔야한다면 교체하는게 맞는데 왜 안바꿀까?
                          => 바꾸지 않아도 잘 돌아가니까 ? 진통제를 맞으면서 작동은 하고 있다.

  1.  NAT를 사용해서 작동은 하고 있으니까


NAT(Network Address Translation)

: public ip와 private ip 간의 변환을 해주는 기술
: NAT은1개의 Public IP Address에 다량의 Private IP Address를 할당 및 매핑하는 주소 변환 방식




private ip는 내부적으로만 유일하다.
즉, 내부 패킷들이 외부로 나가면 돌아올수가 없다.
why? 외부에서는 public ip가 아니라서 인식을 못함

=> 패킷이 나갈때 게이트웨이 ip로 주소를 살짝 바꾼뒤 전송된다. 







Q)
  • 왜 port 번호까지 변경했을까?
    • public ip를 private ip로 바꿀때는 port를 본다.
    • 내부적으로는 같은 포트를 사용할수도 있다.
  • NAT 장점
    • IPv4의 주소 부족 문제 해결 (NAPT)
    • 보안성 강화
      • 내부 네트워크내의 Private IP 주소가 외부로 노출되는것을 막음으로써 직접 접근 및 해킹을 막을 수 있다. 
      • 방화벽(FireWall)과 결합하여 기능 수행
  • NAT을 사용하면 부작용은 없나?
    • 부작용이 존재한다.
      • 서버를 운영하고자 할때 문제가 될수있다.
        • 가설망에서 웹브라우징을 하는것은 문제가 없는것처럼 보인다.
        • 가설망에서 서버를 운영하고 싶다.
        • 기본적으로 서버는 외부의 요청이 있어야 응답이 있다.
        • 그렇기 때문에 외부에서 접속하려면 할수가 없다. 사설 ip이기 때문에
        • 게이트웨이 ip를 사용하면 되는거 아닌가? 그러나 table에 데이터가 없어서 찾아갈수가 없다.  table은 나갈때 기록이 되니까
        • 해결할 방법이 없나? 꼭 쓰고 싶다면 table에 기록해주면 된다. 이런걸 hole punching이라고 부른다.
        • 하지만 일반사람은 할수없다. (어떤 통신사에서 개인의 말을 들어주겠냐...)
        • 기본적으로 서버는 외부의 요청에 대한 응답을 전송한다. 즉, Public IP Address로 외부에서  내부에 접근하려하는경우. NAT Table에 기록이 없기 때문에, 서버의 주소(Private IP Address)를 찾아갈 수 없다.
        • 해결 방법 : Hole Punching / static NAT
      • OSI 7 계층에 위반될수 있다.
        • NAT은 패킷의 IP주소(혹은 Port번호까지)변경한다. 일반적으로 IP주소와 Port번호는 전송계층에서 end to end방식으로 지정하는데, 이를 다른 계층에서 수정하고 있기 때문에 문제가 발생 할 수 있다. end to end는 서버와 클라이언트를 말한다.
        • IP헤더의 IP주소와 Port 번호를 수정하기 때문에 IP헤더와 TCP 체크섬을 다시 계산해야 한다. 이로 인해 성능이 저하될 수 있다.


  • NAT의 종류
    • Static NAT
      • 하나의 Private IP 주소와 하나의 Public IP 주소를 1:1로 Mapping 시키는 방법, 변경시킬 주소를 미리 지정해 두었기 때문에 외부에서도 내부의 특정 기기로의 접속이 가능하다.
      • 서비스를 제공하는 입장(서버)에서 외부의 사용자들이 공인 IP주소로도 접근할 수 있도록 할때 사용한다.
    • Dynamic NAT
      • 여러개의 Private IP주소와 여러개의 Public IP 주소를 동적으로 Mapping시키는 방법, 외부 IP 주소를 Pool에 만들어 만들어 놓고, 그 중 사용하지 않는 IP를 동적으로 Mapping시킨다. 
      •  Private IP주소의 수보다 Public IP주소의 수가 적을때 사용한다.




    • NAT-PAT(NAPT)
      • Dynamic NAT의 한 종류로, 하나의 Public IP 주소를 다수의 Private IP주소가 공유하는 방식
      • 이 경우, Public IP주소만으로 Private IP주소를 구분할 수 없기 때문에 Port 번호를 함께 이용하여 Mapping시킨다.



'Computer > 네트워크(Network)' 카테고리의 다른 글

HTTP는 어떤것인가?  (0) 2019.02.08