최근 수정 시각 : 2025-02-12 02:17:12

NAT


파일:다른 뜻 아이콘.svg  
#!if 넘어옴1 != null
''''''{{{#!if 넘어옴2 != null
, ''''''}}}{{{#!if 넘어옴3 != null
, ''''''}}}{{{#!if 넘어옴4 != null
, ''''''}}}{{{#!if 넘어옴5 != null
, ''''''}}}{{{#!if 넘어옴6 != null
, ''''''}}}{{{#!if 넘어옴7 != null
, ''''''}}}{{{#!if 넘어옴8 != null
, ''''''}}}{{{#!if 넘어옴9 != null
, ''''''}}}{{{#!if 넘어옴10 != null
, ''''''}}}은(는) 여기로 연결됩니다. 
#!if 설명 == null && 리스트 == null
{{{#!if 설명1 == null
다른 뜻에 대한 내용은 아래 문서를}}}{{{#!if 설명1 != null
{{{#!html NAT Service}}}에 대한 내용은 [[NAT Service]] 문서{{{#!if (문단1 == null) == (앵커1 == null)
를}}}{{{#!if 문단1 != null & 앵커1 == null
의 [[NAT Service#s-|]]번 문단을}}}{{{#!if 문단1 == null & 앵커1 != null
의 [[NAT Service#|]] 부분을}}}}}}{{{#!if 설명2 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단2 == null) == (앵커2 == null)
를}}}{{{#!if 문단2 != null & 앵커2 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단2 == null & 앵커2 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명3 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단3 == null) == (앵커3 == null)
를}}}{{{#!if 문단3 != null & 앵커3 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단3 == null & 앵커3 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명4 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단4 == null) == (앵커4 == null)
를}}}{{{#!if 문단4 != null & 앵커4 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단4 == null & 앵커4 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명5 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단5 == null) == (앵커5 == null)
를}}}{{{#!if 문단5 != null & 앵커5 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단5 == null & 앵커5 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명6 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단6 == null) == (앵커6 == null)
를}}}{{{#!if 문단6 != null & 앵커6 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단6 == null & 앵커6 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명7 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단7 == null) == (앵커7 == null)
를}}}{{{#!if 문단7 != null & 앵커7 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단7 == null & 앵커7 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명8 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단8 == null) == (앵커8 == null)
를}}}{{{#!if 문단8 != null & 앵커8 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단8 == null & 앵커8 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명9 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단9 == null) == (앵커9 == null)
를}}}{{{#!if 문단9 != null & 앵커9 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단9 == null & 앵커9 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명10 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단10 == null) == (앵커10 == null)
를}}}{{{#!if 문단10 != null & 앵커10 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단10 == null & 앵커10 != null
의 [[#|]] 부분을}}}}}}
#!if 설명 == null
{{{#!if 리스트 != null
다른 뜻에 대한 내용은 아래 문서를}}} 참고하십시오.

#!if 리스트 != null
{{{#!if 문서명1 != null
 * {{{#!if 설명1 != null
NAT Service: }}}[[NAT Service]] {{{#!if 문단1 != null & 앵커1 == null
문서의 [[NAT Service#s-|]]번 문단}}}{{{#!if 문단1 == null & 앵커1 != null
문서의 [[NAT Service#|]] 부분}}}}}}{{{#!if 문서명2 != null
 * {{{#!if 설명2 != null
: }}}[[]] {{{#!if 문단2 != null & 앵커2 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단2 == null & 앵커2 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명3 != null
 * {{{#!if 설명3 != null
: }}}[[]] {{{#!if 문단3 != null & 앵커3 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단3 == null & 앵커3 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명4 != null
 * {{{#!if 설명4 != null
: }}}[[]] {{{#!if 문단4 != null & 앵커4 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단4 == null & 앵커4 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명5 != null
 * {{{#!if 설명5 != null
: }}}[[]] {{{#!if 문단5 != null & 앵커5 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단5 == null & 앵커5 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명6 != null
 * {{{#!if 설명6 != null
: }}}[[]] {{{#!if 문단6 != null & 앵커6 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단6 == null & 앵커6 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명7 != null
 * {{{#!if 설명7 != null
: }}}[[]] {{{#!if 문단7 != null & 앵커7 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단7 == null & 앵커7 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명8 != null
 * {{{#!if 설명8 != null
: }}}[[]] {{{#!if 문단8 != null & 앵커8 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단8 == null & 앵커8 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명9 != null
 * {{{#!if 설명9 != null
: }}}[[]] {{{#!if 문단9 != null & 앵커9 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단9 == null & 앵커9 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명10 != null
 * {{{#!if 설명10 != null
: }}}[[]] {{{#!if 문단10 != null & 앵커10 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단10 == null & 앵커10 != null
문서의 [[#|]] 부분}}}}}}

1. 개요2. 사용하는 이유3. NAT 소프트웨어4. 여담5. 관련 문서

1. 개요

Network Address Translation / 네트워크 주소 변환

NAT(네트워크 주소 변환)은 IP 패킷에 적힌 소켓 주소의 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술이다. 패킷에 변화가 생기기 때문에 IP나 TCP/UDP의 체크섬(checksum)도 다시 계산되어 재기록해야 한다. 그렇기 때문에 네트워크의 성능(레이턴시)에 영향을 줄 수밖에 없다.

2. 사용하는 이유

NAT를 쓰는 이유는 여러 대의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위한 경우가 대부분이다. 예를 들어 인터넷 회선을 하나 개통하고 인터넷 공유기를 달아서 여러 PC 를 연결하여 사용 하는데, 이것이 가능한 이유가 인터넷 공유기에 NAT 기능이 탑재되어 있기 때문이다.

NAT는 내부 네트워크에서 사용하는 IP 주소와 외부에 드러나는 주소를 다르게 유지할 수 있기 때문에 내부 네트워크에 대한 어느 정도의 보안 기능을 한다. 방화벽과 비슷한 기능이다.

쉽게 생각해서 놀이공원을 생각해보자.
아빠와 엄마, 아들, 딸(각각의 사설IP)은 각각 돈을 내고 매표소에서 놀이공원 입장권(인터넷에 접속 권한)을 구매하려고 했다. 하지만 매표소(라우터)에서는 현재 가지고 있는 입장권(IPv4의 IP개수)의 개수가 한정적이었기에 지금 각각에게 줄 수 있는 입장권이 부족하니 그냥 가족 모두 이용할 수 있는 입장권을 주겠다!(NAT기능) 라며 커다란 입장권 하나를 주었다.(공인IP) 이를 통해 입장권이 부족하더라도 가족이 함께 놀이공원을 이용할 수 있게 된다고 생각하면 된다.
이후 범죄자가 입장권을 통해 누구의 정보를 캐내려고해도 아빠, 엄마, 아들, 딸의 정보가 적힌 입장권이 아닌 단순히 가족의 정보가 적힌 입장권만 있기 때문에 특정 대상에 대한 공격도 불가능해진다.[1]

NAT 를 사용하는 이유는 여러 가지가 있는데 중요한 이유 중 한 가지는, 기업체 등에서 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용하여, 여러 명이 동시에 인터넷에 접속하기 위함이다. NAT를 사용할 때 단점은 여러 명이 동시에 인터넷을 접속하게 되므로, 실제로 접속하는 호스트 숫자에 따라서 접속 속도가 느려질 수 있다. 다만 성능이 좋을수록 대역폭만 줄어들고 체감되는 속도 저하는 꽤 적은 편.

NAT의 종류는 1:1 매핑인 Static NAT, n:m 매핑인 Dynamic NAT, 1:n 매핑인 PAT이 있다.

IPv6에서는 IP 개수가 사실상 무한에 가깝고, End-to-End 연결을 이용하기 때문에 NAT 기능이 필요없다.[2] 다만, 일반적으로 필요없다는거지[3] IPv6도 로컬 유니캐스트 IP[4]로 외부랑의 통신이 필요할때가 간혹 있기에 NAT을 지원 안하는거는 아니다. 그리고 아직까지는 IPv4가 대중적으로 사용되기에, NAT64[5]는 여전히 필수적이며, 그 외에도 특수한 환경에 대비해 NAT66[6]이라는 기술도 있긴 있다.

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. 여담

5. 관련 문서


[1] 당연하지만 특정 대상(가족의 개개인)이 아닌 가족 자체를 공격한다고하면 속수무책이다.[2] 무엇보다 NAT 기능을 이용하면 End-to-End 연결을 지원할 수 없다.[3] IPv6가 도입되면 일반 가정집과 Wi-Fi 등에도 공인 IP가 부여된다고 보면 된다. 그러나 서버, 클라우드 등에서는 로드 밸런싱과 보안 등의 이유로 IPv6가 대중화 되더라도 IP주소가 노출되면 안 되는 경우에는 로컬 유니캐스트 IP(IPv4에서의 사설 IP랑 같은 개념)를 사용해야된다.[4] 사설 IP랑 같은 개념[5] IPv4-to-IPv6 전환 및 IPv4-IPv6 공존을 위한 메커니즘. IPv4랑 IPv6간 통신을 지원하기 위한 기술이다.[6] IPv6-to-IPv6 NAT. IPv6의 주소 독립성 제공을 위한 기술이며, NAT66은 외부 주소와 내부 주소가 1:1로 매핑이 된다. 즉, NAT66은 NAT의 포트 매핑 방법이 아닌 주소 매핑이다. 다만, 아직 표준화가 완전히 된거는 아니다.