NAT (네트워크 주소 변환) 기술은 이름 그대로 네트워크 주소를 변환하는 기술이다.
기본적으로 하나의 네트워크 주소에 다른 하나의 네트워크 주소로 변환하는 1:1 변환,
여러 개의 IP를 하나의 IP로 변환하는 것 또한 가능하다.
두 기술 모두 NAT 기중 중 하나이며 통칭하여 부르고 있으나,
공식 용어는 NAPT (Network Address Port Translation) 이다.
또한 실무에서는 PAT (Port Address Translation) 을 자주 사용한다.
주로 사설 IP 를 공인 IP로 변환하는 기술로 소개되어있는데,
사설 에서 사설, 공인에서 공인으로의 변환 또한 NAT으로 정의될 수 있다.
이 중 가장 많이 사용되는 경우는 사설 IP에서 공인 IP로의 전환이다.
IPv4의 주소 보존전략 중 단기 전략은 서브넷팅, 중기 전략은 NAT와 사설 IP체계,
장기 전략은 IPv6 전환이었다. 이 중 NAT을 이용한 중기 전략이 주소 보존에
매우 큰 기여를 했으며, 외부에 공개해야 하는 서비스에 대해서는 공인 IP를,
외부에 공개할 필요가없는 일반 사용자의 PC나 기타 장비에는 사설 IP를
사용하여 꼭 필요한 곳에만 효율적으로 IP를 사용할 수 있게 되었다.
IP 주소는 네트워크에서 고유해야 하며 이 정보가 식별자로 사용되어 통신된다.
외부와 통신할 때 내부 IP를 다른 IP로 변환하여 통신하면 외부에
사내 IP 주소 체계를 숨길 수 있다.
NAT은 주소 변환 후 역변환이 정상적으로 다시 수행되어야 통신이 가능하므로
방향성을 통제할 수가 있다. 즉, 내부 네트워크에서 외부 네트워크로 나가는 방향은
허용하지만 외부에서 내부로 들어오는 통신은 방어할 수 있다.
사설 IP는 공인 IP와 다르게 서로 다른 회사에서 중복하여 사용할 수 있다.
이 회사 내부에서 독립적으로 사설 IP를 사용하면 문제없으나 이를 이용하여
다른 회사와 직접 연결해야 하거나 통신하면 충돌이 생길 수 있다.
대외계라고 불리는 이 네트워크는 카드, 금융 대외사와 서비스를 연동할 때
인터넷 구간을 이용하지 않고 별도의 회선이나 암호회된 네트워크를 이용한다.
이는 IP 대역이 같은 네트워크와 통신할 가능성이 높으며 그에 따라서
출발지와 도착지를 한번에 변환하는 "더블 나트(Double NAT)" 를 사용한다.
NAT/PAT 을 이용하여 내부 네트워크를 구성하면 회선 사업자를 바꾸거나
IDC를 이전할 때 서버와 PC의 IP 주소변경 없이 사업자 이전이 가능하다.
이러한 설계를 통해 특정 사업자에 종속되지 않는 유연한 인프라를 구현한다.
NAT 역할을 수행하는 장비에서는 사용자가 보낸 패킷을 수신한 후
정책에 따라 외부 네트워크와 통신이 가능한 공인 IP로 변환한 후 변경 전후의
IP 주소를 NAT 테이블에 저장한다.
이후 웹 서버로부터 응답을 수신한 NAT 장비는 자신의 NAT 테이블에서
목적지 IP에 대한 원래 패킷을 발생시킨 출발지 IP 주소를 확인한다.
1:1 변환 같은 경우 사설 IP 와 공인 IP의 변환은 바로 이해하는 데 어려움이 없다.
그렇다면 여러 개의 IP를 하나의 IP로 변환하는 PAT은
서버로 부터 응답을 받은 후 클라이언트를 어떻게 구분할까?
이때 사용되는 것이 바로 포트 번호이다. PAT은 여러 사용자 IP에 대해
NAT 장비가 NAT을 실시할 때 출발지 포트를 임의로 변경하여 이를
NAT 테이블에 반영한다. 따라서 여러 사용자가 같은 서버로 요청을 보내고
서버측에서 응답을 받을때 이전에 기록하였던 포트번호를 참조하여
클라이언트를 구분할 수 있다.
NAT을 사용하여 네트워크 주소를 변환할 때 어떤 IP 주소를 변환하는지에 따라 구분
내부 네트워크의 사설 IP 주소를 공인 IP 주소로 변환하여 통신
하나의 공인 IP를 사용한 여러 사설 IP를 가진 장치가 인터넷에 접속할 때
도착지 IP 주소를 변환하는 NAT, 외부 네트워크에서 내부 네트워크로 들어오는
트래픽에 사용되며, 외부 사용자가 특정 서버(CCTV, 웹 서버)에 접근 할 때
출발지와 목적지의 IP를 미리 고정해놓은 NAT을 정적 NAT,
사전에 정해지지 않고 NAT을 수행할 때 변경하는 것을 동적 NAT이라고 한다.
NAT가 필요할 때 동적 NAT은 IP 풀에서 어떤 IP로 매핑될 것인지 판단하여
NAT을 수행하는 시점에 NAT 테이블을 만들어 관리한다.
정적 NAT은 사전에 정의되어 있으므로 1:1 NAT 이라고도 하며
이는 항상 고정되어있고 서비스 흐름을 고려하지 않고 설정할 수 있다.