✔️ NAT (Network Address Translation) 이란 ?
- NAT이란 IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술을 말한다.
- public outside address와 private inside address 사이에서 border router로서의 역할을 한다.
- 내부망에서는 Private IP주소를 사용해 통신을 하고 외부망과의 통신시에는 NAT을 거쳐 Public IP주소로 자동 변환한다.
- 대부분 여러대의 호스트가 하나의 Public IP주소를 사용해 인터넷에 접속하기 위해 사용한다.
✔️ NAT 작동 원리
1. 공유기에 연결된 컴퓨터들은 각각의 사설 아이피를 부여받는다.
2. 우리가 www.naver.com 에 접속하고 싶으면 컴퓨터는 Gateway Address에 해당되는 IP 머신(공유기)에 신호를 보낸다.
3. 신호를 받은 공유기는 네이버에 요청을 보낸다.
1. 먼저 누가 요청했는지 알기 위해 요청을 시도한 사설망의 사설 ip를 기록한다.
2. 요청한 컴퓨터 ip는 외부에서 접속할 수 없는 사설 ip이므로 사설 ip를 공유 ip로 변환한다.
4. 이제 공유기는 이 요청을 공인 ip주소로 네이버에 요청하고 네이버는 그 요청을 처리한다.
5. 그리고 다시 공인ip로 보내고 공유기에서 다시 사설 ip로 보내 통신을 완료한다.
✔️ NAT 종류
- 1:1 NAT
사설IP 1개당 공인IP 1개로 매칭시킨다.
- 1:N NAT
여러개의 사설IP가 1개의 공인IP를 사용하는 것
여러개의 사설 IP를 1개의 공인IP로 NAT 시켜주는데 Port Pool을 이용해 NAT 시켜주는 것을 말한다.
192.168.0.1이 Google DNS 서버로 쿼리를 날리려 한다.
Firewall은 192.168.0.1에 대해 NAT table을 참조해 NAT을 시켜준다.
공인IP는 부족하기 때문에 공인 IP 중 일부 자리(60001번 포트)를 빌려주게 된다.
이때, 192.168.0.2 도 Google DNS 서버에게 쿼리를 날리려 한다.
Firewall은 마찬가지로 NAT table을 참조해 공인 IP로 변경시켜주려 한다.
192.168.0.1과 다르게 60002번 포트를 사용한다.
Google DNS 서버는 각각 201.80.7.22:60001과 201.80.7.22:60002에서 온 패킷을 처리해준다.
Google DNS 서버로부터 받은 응답을 확인한 Firewall은 다시 NAT table을 확인한다.
N:1 PAT기능을 이용해 여러개의 사설IP가 한개의 공인IP로 Portpool을 이용해 통신할 수 있다.
하지만 1개의 공인 IP를 여러개의 사설 IP가 사용하고 있기 때문에 먼저 내부에서 외부로 나가는 통신이 아닌 먼저 외부에서 공인IP로 통신을 시도하였을 때 중간에서 NAT를 시켜주는 Firewall와 같은 장비에서 어느 사설 IP에게 전달해주어야 할지 알 수가 없으므로 PAT의 경우는 외부에서 내부로 먼저 통신을 시도 할 수가 없다.
✔️ NAT 장단점
장점
1. 인터넷의 Public IP 주소 절약
인터넷의 공인 IP주소는 한정적이므로 NAT을 이용하여 공인 IP주소를 다수가 함께 사용할 수 있도록 한다.
2. 인터넷이라는 공공망과 연결되는 사용자들의 고유한 사설망을 침입자로부터 보호
공개된 인터넷과 사설망 사이에 방화벽(Firewall)을 설치해 외부 공격으로부터 사용자의 통신망을 보호하는 기본적인 수단으로 활용할 수 있다. 외부 침입자가 공격하기 위해서는 사설망의 내부 사설 IP주소를 알아야하기 때문에 내부 네트워크를 보호할 수 있다.
단점
1. end-to-end 간의 추적(IP trace)이 어려워진다.
여러개의 NAT 라우터에 의해 multiple NAT이 적용되었을 경우 경로 추적이 더욱 어려워지는데 보안성이 높아진다는 장점이 될 수도 있다.
2. 또한 NAT 라우터를 거치는 모든 패킷을 scan하므로 switching path delay가 커지게 된다.
🔗 참고
'CS > 네트워킹' 카테고리의 다른 글
[네트워킹] FTP (File Transfer Protocol) (0) | 2022.03.22 |
---|---|
[네트워킹] Proxy (프록시)란 ? (0) | 2022.03.18 |
[네트워킹] DNS(Domain Name System) (0) | 2022.03.08 |
[네트워킹] 대칭키(비밀키) & 공개키(비대칭키) (0) | 2022.03.07 |
[네트워킹] Unicast, Broadcast, Multicast, Anycast (0) | 2022.03.05 |
영차영차 성장 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!