일반적으로 NAT은 주소변환을 하기 위하여 Packet의 다음사항을 조정합니다.
- IP header의 IP address부분
- UDP header의 port부분
- TCP header의 port부분
다음은 Internal위치에서
OutputBound시에 어떻게 External위치로 바뀌는가의 주소변환규칙에 의거한 분류에 의한 명칭입니다. (크게 분류하는 경우 다수의 Remote로부터 들어오는 패킷이 하나의 External Port로 Mapping 되는지 아니면 각각 따로 Mapping 되는지에 따라서 "Cone NAT"과 "Symmetric NAT" 으로 나뉠 수 있습니다.)
- Full-cone NAT (one-to-one NAT)
Internal위치에서 UDP packet을 목적지로 보낼때 NAT에서는 해당 Interal IP와 Port를 일시적으로 기억하고 NAT의 Port와 mapping하여 주며 해당 Port로 Data가 들어오면 출발지를 상관하지 않고 기억하였던 Internal위치로 forward해줍니다.
- (Address)-restricted-cone NAT
Internal위치에서 UDP packet을 목적지로 보낼때 NAT에서는 해당 Interal IP와 Port, 그리고 목적지 IP를 일시적으로 기억하고 NAT의 Port와 mapping하여 주며 해당 Port로 Data가 들어오면 출발지IP와 기억하고 있는 목적지 IP가 같을때 해당 Internal위치로 forward해줍니다.
- Port-restricted cone NAT
Internal위치에서 UDP packet을 목적지로 보낼때 NAT에서는 해당 Interal IP와 Port, 그리고 목적지 IP와 Port를 일시적으로 기억하고 NAT의 Port와 mapping하여 주며 해당 Port로 Data가 들어오면 출발지IP 및 Port와 기억하고 있는 목적지 IP 및 Port가 같을때 해당 Internal위치로 forward해줍니다.
- Symmetric NAT(https://en.wikipedia.org/wiki/Network_address_translation#Symmetric_NAT)
Internal위치에서 UDP packet을 목적지로 보낼때 NAT에서는 해당 Interal IP와 Port, 그리고 목적지 IP와 Port를 일시적으로 기억하고 NAT의 Port와 mapping하여 주는데 목적지 Port가 바뀌면 역시 새로운 Port로 mapping합니다. 해당 Port로 Data가 들어오면 출발지IP 및 Port와 기억하고 있는 목적지 IP 및 Port가 같을때 해당 Internal위치로 forward해줍니다.
NAT의 구현방법에 따라서 다음과 같이 분류됩니다. NAT은 Exclude => Redirect => Reverse => Normal 의 순서로 적용되도록 구현하는것이 일반적이며 적용순서가 다른 경우 정상적으로 동작하지 않을수도 있습니다.
- "Normal NAT" or "Source NAT" or "SNAT"
사설 IP를 1개의 공인 IP로 바꾸는 형태로 동시에 Session을 약 50000~65535개정도까지만 처리할수 있는것이 보통이며 이것은 더이상 Port를 할당할수 없기 때문에 발생하는 제약사항입니다. 그러나 이 경우 공인IP를 2개이상을 묶어서 구현하게 되면 그 만큼 동시처리 Session 을 연장할수 있기도 합니다.
- "Reverse NAT" or "Destination NAT" or "DNAT"
Normal NAT에서 설정된 공인 IP로부터 내부 사설망으로 접속요구를 받는 경우 여러개의 사설 IP중에서 어떤 IP로 변환해야 하는지 알수 없게 됩니다. 이 경우에 주소변환에 대한 설정이 따로 있어야 합니다. 이때 설정을 Reverse NAT로 1:1 Mapping 또는 Static mapping이라고 부르기도 합니다.
- "Redirect NAT" or "Full NAT" or "FNAT"
목적지 주소를 재지향(변환)하는것을 말합니다.
- "Exclude NAT" or "XNAT"
NAT과 Router사이에 서버가 있고 내부 사설IP사용자가 이 서버로 접속을 할수 있도로 하기 위해서 Normal NAT의 적용을 받지 않도록 하는 것을 말합니다.
- "Transparent NAT" or "DMZ"
외부로부터의 모든 포트를 내부로 개방하는 것을 말합니다.