NAT
in Network
본 글은 SW마에스트로에서 진행된 특강의 내용 중 일부를 재학습한 내용의 게시글입니다.
NAT(Network Address Translation)란
- 네트워크 주소 변환의 약어
- IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록 하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술
- 공인 네트워크와 사설 네트워크 경계에서 인터넷 주소를 주고 받으면서 네트워크 트래픽을 주고 받을 수 있게 도와주는 역할
동작원리
- NAT는 1:1 주소 매핑을 수행
- NAT 라우터로 들어온 inside -> outside 패킷(혹은 그 반대)만이 주소 전환의 대상이 됨
- IP의 헤더라는 부분을 체크하여 NAT 테이블에 의해 해당 주소로 바꾼 다음 checksum을 다시 계산하여 IP의 헤더를 바꾸는 방법으로 동작
- Application Layer에서까지 NAT의 주소 변환이 반영되려면 NAT는 IP 주소의 참조 내용을 담고있는 Application 데이터 부분을 새로운 주소로 변환해야 함
사용하는 이유
- 대다수 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위해 사용
- IPv4의 주소 부족 문제를 해결하기 위한 방법으로서 고려됨
- 주로 비공인(사설, local) 네트워크 주소를 사용하는 망에서 외부의 공인망(public, 예를 들어 인터넷)과의 통신을 위해서 네트워크 주소를 변환하는 것
- 즉, 내부망에서는 사설 IP 주소를 사용하여 통신을 하고, 외부망과의 통신 시에는 NAT를 거쳐 공인 IP 주소로 자동 변환
장점
- 인터넷의 공인 IP 주소를 절약할 수 있음
- 인터넷의 공인 IP 주소의 개수는 한정되어 있음
- NAT를 이용하여 사설 IP 주소를 사용함으로써 이를 공인 IP 주소와 상호변환할 수 있도록 함
- 공인 IP 주소를 다수가 함께 사용하여 공인 IP 주소를 절약할 수 있음
- 인터넷이라는 공공망과 연결되는 사용자들의 고유한 사설망을 침입자들로부터 보호할 수 있음
- 공개된 인터넷과 사설망 사이에 방화벽(Firewall)을 설치하여 외부 공격으로부터 사용자의 통신망을 보호하는 기본적인 수단으로 활용
- 외부 통신망(인터넷망)과 연결하는 장비인 라우터에 NAT를 설정하여 라우터는 자신에게 할당된 공인 IP 주소만 외부로 알려지게 하고, 내부에서는 사설 IP 주소만 사용하도록 하여 필요시에 변화시켜주도록 함
- 외부 침입자가 공격하기 위해서는 사설망의 내부 사설 IP 주소를 알아야 하기 때문에 공격이 불가능해짐으로써 내부 네트워크를 보호할 수 있음
단점
- end-to-end 간의 추적(IP trace)가 어려워짐
- 여러 개의 NAT 라우터에 의해 Multiple NAT가 적용되었을 경우 추적이 더욱 어려워짐
- 오히려 해커가 대상 경로를 추적하기 어렵게 만듦으로써 보다 더 보안성 있는 연결이 가능하게 된다는 장점이 되기도 함
- NAT 라우터를 거치는 모든 패킷을 scan하므로 switching path delay가 커지게 됨
- NAT는 IP 주소를 이용하는 몇몇 Application을 동작하지 못하게 할 수 있는데, 이러한 경우는 Static NAT를 이용하면 해결이 가능한 경우도 있음