NAT(Network Address Translation, 네트워크 주소 변환)는 말 그대로 네트워크 주소를 변환하는 기술이고 구체적으로는 IP 주소를 다른 IP 주소로 변환해 라우팅을 원활히 해주는 기술이다. 우리의 일상에서 흔히 볼 수 있는데 주로 가정에서 사용하는 노트북과 PC는 공유기를 통해, 스마트폰의 5G, LTE에서 사용한다.
NAT는 1대1 변환이 기본적이었지만 IP주소가 고갈되는 문제를 해결하기 위해 여러 개의 IP를 하나의 IP로 변환한다.
이를 NAPT(Network Address Port Translation) 혹은 PAT(Port Address Translation)라고 부른다.
NAT/PAT의 용도와 필요성
NAT와 PAT는 다양한 곳에서 사용되고 있다.
1. IPv4 주소 고갈문제의 솔루션으로 NAT가 사용된다.
- 인터넷 대중화로 IP주소 요구가 폭증하게돼 단기, 중기, 장기의 3단계 IP 주소 보존과 전환 전략이 수립됐다.
여기서 단기 전략은 서브네팅, 중기 전략은 NAT와 사설 IP, 장기 전략은 IPv6 전환이다.
그중 NAT를 이용한 중기 전략은 외부에 공개해야 하는 서비스는 공인 IP, 외부에 공개할 필요가 없는 경우는 사설 IP를 사용해 효율적으로 IP를 관리할 수 있게 되었다.
2. 보안을 강화하는데 NAT가 사용된다
- 외부와 통신할 때 내부 IP를 다른 IP로 변환해 통신하면 외부에 사내 IP 주소 체계를 숨길 수 있다.
NAT는 주소변환 후 역변환이 정상적으로 다시 수행되어야만 통신이 가능하다. 이 성질을 이용해 내부에서 외부로 나가는 방향 통신을 허용하지만 외부에서 내부로 들어오는 통신은 방어할 수 있다.
3. IP 주소 체계가 같은 2 개의 네트워크 간 통신을 가능하게 해 준다.
- IP 네트워크에서 서로 통신하려면 식별 가능한 유일한 IP 주소가 있어야 한다. 공인 IP는 중복돼서는 안 되지만 사설 IP는 외부와 통신할 때 공인 IP로 변환되므로 서로 다른 회사에서 중복해 사용할 수 있다.
하지만 사설 IP를 이용해 다른 회사와 직접 통신한다면 사설 IP 주소가 충돌할 수 있다.
그래서 IP 대역이 같은 네트워크와 통신할 가능성이 높은 대외계 네트워크를 연결하기 위해 출발지와 도착지를 한꺼번에 변환하는 더블 나트(Double NAT) 기술을 사용한다.
4. 불필요한 설정 변경을 줄일 수 있다.
보통 회선 사업자를 바꾸거나 IDC를 이전하면 원래 쓰던 공인 IP를 변경해줘야 한다.
만약 사용자가 NAT/PAT를 이용해 내부 네트워크를 구성하고 있다면 서버와 PC의 주소 변경 없이 회선과 IDC 사업자 이전이 가능하다. 물론 DNS나 NAT의 설정을 변경해야 하지만 내부 서버, PC 설정 변경을 최소화할 수 있다.
위와 같은 장점 외에 단점도 존재한다. 네트워크 운영자 입장에서 IP가 변환되면 장애가 발생했을 때 문제 해결이 힘들다.
애플리케이션 개발자는 NAT 환경이 대중화되면서 더 많은 고려사항이 생겼다.
NAT 동작 방식
NAT 동작 방식을 이해하기 위해 출발지 사용자(10.10.10.10)가 목적지의 웹 서버(20.20.20.20) 통신하는 과정을 보자.
- 사용자는 웹 서버에 접근하기 위해 출발지 IP를 자신의 IP(10.10.10.10)으로, 목적지 IP와 서비스 포트를 20.20.20.20과 80으로 패킷을 전송한다. 출발지 포트는 임의의 포트로 할당
- NAT는 패킷을 수신 후 정책에 따라 외부 네트워크와 통신 가능한 공인 IP인 11.11.11.11로 IP 주소를 변경한다. 이때 변경 전후 IP 주소는 NAT 테이블에 저장된다.
- NAT 장비에서는 출발지 주소를 11.11.11.11로 변경해 목적지 웹 서버로 전송
- 패킷을 수신한 웹 서버는 사용자에게 응답을 보낸다. 응답이므로 수신한 내용과 반대로 전송한다.
- 응답 패킷을 수신한 NAT는 자신의 NAT 테이블에서 목적지 IP에 대한 원래 패킷을 발생시킨 출발지 IP 주소가 10.10.10.10인 것을 확인한다.
- NAT 변환 테이블에서 확인된 원래 패킷 출발지 IP로 변경해 사용자에게 전송하면 사용자는 최종적으로 패킷을 수신
PAT 동작 방식
- 사용자가 웹 서버로 접근하기 위해 출발지 IP/포트 와 목적지 IP, 목적지 서비스 포트는 웹 서비스 포트인 80으로 채워 패킷 전송. 출발지 포트는 임의의 포트로 할당
- NAT는 패킷을 수신해 외부 네트워크와 통신이 가능한 공인 IP인 11.11.11.11로 변경한다. 다만 출발지에 있는 다수의 사용자가 동일한 공인 IP로 변경되어야 하므로 패킷의 주소 변경 시 출발지 서비스 포트도 변경된다. 이때 해당 정보는 NAT 테이블에 저장된다.
- NAT 장비에서 변경된 출발지 IP/포트로 패킷을 변경해 웹 서버로 전송
- 패킷을 수신한 웹 서버는 사용자에게 패킷을 응답하는데 출발지 IP는 웹 서버 IP로 채워지고 목적지 IP는 변환된 공인 IP/포트로 채워져 전송
- 응답 패킷을 수신한 NAT는 NAT 테이블을 확인해 목적지 IP/포트를 원래 값으로 재작성 후 사용자에게 전달.
PAT는 다수의 IP가 있는 출발지에서 목적지로 갈 때 NAT 테이블이 생성되고 응답에 대해 NAT 테이블을 참조할 수 있지만 PAT IP가 목적지일 때는 해당 IP가 어느 IP에 바인딩되는지 확인할 수 있는 NAT 테이블이 없으므로 사용할 수 없다.
즉 PAT는 내부에서 외부로 출발하는 경우에만 가능하다.
SNAT와 DNAT
NAT를 사용해 네트워크 주소를 변환할 때 어떤 IP 주소를 변환하는지에 따라 2 가지로 구분한다.
- SNAT(Source NAT) : 출발지 주소를 변경하는 NAT
- DNAT(Destination NAT) : 도착지 주소를 변경하는 NAT
SNAT와 DNAT는 트래픽이 출발하는 시작 지점을 기준으로 구분한다. 어떤 주소를 변경해야 하는지 서비스 흐름과 목적에 따라 결정된다.
여기서 시작 지점이란 만약 요청 시 SNAT를 해 목적지로 전송하면 해당 트래픽에 대한 응답은 출발지와 목적지가 반대가 되기 때문에 DNAT가 되므로 트래픽을 요청하는 시작 지점만 고려해 SNAT를 설정해야 한다.
이렇게 DNAT로 바뀌는 것을 역 NAT라고 하며 NAT가 정상적으로 수행되려면 역 NAT과정이 함께 수행되어야 한다.
그럼 SNAT와 DNAT는 어떤 경우에 사용해야 할까?
먼저 SNAT는 사설에서 공인으로 통신할 때 많이 사용한다. 공인 IP 주소의 목적지에서 출발지로 다시 응답받으려면 출발지의 IP가 필요한데 공인 대역에서는 사설 대역으로의 경로를 알 수 없으므로 사설 IP를 공인 IP로 NAT 해 서비스를 요청해야 한다.
또한 보안상 SNAT를 사용할 때이다. 회사가 다른 대외사와 통신 시 내부 IP 주소를 숨기고자 할 때 사용한다. 보안 문제뿐만 아니라 서로의 사내 IP가 중복될 수 있기 때문에 SNAT를 통해 다른 IP로 변경한다.
로드 밸런서 구성에 따라 SNAT를 사용하기도 한다. 출발지, 목적지 서버가 동일한 대역일 때 로드 밸런서 구성에 따라 트래픽이 로드 밸런서를 거치지 않고 응답할 수 있어 응답 트래픽이 로드 밸런서를 거치게 한다.
DNAT는 로드 밸런서에서 많이 사용한다. 사용자가 서비스 요청을 위해 로드 밸런서에 설정된 서비스 VIP(Virtual IP)로 서비를 요청하고 로드 밸런서에서는 서비스 VIP를 로드 밸런싱 될 서버 실제 IP로 DNAT 한다.
대외망과의 네트워크 구성에도 DNAT가 사용된다. 사내와 대외망과의 연동에서 IP가 중복될 수 있어서 이 경우, NAT 장비를 통해 대외사의 IP를 특정 IP 대역으로 NAT 한다. 이러면 사내에서는 해당 대외망 대역으로 라우팅 처리만 하면 된다.
동적 NAT와 정적 NAT
출발지와 목적지의 IP를 미리 매핑해 고정해놓은 NAT를 정적 NAT라고 한다.
반대로 출발지나 목적지 어느 경우든 사전에 정해지지 않고 NAT를 수행할 때 IP를 동적으로 변경하는 것을 동적 NAT라고 한다.
동적 NAT는 최소한 출발지나 목적지 중 한 곳이 다수의 IP로 구성된 IP 풀이나 레인지로 설정되어있다.
NAT가 필요할 때 IP 풀에서 어떤 IP로 매핑될 것인지 판단해 NAT를 수행하는 시점에 NAT 테이블을 만들어 관리한다.
이 테이블은 설정된 시간 동안 유지되고 일정 시간 동안 통신이 없으면 다시 사라지므로 서비스 흐름을 고려해 적용해야 한다.
정적 NAT는 특정 IP로 사전에 정의된 것이므로 1:1 NAT라고 부른다. 항상 고정되어 있기 때문에 서비스 방향에 따라 고려할 필요가 없다.
동적 NAT | 정적 NAT | |
NAT 설정 | 1:N, N:1, N:N | 1:1 |
NAT 테이블 | NAT 수행시 생성 | 사전 생성 |
NAT 테이블 타임아웃 | 동작 | 없음 |
NAT 수행 정보 | 실시간으로만 확인하거나 별도 변경 로그 저장 필요 | 별도 저장 없음 |
'CS > 네트워크' 카테고리의 다른 글
GSLB(Global Server/Service Load Balancing) 란 (0) | 2022.07.07 |
---|---|
DNS(Domain Name System)란 (0) | 2022.07.06 |
라우팅 설정 방법 (0) | 2022.06.30 |
라우터(L3 스위치 : 3계층 장비)란? (0) | 2022.06.24 |
STP(Spanning Tree Protocol) (0) | 2022.06.22 |