컴퓨터(Computer Science)/네트워크, Network

NAT란? Network Address Translation, 네트워크 주소 변환 [네트워크]

게임이 더 좋아 2020. 9. 27. 19:17
반응형
728x170

www.youtube.com/watch?v=qij5qpHcbBk

위 링크를 참고하자

 

 


 

 

NAT란 Network Address Translation 을 말한다.

**실제 공식 용어는 NAPT라고 한단다. (Network Address Port Translation)

PAT, Port Address Translation 라고도 쓴단다. 뭐 그렇단다.

 

우선 문제을 말해보자

우리는 IPv4를 쓰고있고 컴퓨터 과학자들은 32비트

즉, 42억개의 주소는 우리가 충분히 네트워크를 사용할 수 있을만큼 있다고 생각했다.

그러나 예상과는 다르게 빠르게 소비가 되었다.

그래서 과학자들은 다른 방법을 고안해냈다.

우선 IPv6이 이 있다.

하지만 우리는 IPv4의 수명을 조금 더 늘리고 싶었다.

(어차피 IoT의 시대가 오는 지금 IPv4의 수명은 거의 끝나간다.)

 

[컴퓨터(Computer Science)/네트워크, Network] - IPv4와 IPv6의 차이점 무엇일까?

 

그 문제를 해결하기 위한 Solution은  Private Address를 사용하는 것이다.

**LAN에서만 사용하는 Private Address를 말한다.

 

**IP의 주소가 8-bit * 4로 이루어져 있다고 해서 모두 쓸 수 있는 것은 아니다.

인터넷을 접속할 수 있는 주소는 Public Address라고 한다.

**한글로 해석하면 사설 IP, 공인 IP로 해석된다.

다시 말해서

 

NAT는 인터넷과 통신할 때만 public address로 인터넷과 통신할 수 있게 하고

나머지 통신은 LAN에서 하는 것이다.

 


 

 

 

위의 것을 우리는 Private Address라고 부른다.

Private Address는 진짜 사설망에서 쓰이는 주소라고 보면된다.

 

 

그러나 일반적으로 인터넷은 우리한테 하나의 주소만 준다.

Public Address 하나만 준다. 즉, 인터넷을 이용하려면 이 주소를 이용해야 한다.

 

 

 

뭐야 인터넷도 안되는 사설망 주소를 왜주는 거야??라고 생각할 수 있다.

NAT의 목적이 IP가 부족하기 때문이라고 했다.

 

아래를 보면 모든 장비에 IP가 붙어있다.

무슨 장비마다 IP가 붙어있으면 전세계 사람들이 컴퓨터, 태블릿, 핸드폰, 프린터 하나씩만 가지고 있어도280억개가 된다..ㅎ

 

 

 

 컴퓨터, 태블릿, 프린터는 한 네트워크에 속함에도 IP는 다르다.

  IP가 너무 많이 쓰인다. 

 

여기서 바로 NAT의 필요성이 나온다.

저 라우터에서 무엇인가 할 수 없을까? 에서 나왔다.

** 어차피 내부망에서는 라우터를 거쳐서 연결이 되니까 내부망에서는 IP를 따로 쓰자!!

 

NAT이 바로 Private address를 Public address로 변환시켜준다.

라우터가 그 역할을 한다. 

 

 


 

 

우선 우리는 PAT(Port Address Tranlsation) Overload라고 불리는 방법부터 살펴보자.

 

 

라우터에서 일어나는 상황을 알아보자

그림에선 소스가 우리집 컴퓨터라고 보면 되겠다.

 

8897과 80은 포트번호다.

 

포트번호는 무엇을 위해 있을까?

작동하는 프로세스는 여러 개인데, 이 중 누가 보낸 것인지모른다.

받는 쪽에서도 여러 프로세스가 돌아가고 있을 텐데 보낸 데이터를 어느 쪽이 받아야 할지도 식별해야 한다.

즉, 한 IP 주소 안에서도 누가(프로세스) 주고받는 것인지 식별하는 역할을 하는 것이 바로 포트(port)다.

 

**여기서 포트번호 8897과 80은 중요하다.

데이터가 어떤 장비에 있는지, 데이터가 어떤 application,process 에 속하는 지를 알려주기 때문이다.

 

 

우선 여기서 그럼 소스( Private address)는 Public address로 바뀐다. 

++일반적으로 포트번호는 같다

 

여기서 라우터는 NAT table을 생성한다. 

 

바뀌기 전의 Private address랑 Public address로 바뀐 후를 대응시킨다.

이 후 라우터는 다시 데이터를 전송한다.

 

 


 

이제 데이터가 갔으니 다시 올 때를 살펴보자 

 

++올 때니까 Source랑 Destination이 바뀌었따.

 

 

라우터는 데이터를 받고 Destination 을 체크해본다( NAT table을 확인)

만약 일치한다면 우리는 Public address를 다시 Private address로 바꾼다.

 

 

그리고 그냥 다시 Destination에 보내면 되겠다.

 

 


다시 정리해보자

 

즉, 우리는 private address 으로 하되 인터넷을 이용할 때는 주소를 Translation 해서 public address로 바꿔서 이용하는 것이다.

또한 인터넷에서 우리 망으로 들어올 때도 Public address에서 Translation 되어서 private address를 이용해서 전달된다.

 

 

 


 

++추가 내용

 

그렇다면 Dynamic NAT은 무엇일까??

우리는 주소를 저장하지 않는데 public address pool이 있기 때문이다.

 

++하지만 주소를 사야한다는... 단점?

 

public address로 바뀌는 기준은 어떤 주소가 pool에 남아있냐는 것이다.

NAT가 필요할 때 IP 풀에서 어떤 IP로 매핑될 것인지 판단해 NAT를 수행하는 시점에 NAT 테이블을 만들어 관리한다.

NAT 테이블은 설정된 시간 동안 유지되고 일정 시간 동안 통신이 없으면 다시 사라지므로 동적 NAT의 설정은 서비스 흐름을 고려해야 한다.

 

다시 돌아올 때도 마찬가지이다.

 

 

그렇다면 다시 쓴 public address는 다시 pool로 돌아가서 쓰이길 기다린다.

 


 

 

dynamic이 있으면 static이 있다. 혼자 쓰이지 않는다.

 

 

static도 비슷하다. 차이가 있다면 NAT table이 정해져있는 것이다.

출발지와 목적지 매핑 관계가 특정 IP로 사전에 정의된 것이므로 1:1 NAT라고 부르기도 한다.

 

 

 

올 때도 마찬가지이다. 

 


 

또한 NAT는 보안의 효과도 있다.

우리의 IP를 쫓아 들어오더라도 NAT table을 읽지 않는 이상

내부 네트워크의 IP를 알 수 없다.

설마 알게 되더라도 사설 IP는 다른 내부망에서도 쓰기 때문에

역으로 추적하기는 무척 어렵다.

 

공인 망에서 들어온다면 공인망의 주소로는 알 수 있어도

실제 내부 망에서의 장비로 접근이 불가능하단 말이다.

 

 

 

 

반응형
그리드형