ip주소는 공인 ip주소, 사설ip주소가 존재한다.
공인 ip주소는 고유한 ip이고, 사설 ip주소는 고유 하지 않으며,이것이 가능한 이유는 특정 사설 네트워크에서만 존재한다는 것이다.
private network내에서만 존재하면, 인터넷과의 연결을 분리시켜서 보안성을 강화시킬 수 있다는 장점이 있다.
하지만, 사설 ip주소는 다른 네트워크에도 동시에 존재 할 수 있으므로, 호스트 끼리 통신시에 문제가 된다.
따라서 사설 IP주소를 공인 IP주소로 변환해서 고유한 값으로 변경시킨다.
이렇게 사설 IP주소를 공인 IP주소로 변환시키는 것을 NAT라고 하며, 이것을 저장해둔 테이블을 NAT테이블이라고한다.
실제로는 아래와 같은 과정을 거친다.
사설 네트워크에 있는 호스트(송신자)가 인터넷으로 나가는 패킷을 보냄.
예: 사설 네트워크에 있는 192.168.1.10(사설 IP를 가진 호스트)이 구글(8.8.8.8)에 요청을 보냄.
NAT 라우터(또는 NAT Gateway)가 송신자의 사설 IP를 공인 IP로 변경.
사설 IP 192.168.1.10 → 공인 IP 52.34.56.78로 변환됨.
변환 정보를 NAT 변환 테이블에 저장.
외부 서버(예: 구글 8.8.8.8)가 응답을 보낼 때 공인 IP(52.34.56.78)를 목적지로 설정.
응답 패킷이 NAT 라우터로 도착.
NAT 라우터가 변환 테이블을 참고하여 공인 IP → 사설 IP로 다시 변경.
목적지 IP 52.34.56.78 → 192.168.1.10으로 변경 후 내부 네트워크의 호스트에게 전달.
이러한 일련의 과정을 거쳐서 사설 ip주소와 공인 ip주소를 상호 변환시킬 수 있다.
내부 네트워크에서 두 개의 컴퓨터(192.168.1.10
, 192.168.1.20
)가
NAT 라우터를 통해 외부 서버(8.8.8.8
)와 통신하는 경우의 NAT 변환 테이블이다
내부 사설 IP | 내부 포트 | 공인 IP | 공인 포트 | 외부 목적지 IP | 외부 목적지 포트 |
---|---|---|---|---|---|
192.168.1.10 | 50000 | 52.34.56.78 | 60000 | 8.8.8.8 | 443 |
192.168.1.20 | 50001 | 52.34.56.78 | 60001 | 8.8.8.8 | 443 |
사설 ip주소는 너무 많기 때문에 이를 모든 공인 ip로 할당한다면,부족하게 될 것이다.
따라서 공인ip: 포트형태로 표현해서 위처럼 테이블을 관리하고 변환한다.
실제로 AWS에서 Public subnet, Private subnet을 통해서 구현된다.