## NAT (Network Access Translation) 네트워크에서 IP주소를 변환하는 기술 Private Network와 Public Network 간의 통신을 가능하게 해줌 NAT는 L3(네트워크 계층)에서 동작한다. --- ## 기술 동인 1. IP 주소 부족 2. 보안의 강화 --- ## NAT 메커니즘 ### 공유기로 보는 메커니즘 | local IP | Port | Remote IP | Port | Port | | ------------ | ---- | ----------- | ---- | ----- | | 192.168.0.10 | 3000 | 10.10.10.10 | 80 | 20000 | | 192.168.0.11 | 3022 | 10.10.10.10 | 80 | 20001 | - **필드 의미 설명** - Inside Local: 내부 네트워크의 실제 IP 주소 (→ 출발지 IP) ✅ - Inside Global: NAT에 의해 변환된 공인 IP (외부에 보이는 출발지 IP) - Outside Local: 내부에서 본 외부 장치의 IP (보통 같음) - Outside Global: 외부 장치의 실제 IP (도착지 IP) * **요청** * `PC#1`이 `Naver`에 `80`포트로 연결하려 한다 * `PC#1`에서 포트(예시: 3000번)가 열리고 해당 트래픽이 공유기로 이동한다. 이 때, 출발지 주소는 `192.168.0.10:3000`이 된다. * `공유기`는 목적지 데이터를 확인하고 `PC#1`으로부터 받은 트래픽의 출발지 주소를 `public IP`인 `11.11.11.11`로 바꾸고 적절한 포트번호(예시: 20000)으로 **변환**한다. * 최종적으로 NAVER가 `PC#1`으로부터 받은 주소는 `11.11.11.11:20000`이 된다. * **응답** * NAVER는 응답을 해야한다. * 응답해주는 주소는 `11.11.11.11:20000`으로, 출발지는 `10.10.10.10:80`이다. * 공유기는 NAVER부터 응답을 받게 된다. 이 때, 목적지 주소의 port가 `20000`이므로 NAT-table을 확인하여 이에 맞는 목적지 주소로 변환하다. `11.11.11.11:20000`에서 `192.168.0.10:3000`로 변환하여 `PC#1`에게 전달해준다 * `PC#1`은 최종적으로 출발지 `10.10.10.10:80`, 목적지 `192.168.0.10:3000`를 받게 된다. *** ## 종류 * Static NAT (고정 NAT) * 하나의 사설 IP를 하나의 공인 IP로 매핑 * 주로 서버와 같은 특정 장치에 사용 * Dynamic NAT (동적 NAT) * 여러 사설 IP 주소를 **공유 가능한 IP 주소 풀** 중에 하나로 변환 * PAT (Port Address Translation) * 하나의 공인 IP를 사용하고 여러 사설 IP를 사용하는 경우, **사설 IP를 각 포트 번호로 구분**