NAT(Network Address Translation)

종원유·2021년 12월 22일
0

Network

목록 보기
3/10
post-thumbnail

NAT(Network Address Translation - 네트워크 주소 변환)

IP 패킷에 있는 출발지 및 목적지의 IP주소와 TCP/UDP 포트 숫자 등을 바꿔 재기록하면서 네트워크 트래픽을 주고받게하는 기술.

NAT를 쓰는 이유
IP주소 절약
하나의 공인 IP 주소를 사용하여 여러 대의 호스트가 인터넷에 접속할 수 있다.
예를 들면 집에 인터넷공유기를 통해서 여러 PC를 연결하여 사용한다.(공유기에 NAT기능이 탑재되어 있기 때문)
부족한 공인 IP를 절약할 수 있는 효과가 있다.

보안
NAT 동작의 특성상 IP를 숨길 수 있는 기능이 있다.
라우터가 외부로 트래픽이 나갈 때는 사설 IP가 공인 IP로 바뀌므로 외부가 사설 IP주소를 모르게 됨으로써 내부 네트워크 및 호스트들을 보호할 수 있다.

사설 IP 대역
10.0.0.0 ~ 10.255.255.255 : A클래스
172.16.0.0 ~ 172.31.255.255 : B클래스
192.168.0.0 ~ 192.168.255.255 : C클래스

동작원리
인터넷 공유기를 통해 외부에 있는 웹 서버로 접근하는 경우
해당 요청 패킷은 반드시 해당 공유기를 거치게 되어있다.
이 때, 출발지의 사설망IP가 그대로 외부로 나갈 경우 웹 서버에서는 알수없는 IP로 인식하여 패킷을 어디로 전송할지 모르게 된다.

Example

  • 사설 IP : 10.0.0.1
  • 공인 IP : 150.150.0.1
  • 웹 서버 : 200.100.10.1

그래서 NAT는 패킷 헤더에 출발지와 목적지의 주소를 기록한다. 이 때, 출발지는 자신의 IP 주소를 기록하고, 목적지는 목적지의 웹 서버 주소를 기록한다.

  • 출발지 IP(사설) : 10.0.0.1
  • 목적지 IP(웹 서버) : 200.100.10.1

게이트웨이(라우터가 나갈 때 거치는 통로 ex)공유기 )에서는 외부로 나가는 패킷을 인식하게 되면, 출발지의 IP주소를 공인 IP주소로 변경하고,
별도의 NAT 테이블에 프로토콜, 사설 IP주소, 출발지 IP주소, 목적지 IP주소를 기록하여 보관한다.

NAT 테이블
프로토콜 : TCP
사설 IP : 10.0.0.1
공인 IP : 150.150.0.1
목적지 주소 : 200.100.10.1

웹 서버에서 수신한 데이터를 처리한 후, 응답하여 보내는 패킷에 출발지와 목적지의 IP 주소를 기록하여 보낸다. 이 때 목적지의 IP 주소는 호스트의 기본 게이트웨이 공인 IP주소로 보낸다.

  • 출발지 IP주소 : 200.100.10.1
  • 목적지 IP주소 : 150.150.0.1

호스트의 기본 게이트웨이에서 웹 서버가 보낸 패킷을 받으면, 기록해두었던 NAT테이블을 참조하여 최종 목적지(사설IP)로 변경하여 해당 호스트로 패킷을 전달한다.

  • 출발지 IP 주소 : 200.100.10.1
  • 목적지 IP 주소 : 150.150.0.1 -> 10.0.0.1 (변경)

하지만, 사설 네트워크에 한 대의 호스트가 아닌 여러 대의 호스트가 같은 목적지와 통신하고자 할 때, 되돌아오는 패킷의 최종 목적지가 어디가 되어야 하는지 모르는 혼선이 생길 수 있다.
이를 해결하귀 위해서는 별도의 추가 포트를 설정해서 패킷을 구분하는 PAT(NAPT)방식을 사용해야한다.

참고 사이트 : https://www.stevenjlee.net/2020/07/11/%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-nat-network-address-translation-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%A3%BC%EC%86%8C-%EB%B3%80%ED%99%98/

profile
개발자 호소인

0개의 댓글