1. 이론 학습
IPv4 Private Address Space
- 조직 내부 장비 간 통신을 위해 사설 주소를 사용한다.
- 사설 주소만으로는 인터넷 접근이 불가하므로, 외부 접근 시 NAT를 통해 공인 주소로 변환해야 한다. 핵심 포인트
- NAT와 사설 주소의 조합 덕분에 하나의 공인 주소로 수백, 수천 대가 인터넷을 공유할 수 있다.
- IPv4 고갈을 늦추는 데 결정적인 역할을 했지만, 한계가 있어 궁극적 해법은 IPv6 전환이다.
RFC 1918 사설 주소 대역 표
Class | RFC1918 내부 주소 범위 | Prefix |
A | 10.0.0.0 - 10.255.255.255 | 10.0.0.0/8 |
B | 172.16.0.0 - 172.31.255.255 | 172.16.0.0/12 |
C | 192.168.0.0 - 192.168.255.255 | 192.168.0.0/16 |
NAT란 무엇인가?
- 네트워크 내부에서는 사설 IPv4를 쓰고, 외부로 나갈 때만 공인 주소로 번역하는 기술. 효과
- 공인 주소를 절약한다.
- 내부 사설 주소를 외부에 직접 노출하지 않기 때문에 프라이버시와 보안 측면에서 이점이 있다. 구성 요소
- NAT 풀: 라우터에 설정된 하나 이상의 유효한 공인 IPv4 주소 집합.
- 경계 라우터: 내부 스텁 네트워크의 출입 경계에서 NAT를 수행하는 라우터. 동작 개요
- 내부 호스트의 패킷이 경계 라우터로 들어오면, 라우터는 출발지 사설 주소를 공인 주소로 변환하여 외부로 전송한다.
NAT 용어 정리
- 항상 번역 대상 장비(내부 장비)의 관점에서 inside, outside를 해석한다.
- inside: NAT가 적용되는 내부 영역
- outside: 인터넷 등 외부 영역
- local: 내부 측에서 보이는 주소
- global: 외부 측에서 보이는 주소
구분 | 의미 | 보통의 값 |
Inside local | 내부에서 보이는 출발지 | 사설 IP |
Inside global | 외부에서 보이는 출발지 | 공인 IP (NAT 변환 결과) |
Outside global | 외부에서 보이는 목적지 | 공인 IP |
Outside local | 내부에서 보이는 목적지 | 일반적으로 Outside global과 동일 |
NAT의 종류와 동작 요약
정적 NAT (Static NAT)
- 내부 사설 주소와 외부 공인 주소를 1:1로 고정 매핑한다.
- 장점: 주소가 항상 동일하므로 웹서버, VPN 게이트웨이, 원격 관리 대상처럼 외부에서 상시 접근이 필요한 장비에 적합.
- 단점: 외부로 동시에 통신하는 호스트 수만큼 공인 주소가 필요하다.
동적 NAT (Dynamic NAT)
- 미리 정의한 공인 주소 풀에서 선착순으로 주소를 임시 할당한다.
- 세션이 끝나면 주소가 반환된다.
- 여전히 동시 사용자 수만큼의 공인 주소가 필요하다는 점은 정적 NAT와 동일.
포트 주소 변환 (PAT, NAT Overload)
- 여러 내부 사설 주소를 하나(또는 소수)의 공인 주소로 매핑한다.
- 구분은 L4 포트 번호(또는 ICMP Query ID)를 사용한다.
- 가정/기업에서 가장 널리 쓰이는 방식으로, 보통 하나의 공인 IP로 다수 사용자가 인터넷을 공유한다.
- 응답 패킷은 변환 테이블에 기록된 포트 기반 엔트리를 이용해 원래의 내부 호스트로 되돌아간다.
Next Available Port 동작
- PAT는 원래의 출발지 포트를 보존하려고 시도한다.
- 이미 사용 중이면 0-511, 512-1023, 1024-65535 포트 범위에서 사용 가능한 다음 포트를 순차 탐색해 할당한다.
- 모든 포트가 소진되면, 풀에 공인 주소가 여러 개 있을 경우 다음 공인 주소로 넘어가 재시도한다.
TCP/UDP 포트 번호 범위 (IANA 기준)
범위 | 이름 값 | 범위 | 설명 | 서비스 예시 |
Well-Known Ports | 잘 알려진 포트 | 0 ~ 1023 | 전 세계적으로 표준화된 서비스에 예약된 포트, 서버 측에서 주로 사용 | 20, 21: FTP / 22: SSH / 23: Telnet / 25: SMTP / 53: DNS / 80: HTTP / 443: HTTPS |
Registered Ports | 등록 포트 | 1024 ~ 49151 | 특정 애플리케이션/벤더가 IANA에 등록한 포트, 클라이언트나 서버 모두 사용 가능 | 3306: MySQL / 3389: RDP / 8080: HTTP 대체 |
Dynamic / Private Ports | 동적·사설 포트 (Ephemeral Ports) | 49152 ~ 65535 | 클라이언트 측에서 임시로 할당되는 포트, 세션 종료 시 해제됨 | 브라우저에서 HTTP 요청 시 랜덤 할당(예: 51432) |
L4 세그먼트가 없는 패킷 처리
- TCP/UDP 포트가 없는 프로토콜(예: ICMPv4)은 ICMP Query ID 등을 식별자로 사용해 세션을 구분한다.
- 그 외 특수 프로토콜은 장비 구현에 따라 처리 방식이 다르다.
구분 | 내부 송신 정보 | NAT 변환 후 | 외부 서버 응답 매핑 |
PC1 | Src IP: 192.168.0.10, ICMP Query ID: 1001 | Src IP: 203.0.113.10, Query ID: 5001 | 응답 도착 시 Query ID=5001 → PC1로 전달 |
PC2 | Src IP: 192.168.0.20, ICMP Query ID: 1001 (우연히 같은 값) | Src IP: 203.0.113.10, Query ID: 5002 | 응답 도착 시 Query ID=5002 → PC2로 전달 |
NAT vs PAT 비교 표
항목 | NAT | PAT |
매핑 관계 | Inside Local 과 Inside Global 간 1:1 | 하나의 Inside Global 을 여러 Inside Local 이 공유(다대일), 포트로 구분 |
변환 요소 | IPv4 주소만 변환 | IPv4 주소 + TCP/UDP 출발지 포트(또는 ICMP Query ID) 변환 |
공인 주소 필요 수 | 외부 접속 호스트마다 고유 Inside Global 필요 | 한 개(또는 소수)의 Inside Global 로 다수 호스트 동시 접속 가능 |
NAT 테이블 예시 (정적/동적 NAT의 1:1 매핑)
Inside Global Address | Inside Local Address |
209.165.200.226 | 192.168.15.10 |
209.165.200.227 | 192.168.15.11 |
209.165.200.228 | 192.168.15.12 |
209.165.200.229 | 192.168.15.13 |
- 설명: 각 내부 호스트가 외부로 나갈 때, 해당 Inside Global 로 1:1 변환된다. 돌아오는 트래픽은 이 테이블을 참조해 원래 Inside Local 로 역변환된다.
PAT 테이블 예시 (다대일, 포트 기반 구분)
Inside Global Address:Port | Inside Local Address:Port |
209.165.200.226:2031 | 192.168.10.10:2031 |
209.165.200.226:1506 | 192.168.10.11:1506 |
209.165.200.226:1131 | 192.168.10.12:1131 |
209.165.200.226:1718 | 192.168.10.13:1718 |
- 설명: 공인 주소는 하나(209.165.200.226)지만, 포트 번호가 달라 각 세션/호스트를 구분할 수 있다.
2. 이론 실습
Static NAT 구성과 검증
Static NAT 시나리오
- Static NAT는 내부 주소와 외부 주소를 1:1로 고정 매핑한다.
Static NAT
작업 1. SERVER의 IP(192.168.10.2)를 203.168.10.3으로 1:1 매핑
Inside Local ↔ Inside Global 고정 매핑 생성
R1(config)# ip nat inside source static 192.168.10.2 209.168.10.3
작업 2. NAT 관점에서 인터페이스 역할 지정
- 내부측(inside)과 외부측(outside)을 정확히 지정해야 변환이 동작한다.
R1(config)# interface G0/1
R1(config-if)# ip address 192.168.10.1 255.255.255.0
R1(config-if)# ip inside
R1(config-if)# exit
R1(config)# interface G0/0
R1(config-if)# ip address 203.168.10.1 255.255.255.248
R1(config-if)# ip nat outside
동작 요약
- Inside 인터페이스로 들어오는 192.168.10.2 출발 트래픽은 203.168.10.3 로 변환되어 외부로 전송된다.
- Outside 인터페이스로 들어오는 203.168.10.3 목적지 트래픽은 192.168.10.2 로 역변환되어 내부로 전달된다.
Static NAT 검증
1. 변환 테이블 확인
R1# show ip nat translations
- 활성 세션 중에는 외부 목적지 정보가 함께 표시된다.
2. 통계 확인
- 테스트 전 과거 통계를 초기화하면 판단이 쉬워진다.
R1# clear ip nat statistics
R1# show ip nat statistics
- 세션이 성립한 뒤에는 Hits 값이 증가해야 한다.
- Static NAT는 외부에서 내부로의 접근이 필요할 때 사용한다(서버, 고정 관리 대상 등)
Dynamic NAT 구성과 검증
Dynamic NAT 시나리오
- Dynamic NAT는 내부 사설 주소를 공인 주소 풀 중 하나로 자동 1:1 매핑한다.
- ip nat inside / ip nat outside 로 내부·외부 인터페이스를 지정하는 점은 Static NAT와 동일하되, 매핑은 풀에서 동적으로 할당된다.
- 풀의 공인 주소 개수 ≥ 동시에 외부 통신을 해야 하는 내부 호스트 수가 되어야 한다. 모두 사용 중이면 새 호스트는 대기한다.
Dynamic NAT 설정 절차
1. 변환에 사용할 공인 주소 풀 정의
R1(config)# ip nat pool NAT-POOL 203.168.10.3 203.168.10.6 netmask 255.255.255.248
2. 번역 대상(허용) 내부 주소를 표기할 표준 ACL 작성
R1(config)# access-list 1 permit 192.168.0.0 0.0.255.255
3. ACL과 풀을 바인딩
R1(config)# ip nat inside source list 1 pool NAT-POOL
4. NAT 관점의 inside, outside 인터페이스 지정
R1(config)# interface range g0/0-1
R1(config-if)# ip nat inside
R1(config)# interface g0/2
R1(config-if)# ip nat outside
동작 개요(Inside → Outside)
- 내부 호스트의 첫 트래픽이 R1에 도착하면, 라우터는 풀에서 가용 공인 주소를 할당해 Inside Local → Inside Global 1:1 매핑을 생성한다.
- 응답 패킷은 변환 테이블을 참조해 Inside Global → Inside Local 로 역변환되어 원 호스트로 전달된다.
Dynamic NAT 검증
현재 변환 엔트리 확인
R1# show ip nat translations
자세히 보기(verbose)
R1# show ip nat translation verbose
타이머
- 기본 동적 엔트리 타임아웃은 24시간.
- 조정: ip nat translation timeout <초>
동적 엔트리 삭제(clear)
- 테스트 전에 테이블을 비우면 검증이 쉬움.
R1# clear ip nat translation *
- show running-config | include NAT 로 풀/바인딩 설정을 빠르게 점검할 수 있다.
PAT 구성과 검증
PAT 시나리오
- ISP가 조직에 공인 IPv4 주소를 하나만 할당했을 때 또는 여러 개를 할당했을 때 모두 PAT로 다수 내부 호스트의 인터넷 접속을 처리할 수 있다.
- 핵심은 L4 포트 번호(또는 ICMP Query ID)를 함께 변환해, 하나의 공인 주소를 여러 내부 호스트가 공유하게 만드는 것이다.
단일 공인 IPv4 주소를 사용하는 PAT 구성
- ip nat inside source 명령에 overload 키워드를 추가한다.
- 예시: ACL 1로 192.168.0.0/16을 허용하고, 외부 인터페이스 S0/1/1의 주소(209.165.200.225)를 공인 주소로 사용한다.
R1(config)# ip nat inside source list 1 interface G0/2 overload
R1(config)# access-list 1 permit 192.168.0.0 0.0.255.255
R1(config)# interface range g0/0-1
R1(config-if)# ip nat inside
R1(config)# interface g0/2
R1(config-if)# ip nat outside
- 내부 호스트는 모두 209.165.200.225로 변환되어 나가며, 각 세션은 고유한 출발지 포트로 구분된다.
주소 풀을 사용하는 PAT 구성
- ISP가 공인 주소를 여러 개 제공할 경우, 풀을 정의하고 overload를 결합해 PAT를 운용한다.
R1(config)# ip nat pool NAT-POOL 203.168.10.3 203.168.10.4 netmask 255.255.255.248
R1(config)# access-list 1 permit 192.168.0.0 0.0.255.255
R1(config)# ip nat inside source list 1 pool NAT-POOL overload
R1(config)# interface range g0/0-1
R1(config-if)# ip nat inside
R1(config)# interface g0/2
R1(config-if)# ip nat outside
- 풀의 각 공인 주소를 다수 호스트가 공유할 수 있어, 세션 수가 매우 많을 때도 포트 범위를 넓게 활용 가능하다.
핵심 요점
- PAT는 하나의 공인 IP를 여러 내부 호스트가 공유하되, 세션을 L4 포트(또는 ICMP Query ID)로 구분한다.
- 반환 트래픽은 목적지 주소와 포트 조합으로 정확한 내부 호스트를 식별해 원래의 사설 주소와 포트로 복원된다.
- 실제 검증은 show ip nat translations 로 두 엔트리가 같은 inside global 주소지만 포트가 서로 다름을 확인하면 된다.
PAT 검증
- 정적/동적 NAT와 동일한 검증 명령을 사용한다.
변환 테이블 확인
R2# show ip nat translations
통계 확인
R2# show ip nat statistics
- 활성 변환 수, 풀의 주소 개수와 할당 수, 히트/미스 카운트 등을 통해 동작을 종합적으로 점검한다.
운영 팁
- 단일 주소 PAT에서 포트 고갈 시, 주소 풀 PAT로 전환하면 여유가 생긴다.
- 애플리케이션 특성상 고정 포트가 필요한 서버용 트래픽은 PAT 영역에서 제외하고 정적 NAT 또는 정책 기반 NAT를 병행한다.
- 문제 발생 시 clear ip nat translation * 로 동적 엔트리를 비우고 재테스트하면 진단이 수월하다.
'네트워크 > 기초 학습' 카테고리의 다른 글
DHCPv4 실습 (4) | 2025.08.12 |
---|---|
ACL 실습 (3) | 2025.08.11 |
Cisco 장비 SSH 원격 접속 실습 (2) | 2025.08.10 |
Day 10: 네트워크 장비들 (4) | 2025.08.10 |
Day 9: 네트워크 프로토콜들 (3) | 2025.08.08 |