NAT Service에 대한 내용은 NAT Service 문서 참고하십시오.
1. 개요
Network Address Translation / 네트워크 주소 변환NAT(네트워크 주소 변환)은 IP 패킷에 적힌 소켓 주소의 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술이다. 패킷에 변화가 생기기 때문에 IP나 TCP/UDP의 체크섬(checksum)도 다시 계산되어 재기록해야 한다. 그렇기 때문에 네트워크의 성능(레이턴시)에 영향을 줄 수밖에 없다.
2. 사용하는 이유
NAT를 쓰는 이유는 여러 대의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위한 경우가 대부분이다. 예를 들어 인터넷 회선을 하나 개통하고 인터넷 공유기를 달아서 여러 PC 를 연결하여 사용 하는데, 이것이 가능한 이유가 인터넷 공유기에 NAT 기능이 탑재되어 있기 때문이다.NAT는 내부 네트워크에서 사용하는 IP 주소와 외부에 드러나는 주소를 다르게 유지할 수 있기 때문에 내부 네트워크에 대한 어느 정도의 보안 기능을 한다. 방화벽과 비슷한 기능이다.
NAT 를 사용하는 이유는 여러 가지가 있는데 중요한 이유 중 한 가지는, 기업체 등에서 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용하여, 여러 명이 동시에 인터넷에 접속하기 위함이다. NAT를 사용할 때 단점은 여러 명이 동시에 인터넷을 접속하게 되므로, 실제로 접속하는 호스트 숫자에 따라서 접속 속도가 느려질 수 있다. 다만 성능이 좋을수록 대역폭만 줄어들고 체감되는 속도 저하는 꽤 적은 편.
NAT의 종류는 1:1 매핑인 Static NAT, n:m 매핑인 Dynamic NAT, 1:n 매핑인 PAT이 있다.
IPv6에서는 IP 개수가 사실상 무한에 가깝고, End-to-End 연결을 이용하기 때문에 NAT 기능이 필요없다.[1] 다만, 일반적으로 필요없다는거지[2] IPv6도 로컬 유니캐스트 IP[3]로 외부랑의 통신이 필요할때가 간혹 있기에 NAT을 지원 안하는거는 아니다. 그리고 아직까지는 IPv4가 대중적으로 사용되기에, NAT64[4]는 여전히 필수적이며, 그 외에도 특수한 환경에 대비해 NAT66[5]이라는 기술도 있긴 있다.
3. NAT 소프트웨어
일반 PC나 서버에서 NAT를 가능하게 하는 소프트웨어들이다.- Internet Connection Sharing (ICS): Microsoft Windows에 기본으로 포함되어 있으며, NAT와 DHCP 기능을 한다.
- Routing and Remote Access Service (RRAS): Microsoft Windows Server 에만 포함되어있으며, NAT, DHCP, RIP, IGMP, PPP등 기본적인 라우터의 기능을 제공한다.
- IPFilter: Open Solaris, FreeBSD, NetBSD에 기본으로 포함되어 있으며 UNIX 계열 운영 체제에서 사용할 수 있다.
- ipfirewall: FreeBSD에 포함
- Netfilter + iptables/nftables: 보통 리눅스에서 사용한다.
- NPF: NetBSD에 포함
- PF: OpenBSD에 포함
- WinGate: Microsoft Windows용 서드파티 프로그램이다.
4. 여담
- NAT Service는 NAT 소프트웨어랑 전혀 상관없는 그리드 컴퓨팅 소프트웨어다.
- 넥슨게임즈의 전신인 넷게임즈의 영문 표기는 NAT Games이다.
5. 관련 문서
[1]
무엇보다 NAT 기능을 이용하면 End-to-End 연결을 지원할 수 없다.
[2]
IPv6가 도입되면 일반 가정집과
Wi-Fi 등에도 공인 IP가 부여된다고 보면 된다. 그러나 서버, 클라우드 등에서는
로드 밸런싱과 보안 등의 이유로 IPv6가 대중화 되더라도 IP주소가 노출되면 안 되는 경우에는 로컬 유니캐스트 IP(IPv4에서의 사설 IP랑 같은 개념)를 사용해야된다.
[3]
사설 IP랑 같은 개념
[4]
IPv4-to-IPv6 전환 및 IPv4-IPv6 공존을 위한 메커니즘. IPv4랑 IPv6간 통신을 지원하기 위한 기술이다.
[5]
IPv6-to-IPv6 NAT. IPv6의 주소 독립성 제공을 위한 기술이며, NAT66은 외부 주소와 내부 주소가 1:1로 매핑이 된다. 즉, NAT66은 NAT의 포트 매핑 방법이 아닌 주소 매핑이다. 다만, 아직 표준화가 완전히 된거는 아니다.