
1. NAT란?
사설 IP 주소를 공인 IP 주소로 변환하여 인터넷과 통신할 수 있도록 해주는 기술이다.
동작방식은 다음과 같다.
패킷이 라우터를 통과할 때 출발지 또는 목적지 IP 주소를 변환하고,
라우터가 변환된 IP 정보를 유지하여 응답 패킷을 올바르게 전달한다.
2. NAT의 종류
정적 NAT와 동적 NAT 그리고 PAT가 있다.
2-1. 정적 NAT
고정된 1:1 IP 변환이다. (특정 사설 IP를 특정 공인 IP에 매칭하는 것이다.)
사실상 1:1로 맵핑하는 것이므로 IP 절약과 정적 NAT는 관련이 없다.
목적은 외부에서 내부 서버에 접속 가능하도록 하기 위함이다.

## src 들어오면, dst(공인IP)으로 내보내주겠다.
Router(config)# ip nat inside source static 192.168.1.10(src) 203.0.113.10(dst)
## ACL도 만들고 인터페이스에 연결했듯이 얘도 마찬가지로 인터페이스에 연결해야한다.
Router(config)# interface GigabitEthernet0/0
Router(config-if)# ip nat inside
Router(config-if)# exit
Router(config)# interface GigabitEthernet0/1
Router(config-if)# ip nat outside
cf. Port Forwarding
정적 NAT 외에 바깥에서 내부로 들어가는 방법 중 또 하나는 Port Forwarding이다.
실무에서는 공인 IP 주소가 부족하기 때문에 정적 NAT보다 훨씬 더 많이 사용된다.
포트 포워딩은 1개의 공인 IP를 여러 대의 내부 서버가 나누어 쓸 수 있다.
포트 기반으로 전달하기 때문에 공인 IP의 몇 번 포트로 들어오느냐에 따라 각각 다른 내부 사설 IP로 연결해 준다.
보안적인 측면에서도 서버의 모든 문을 여는 정적 NAT와 다르게
꼭 필요한 특정 포트(서비스)만 골라서 열 수 있어 더 안전하다.
비교하자면
- 정적 NAT: 공인 IP 하나를 특정 서버에 통째로 빌려주는 것 (1:1 매칭)
- 포트 포워딩: 공인 IP 1개는 그대로 두고, 포트 번호만 쪼개서 서버들에 연결해 주는 것이다.
ip nat inside source static tcp 10.1.1.100 80 3.3.3.1 80
>>이 바깥쪽 포트 번호는 내가 마음대로 할 수 있따. 접근하는거니까
-----------
ip nat inside source static tcp 10.1.1.100 80 3.3.3.1 8888 (포트포워딩)
만약 8888포트로 바꿨다면
http://3.3.3.1:8888 이렇게 접근 가능하다.
**밖에서 안으로 들어올 때는 라우터가 어디로 보낼지 가르쳐줘야 하니 포트 설정이 필수다.
2-2. 동적 NAT
목적 : 안에서 밖으로 나갈 때 (인터넷을 사용할 때)
사설 IP를 공인 IP 풀(Pool)에서 매핑되거나 특정 IP주소를 매핑하여 변환한다.
IP 개수 제한이 있기 때문에 풀에 남은 IP가 없으면 할당 불가하다.
(공인 IP 여러 개를 모아놓고, 먼저 접속하는 순서대로 하나씩 빌려주는 거라 생각하면 된다.)
1:1 매핑이 아니라, 그 때 그 때 매칭되는 주소가 달라진다. (1:N)
ex. 100개의 사설 IP가 있고, 공인 IP가 5개 있다면
그 때 그때 배정받아서 매핑되고, 5개가 이미 다 매핑된 상태라면 나머지 95개는 할당 못 받고 기다려야 한다.
동적 NAT에서는 ACL 설정이 필요한데,
여기서도 ACL은 보안 목적보다는 어떤 사설 IP들이
공인 IP를 빌려 쓸 자격이 있는지 분류하는 역할을 한다.
Router(config)# ip nat pool PUBLIC_POOL 203.0.113.10 203.0.113.20 netmask 255.255.255.240
Router(config)# access-list 1 permit 192.168.1.0 0.0.0.255
Router(config)# ip nat inside source list 1 pool PUBLIC_POOL
192.168.1.0/24 네트워크의 IP가 203.0.113.10~203.0.113.20 중 하나로 변환된다.
2-3. PAT - NAT Overload
목적 : 안에서 밖으로 나갈 때 (인터넷을 사용할 때)
Port Address Translation으로 다중 NAT이다.
하나의 공인 IP를 여러 사설 IP가 공유하는 것이다.
위의 동적 NAT의 문제를 PAT가 해소할 수 있다. (그래서 가장 일반적인 NAT 방식이다.)
위에서는 공인 IP가 5개일 때, 100개의 사설 IP가 온다면 5개만 변환해줄 수 있었다.
하지만 이제 Port번호를 다르게 하면 5개의 공인 IP만 있더라도, 전부 변환해줄 수 있게 된다.
즉 포트 번호를 변경하여 패킷을 구분할 수 있게 됨에 따라 동시에 더 많이 IP를 매칭시킬 수 있게 된다.
-> 다수의 사설 IP가 하나의 공인 IP를 공유할 수 있게 된다!
Router(config)# access-list 1 permit 192.168.1.0 0.0.0.255
Router(config)# ip nat inside source list 1 interface GigabitEthernet0/1 overload
>> overload를 써서 표기한다. 그러면 라우터가 자동으로 남는 포트 번호를 할당하여 공인 IP로 변환시킨다.
아래 내용이 핵심이다.
헷갈리지 않고 잘 사용하자!
dynamic nat나 pat는 밖에서 안으로는 못 들어간다.
외부에서 들어오려면 static nat쓰던지 port forwarding 써야한다.
'공부기록 > Network' 카테고리의 다른 글
| [ 네트워크 ] 라우팅 | 정적 라우팅 | 동적 라우팅 (0) | 2026.02.09 |
|---|---|
| [ 네트워크 ] ACL (Access Control List) (0) | 2026.01.28 |
| [ 네트워크 ] VPN(Virtual Private Network)과 IPsec (Internet Protocol Security) (0) | 2026.01.07 |