사설 IP주소를 공인 IP주소로 변환해주어 외부와 통신할 수 있게 해주는 프로토콜입니다.
Static NAT
하나의 내부 IP 주소와 외부 IP주소를 1:1로 매핑
1. 하나의 내부 IP 주소와 외부 IP주소를 1:1로 미리 지정
예) 내가 직접 192.168.0.2의 내부 아이피를 1.1.1.1의 외부 아이피로 매핑한다 라고 NAT 테이블에 지정
2. 외부주소로 들어온 요청을 미리 지정된 내부주소로 변환하여 내부로 전달
Dynamic NAT
여러개의 내부 IP주소와 여러개의 외부 IP주소를 동적으로 매핑시키는 방법
1. 호스트가 외부로 보내는 트래픽을 라우터로 보냄
2. 라우터에 설정된 공인 IP주소 POOL에서 쉬고 있는 IP 중 하나로 변환하여 외부로 내보냄
예) 동적으로 192.168.0.2의 내부 아이피가 여러개의 공인 아이피(아무도 사용하지 않은 것) 중 하나를 골라 매핑 시킴
이렇게 NAT만 사용할 경우 정적이든 동적이든 결론적으로 1:1 식으로 통신되기 때문에 포트의 유무를 따지지 않는다.(따지는 것은 PAT)
NAT(PAT 개념 포함)을 사용하는 이유는 2가지가 있습니다.
첫번째는 공인 ip를 절약할 수 있다는 점입니다.
기본적으로 공인 아이피는 NAT이라는 프로토콜이 존재하지 않으면 1:1 식으로 통신할 수 밖에 없습니다.
하지만 중간에 NAT 프로토콜이 존재하면 1:N식으로 사설IP를 외부IP(공인IP)로 변환하여 외부와 통신할 수 있게끔 해줍니다.
쉽게 말해 하나의 공인 아이피를 통해서도 여러 노드에서 TCP/IP 통신(인터넷)을 할 수 있다는 중요한 프로토콜이라는 것이죠.
두번째 이유는 보안입니다.
공개된 인터넷과 사설망 사이에 NAT을 설치하여 외부 공격으로부터 사용자의 통신망을 보호하는 기본적인 수단으로 활용됩니다.
예를 들어 해커가 공개된 외부 아이피를 통해 트래픽 공격을 시도했다고 했을 때 공격 패킷들은 외부망까지만 들어오고 외부(공인IP)에 연결된 수많은 노드들중 어떤 노드를 공격해야할지 iptable에 명시되어있지 않은 이상 모르는것이기 때문에 그대로 Packet drop 현상이 이루어집니다.
하지만 이렇게 모든 패킷들을 다 막아버린다면 서버를 운영하지 못하겠죠?
왜냐하면 서버는 외부에서 외부인이 들어와야하는데 NAT를 통해 중간에 다 막히기 때문입니다.
그래서 우리는 포트포워딩이라는 'tcp 또는 udp 패킷의 어떤 아이피에 몇번 포트는 허용하여라' 라는 규칙을 iptable에 명시하는 것이죠.
그 외에도 아예 모든 포트를 여는 dmz, 특정 노드를 공인아이피 자체로 사용하는 spuer dmz라는 기능이 있습니다.
(포트포워딩, dmz 사용법은 서버분야 쪽에서 다룹니다.)
PAT 개념을 배제하고 생각했을 때 동적 NAT 같은 경우 결과적으로 1:1 통신인데 방화벽이 존재할 수 있나요?
- 기본적으로 동적 NAT 같은 경우 Dynamic하게 배당되기 때문에 어떤 공인IP를 달고 나갈지는 모르는 형태입니다.
내부에서 먼저 외부로 통신 할 때는 Nat table이 형성되어서 서로 통신이 이루어지고, 통신이 끝나면 table에서 사라집니다.
그렇기 때문에 외부에서 먼저 내부로 통신할 경우 어떤 IP가 패킷을 전달 받아야 하는지 테이블에 정의되어 있지 않기 때문에 통신할 수 없게 됩니다.
이 부분이 방화벽 역할을 하는 것입니다.
'네트워크 > Network' 카테고리의 다른 글
[Network]KT Giga UTP? (0) | 2022.02.14 |
---|---|
[Network]PAT? (0) | 2022.02.14 |
[Network]IGMP 스누핑 (0) | 2022.01.20 |
[Network]동일 서브넷에서 호스트들끼리의 통신이 라우팅?? (0) | 2020.10.03 |
[Network]Cipher Suite(TLS/SSL) (0) | 2020.09.29 |
댓글