전공공부/컴퓨터망 (Computer Network)

[컴퓨터망] Network Layer (7) - NAT

jooona 2021. 2. 1. 15:06
반응형

DHCP 이외에도 32비트 IP 주소체계의 수량 한정에 대한 문제를 해결하기 위한 방법이 또 있습니다. 그중 하나가 오늘 공부할 NAT(Network Address Translation)입니다. 이름 그대로 해석하자면 네트워크 주소 변환이라고 이해할 수 있습니다. 

 

NAT은 외부 네트워크와 내부 네트워크를 나누어 사용합니다. 외부 네트워크는 공인 네트워크로, 앞에서 공부했던 일반적인 IP 주소를 할당받아 사용하는 네트워크이고, 내부 네트워크는 사설 네트워크로써, 말 그대로 공인되지 않은 사적으로 만들어진 네트워크라는 뜻입니다. 

 

즉, 할당받은 IP 주소 안에 사설 네트워크를 만들어 마치 밖에서 봤을 때는 하나의 호스트처럼 보이지만 실제로 안에는 여러 대의 호스트가 연결된 형태입니다. 이 방법을 통해 하나의 IP 주소를 이용해 여러 개의 호스트가 통신할 수 있어 IP 주소 부족 문제의 해결법으로 사용할 수 있습니다.

 

그리고 이 NAT을 통해 외부 네트워크의 IP 주소를 내부 네트워크의 IP 주소로, 그리고 내부 네트워크의 IP 주소를 외부 네트워크의 IP 주소로 주소 변환을 시켜줍니다. 

 

구체적인 작동 원리를 알아보도록 하겠습니다.

 

먼저 위의 그림에서 10.0.0.1이라는 호스트가 외부 네트워크의 128.119.40.186이라는 호스트에게 데이터를 보내는 상황을 가정해 보겠습니다. 출발지는 10.0.0.1, 도착지는 128.119.40.186으로 작성된 패킷이 10.0.0.1에서 출발하면 NAT을 통해 출발지는 138.76.29.7, 도착지는 그대로 128.119.40.186으로 바뀌어 외부 네트워크로 나가게 됩니다.

 

그리고 NAT 테이블에 송신자 IP인 10.0.0.1과 자신의 외부 IP인 138.76.29.7, 그리고 수신자인 128.119.40.186을 모두 기록해둡니다. 

 

전달된 패킷을 받은 128.119.40.186은 답장을 보냅니다. 이 친구는 내부 네트워크의 존재를 모르기 때문에 138.76.29.7을 도착지로 설정하여 패킷을 보냅니다. 이를 받아서 NAT에서 아까 작성한 테이블을 참조해 10.0.0.1에게 패킷을 전달해주게 됩니다.

 

그리고 혹시 사설 네트워크의 여러 개의 컴퓨터가 외부의 하나의 호스트와 통신을 하고 싶은 상황이 올 수 있습니다. 이러한 상황에서는 현재의 NAT 테이블의 정보만으로는 정확하게 송, 수신자를 특정할 수 없습니다. 그래서 이럴 때는 추가로 포트 번호를 테이블에 작성하는 등의 방법을 사용합니다.

 

NAT의 장점은 주소 부족 문제 해결뿐 아니라 보안에도 존재합니다. NAT를 대부분 방화벽에서 담당하기 때문에 패킷들이 방화벽을 지나며 한 번 트래픽을 거를 수 있고, 외부 호스트들은 내부 네트워크의 호스트들의 주소를 모르기 때문에 공격이 불가능해서, 내부 네트워크를 안전하게 유지할 수 있습니다.

 

참고로 이러한 형태의 NAT에서는 외부 네트워크의 호스트가 먼저 내부 네트워크의 호스트에 데이터를 보내는 일은 불가능합니다. 이는 NAT을 수행하는 장비가 어떤 호스트에게 자신이 받은 데이터를 전달해 줄지 판단할 수 없기 때문입니다.

 

 

반응형