NAT 와 PORTFORWARDING
NAT(Network Address Translation)
NAT(Network Address Translation)은 여러 대의 호스트가 하나의 공인 IP 주소를 공유하여 인터넷에 접속할 수 있도록 하는 기술이다. 공인 IP 주소 고갈 등의 문제가 있는 배경에서, 내부 네트워크에서 사용되는 IP 주소를 공인 IP 주소로 변환해주는 역할을 하는 것이다.
NAT 테이블
특정 출발지 IP와 특정 목적지 IP를 가진 네트워크 패킷이 NAT를 통해 변환되게 되면 NAT 테이블에 기록하고 해당 패킷이 다시 돌아왔을 때 기록해둔 내용을 보고 원래의 출발지 경로로 패킷을 보내준다.
-> 사설 네트워크 대역(ip 대역)에 pc나 노트북 이런 기기들이 통신할 때 공인 ip로 변경이 돼서 통신을 함 마찬가지로 웹서버 쪽에 있는 사설 ip대역에서도 통신할 때 공유기에 할당된 공인 ip로 통신을 하게 됨 -> 실제 바깥 세상에서는 공유기가 통신하는 것처럼 보이지만, 공유기 안의 NAT 테이블이라는 곳에 A라는 컴퓨터가 며칠 몇 시에 밖으로 나갔다 등의 정보를 기록해두고, 들어올 때 이 NAT 기록이 있고, 그 요청에 대한 응답이 들어올 때만 들어올 수 있는 것이다.
-
NAT(Network Address Translation)은 IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술을 말한다.
⇒ NAT는 3, 4계층의 TCP/UDP 포트 정보를 가지고 있는 IP 패킷을 재기록하는 기술, 특정 ip 주소의 특정 포트 번호로 가는 패킷을 다른 ip주소의 다른 포트 번호로 바꿔주는 것(출발지와 목적지 주소를 바꿈)
- 패킷에 변화가 생기기 떄문에 IP나 TCP/UDP의 체크섬(checksum)도 다시 계산되어 재기록해야 한다.
- NAT를 이용하는 이유는 대개 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함이다.
- 하지만 꼭 사설IP를 공인IP로 변환 하는 데에만 사용하는 기술은 아니다.
NAT를 쓰는 이유
1) IP 주소 절약
NAT 기술을 이용하면, 하나의 공인 IP주소를 사용하여 여러 대의 호스트가 인터넷에 접속할 수 있따. 예를 들어 대부분의 경우에 집에 인터넷 회선을 개통하고 인터넷 공유기를 설치해서 여러 PC를 연결하여 사용하는데, 이러한 방법이 가능한 이유가 인터넷 공유기에 NAT 기능이 탑재되어 있기 때문이다. 따라서 부족한 공인 IP를 절약할 수 있는 효과가 있다.
2) 보안
NAT 동작의 특성상 IP를 숨길 수 있는 기능이 있다. 예를 들어, 라우터(또는 공유기 등) 외부로 트래픽이 나갈 떄는 사설 IP가 공인 IP 주소로 바뀌므로 공격자가 라우터 안 쪽에 있는 사설 IP를 모르기 때문에 최종 먹적지로의 공격이 어려워져 내부 네트워크 및 호스트들을 보호할 수 있다.
포트포워딩(Port Forwading)
포트포워딩(Port Forwarding)은 NAT의 응용 기술 중 하나로, 외부에서 내부 네트워크로 들어오는 통신 요청에 대해, 특정 포트 번호와 연결된 내부 호스트로 전달하는 기술이다. 즉, 외부에서 내부 네트워크로의 접근을 허용하기 위해 사용되며, 특정 서비스에 대한 요청을 내부 호스트로 전달함으로써 내부 호스트에서 해당 서비스를 제공할 수 있게 된다.
이를 예를 들어 설명해보면, 내부 네트워크에서 웹서버를 운영하고 있다고 가정봤을 때, 외부에서 웹서버에 접속하기 위해서는 공인 IP 주소와 포트 번호를 입력해야 한다. 하지만 NAT 기술로 인해 내부에서는 공인 IP 주소를 사용하지 않기 때문에, 외부에서 접속할 수 없다. 이를 해결하기 위해 Port Forwarding 기술을 사용하면, 외부에서 공인 IP 주소와 특정 포트 번호로 접속하면, 해당 포트 번호와 연결된 내부 호스트인 웹서버로 요청이 전달되어 웹서비스를 이용할 수 있는 것이다.
-> 사설 IP 대역에 있는 컴퓨터가 보이지 않는 네트워크 대역의 컴퓨터로 직접 통신을 하고 싶은 것. 사설 네트워크 대역에서 서버 쪽으로 먼저 들어가고 싶은 것이다. 클라이언트가 요청을 먼저 보내고 싶은데, 보이지 않는 것.
직접 컴퓨터의 IP를 치는 것이 아니라, 공유기의 공인 IP로 보내고, 공유기의 포트포워딩 설정을 해놓는 것
-> 패킷을 보낼 때, 공인 IP의 특정 포트로 전송을 하는 것이다. 포트는 정해져있지 않고, 포트포워딩을 설정하는 관리자 마음이다. 공유기에 할당된 주소로 보내는 것이고, 공유기가 특정 포트로 들어온 요청을 다른 특정 IP 포트로 전송을 하는 것이다.
-
포트 포워딩 또는 포트 매핑(port mapping)은 패킷이 라우터나 방화벽과 같은 네트워크 장비를 가로지르는 동안 특정 IP 주소와 포트 번호의 통신 요청을 특정 다른 IP와 포트 번호로 넘겨주는 네트워크 주소 변환(NAT)의 응용이다.
⇒ 일반적으로 서버가 사설 네트워크 대역에 있을 때 그 대역을 설정하는 공유기라던가 라우터라던가 이런 3계층 장비에서 제공을 해주는 기능이다
-
이 기법은 게이트웨이(외부망)의 반대쪽에 위치한 사설네트워크에 상주하는 호스트에 대한 서비스를 생성하기 위해 흔히 사용된다.
NAT와 포트포워딩 비교
NAT와 포트포워딩은 비교적 유사한 기능을 수행하지만, NAT는 사설 IP 주소를 공인 IP 주소로 변환하는 전반적인 기능을 수행하는 반면, 포트포워딩은 특정 포트로 들어오는 요청을 내부 네트워크에 있는 특정 기기로 전달하는 기능에 초점을 맞추고 있습니다. 따라서 NAT는 인터넷에 연결된 여러 대의 기기가 하나의 공인 IP 주소를 공유하여 사용할 수 있도록 하는 데 사용되고, 포트포워딩은 외부에서 내부 네트워크에 있는 특정 기기에 접속해야 하는 경우에 사용됩니다.