도커를 공부하며 네트워크에 대한 지식이 부족하다 느껴 선배님의 조언대로 NAT에 대해 공부해 봤다.
우선 NAT를 설명하기 전에 IP에 대해서 먼저 알아보자.
IP 란?
인터넷에 연결되어 있는 모든 장치들(컴퓨터, 핸드폰, 공유기 등)을 식별할 수 있도록 가가의 장비에게 부여되는 고유 주소이다.
우리가 평소 네이버에 접속할때 www.naver.com에 접속하지만 이는 IP주소를 DNS를 이용하여 사람이 쓰기 편하게 바꾼 것이지 IP주소를 입력하여 접속하는 것이다.
IP주소는 IPv4, IPv6가 있는데 우리한테 익숙한 것은 IPv4이다.
IPv4
IPv4주소는 32비트 길이의 식별자로 0.0.0.0~255.255.255.255까지의 숫자의 조합으로 이루어지며 총 네구간으로 나눠져 있으며 최대 12자리의 번호로 이루어져 있다.
IPv4를 통해 최대 약 43억개의 서로 다른 주소를 부여할 수 있 전 세계 공용으로 사용되며 인터넷 사용자수가 급증하면서 IPv4주소가 고갈될 문제에 처해있다. 이러한 고갈 문제를 해결하기 위해 등장한 주소가 바로 IPv6이다.
IPv6
IPv6주소는 기존의 IPv4주소체계를 128비트 크기로 확장한 차세대 인터넷 프로토콜 주소이다. IPv6주소의 경우 일반적으로 16비트 단위로 나누어지며 각 16비트 블록은 다시 4자리 16진수로 변환되고 콜론으로 구분되어진다. 기존에 IPv4주소가 최대 43억개를 만들 수 있는 반하여, IPv6주소는 3.4*10^38개의 주소를 생성할 수 있다.
IPv4가 고갈될 문제에 처해있다해도 어느 날 갑자기 컴퓨터가 IP를 할당받지 못해 인터넷에 접속하지 못한다라는 소식이 들리지 않는 이유는 무엇일까?
물론 IPv6를 상용화 하고 있는 이유도 있겠지만 바로, Private Network(사설망)의 탄생 때문이다.
IP들은 공인IP와 사설 IP, 고정 IP와 유동 IP로 나누어져 있는데 사설 IP는 사설망에만 해당한다면 어디에서나 사용할 수 있다.
공인 IP
인터넷 사용자의 로컬 네트워크를 식별하기 위해 인터넷 서비스 공급자(ISP 즉, SKT, KT, LG등의 통신업체)가 제공하는 IP 주소이다. 공인 IP는 전 세계에서 유일한 IP 주소를 갖으며 외부에 공개되어 있기 때문에 인터넷에 연결된 다른 PC로부터의 접근이 가능하다. 따라서 공인 IP 주소를 사용하는 경우에는 방화벽 등의 보안 프로그램을 설치할 필요가 있다.
사설 IP
일반 가정이나 회사 내에 할당된 네트워크 IP 주소이고 로컬 IP라고도 불린다.
IPv4 주소 부족으로 인해 서브넷팅된 IP이기 때문에 라우터에 의해 로컬 네트워크상의 PC나 장치에 할당된다.
공유기를 사용한 인터넷 접속 환경일 경우 공유기까지는 공인 IP 할당을 하지만, 공유기에 연결되어 있는 가정이나 회사의 각 네트워크 기기에는 사설 IP를 할당한다.
즉, 사설 IP는 어떤 네트워크 안에서만 내부적으로 사용되는 고유한 주소이다.
공인 IP는 전 세계에서 유일하지만, 사설 IP는 하나의 네트워크 안에서 유일하다. 공인 IP는 외부, 내부 상관없이 해당 IP에 접속할 수 있으나, 사설 IP는 내부에서만 접근이 가능하다.
고정 IP
고정 IP는 말 그대로 변하지 않고 컴퓨터에 고정적으로 부여된 IP이다.
한번 부여되면 IP 반납을 하기 전까지는 다른 장비에 부여할 수 없는 고유의 IP로 보안성이 우수하기 때문에 보안이 필요한 업체나 기관에서 사용한다.
유동 IP
유동 IP 역시 말 그대로 변하는 IP이다.
인터넷 사용자 모두에게 고정 IP를 부여해 주기는 힘들기 때문에, 일정한 주기 또는 사용자들이 인터넷에 접속하는 매 순간마다 사용하고 있지 않은 IP 주소를 임시로 발급해 주는 IP이다.
대부분의 사용자는 유동 IP를 사용한다.
이러한 IP들을 알아봤는데
인터넷을 이용하려면 공인 IP로만 통신이 가능하다. 그러면 우리가 흔히 가정이나 공공시설에서 사설 IP를 배정받아 이용할 때는 어떻게 되는 는 것일까?
이럴 때 사용되는 기술이 바로 NAT이다.
NAT (Network Address Translation)
IP 패킷에 있는 출발지 및 목적지의 IP 주소와 TCP/UDP 포트 숫자 등을 바꿔 재기록하면서 네트워크 트래픽을 주고받게 하는 기술이다.
쉽게 말해 우리가 공유기를 사용하고 있어 사설 IP를 192.168.0.2를 배정받았다 가정했을 때,
우리가 네이버에 접속하려 한다고 해보자
그럼 패킷이 우리의 사설 IP에서 출발하여 공유기를 거쳐서 네이버로 가는데, 이때 공유기에서 외부로 나가는 패킷을 인식하게 되면, IP주소를 자신의 공인 IP로 바꾸고 사설 IP주소를 따로 저장해 놓는다.
그 후 네이버에서 패킷을 받고 응답을 보내면 공유기에서 저장해 놓은 사설 IP주소를 참조하여 사용자에게 보내준다.
NAT를 사용하는 이유는
1. IP주소 절약
- 위에서 말했듯이 NAT기술을 이용하면, 하나의 공인 IP 주소를 사용하여 여러 대의 호스트가 인터넷에 접속할 수 있다.
따라서 부족한 공인 IP를 절약할 수 있는 효과가 있다.
2. 보안
- NAT 동작의 특성상 IP를 숨길 수 있는 기능이 있다. 라우터(공유기 등)에서 외부로 트래픽이 나갈 때는 사설 IP가 공인 IP 주소로 바뀌므로 공격자가 라우터 안쪽에 있는 사설 IP를 모르기 때문에 최종 목적지로의 공격이 어려워져 내부 네트워크 및 호스트들을 보호할 수 있다.
'Web > 개념정리' 카테고리의 다른 글
[개념정리] XXE 란? (0) | 2023.08.11 |
---|---|
[개념정리] UNION (0) | 2023.07.10 |
[개념정리] Base64 (0) | 2023.07.03 |
[개념정리] Mysql (0) | 2023.05.02 |
[개념정리] 단방향 암호화 (0) | 2023.03.07 |