1. 공인 IP(외부망)와 사설IP(사설망 또는 내부망)
[용어 정리]
- 외부망(Internet, Public Network): 전 세계적으로 라우팅되는 공용 네트워크, 공인 IP 대역을 사용한다.
- 내부망(Internal Network, LAN): 공유기 뒤편의 로컬 네트워크, 사설 IP 대역을 사용한다.
- 사설망(Private Network): 내부망과 동의어
- 공인 IP(Public IP): 인터넷 전체에서 유일한 주소.
- 사설 IP(Private IP): 내부망에서만 유일한 주소.
* 외부망과 내부망은 아래 그림처럼 구성된다. (파란색: 외부망, 빨간색: 내부망)

[문제점]

- 서버의 공인IP는 고유하므로 컴퓨터A에서 서버로는 메시지를 보낼 수 있다.
- 그러나, 컴퓨터A의 IP주소는 사설IP이므로 주소가 고유하지 않고, 따라서 서버에서 컴퓨터A로 메시지를 보낼 수 없다.
- (아래 NAT 방법으로 해결한다.)
2. NAT (Network Address Translation, 내부 → 외부)
: 두 개의 서로 다른 IP 주소 공간을 서로 매핑하는 기술로, IP 패킷 헤더의 IP 주소 필드에 기록된 값을 변경하는 방식으로 구현됨.
즉, 아래와 같이 이루어진다.

- 사설망 → 외부망: 공유기에서 기존 호스트의 Src를 공유기의 IP로 교체
- 외부망 → 사설망: 공유기에서 기존 공유기로의 Dst를 원래 호스트의 IP로 교체
[NAT의 종류]
- Static NAT:
- 하나의 사설 IP가 하나의 공인 IP로 매핑되어 사용한다.
- 매핑이 오랜기간 유지된다. (static)
- Dynamic NAT:
- 하나의 사설 IP가 동적으로 공인 IP에 매핑되어 사용한다.
- NAT을 위한 공인 IP 풀(pool)을 유지하고, NAT 요청이 발생할 경우, 이용가능한 공인 IP 중 하나를 동적으로 사설 IP와 매핑한다.
- PAT (Port Address Translation) 또는 NAT overload:
- 다수의 사설IP가 하나의 공인IP에 매핑되어 사용한다. (N:1)
- 서로 다른 사설 IP를 구분하기 위해 포트번호 정보를 추가로 사용한다.
- NAT 기법 중 가장 널리 사용되는 기법이다.

[문제점]
- [컴퓨터A]에서 [서버]로 요청을 보내고, [서버]가 [컴퓨터A]로 응답하는 것은 NAT로 처리 가능
- [외부망 PC]에서 [컴퓨터A]로 요청을 보내고, [컴퓨터A]가 [외부망PC]로 응답하는 것이 불가능 → Port Forwarding으로 해결

3. 포트포워딩 (Port Forwarding, 외부 → 내부)
- NAT의 응용분야로, 하나의 IP:port 조합으로 전송된 데이터를 다른 IP:port 조합으로 redirect 해주는 기법
- 외부망에서 내부망으로 서비스 요청하는 경우 처리에 적합함.
- 이러면 처음부터 내부망 주소(사설IP)를 보내면 되지 않나 싶지만 사설 IP는 수 억개의 가정과 회사에서 공통적으로 사용하는 주소이므로 중복문제가 발생하기 때문에 이런 구조를 가지게 되는 것이다. (사설IP는 인터넷 공간에서 고유하지 않다!)

- 외부 사용자가 외부 공인IP [200.100.10.1:1024]를 목적지로 요청
- 라우터는 포트포워딩 테이블을 검색 → [200.100.10.1:1024]는 [10.1.1.1:1024]로 매핑되어있음.
- 라우터가 목적지 주소(Dst)를 [200.100.10.1:1024]에서 [10.1.1.1:1024]로 변경.
- 내부에서 다시 외부로 응답할 때는 Src를 [10.1.1.1:1024]에서 [200.100.10.1:1024]로 변경해서 외부로 내보냄.
4. IP 주소 할당 방법
- 고정IP 할당 (Static IP):
- IP 주소를 고정적으로 할당하는 것으로 공인 IP를 사용할 때 사용
- 머신이 재부팅되어도 동일한 IP주소 사용
- 동적IP 할당 (Dynamic IP):
- DHCP(Dynamic Host Configuration Protocol)을 사용해, 동적으로 사용가능한 IP 주소 할당.
- pool 형태로 ip주소 관리, 사설ip를 사용할 때 사용함.
5. 리눅스 호스트 통신

- 호스트(외부망): 컴퓨터
- 윈도우 OS
- 사설IP (192.168.0.186) 사용 (but, 게스트 VM입장에서는 공인 IP를 사용하는 것으로 볼 수 있다.)
- 게스트(사설망): VM
- Kali 리눅스 OS
- 사설IP (10.0.2.15) 사용

- 사설IP → 공인IP: 가능
- 공인IP → 사설IP: 불가능, NAT 필요
6. VirtualBox 가상 네트워크
가상네트워크1: [연결되지 않음]

- 가상머신을 네트워크에 연결하지 않음.
- 가상머신은 인터넷에 접근 불가하고, 호스트PC의 다른 가상머신과도 통신불가하다.
가상네트워크2: [NAT]

- VM에서 호스트PC 외부 네트워크로 통신 가능 (내부 → 외부 → 내부: ok)
- VM 네트워크에서는 사설IP 사용
- 외부 네트워크로 나갈 때 NAT 적용 (호스트PC의 IP로 주소 변환이 적용됨)
- 호스트PC 내의 VM간 통신 불가능 (guest 끼리 통신 불가능)
- 외부 → 내부 통신 불가능
가상네트워크3: [NAT 네트워크]

- NAT과 동일함. 단, 호스트PC 내의 VM끼리 통신 가능
가상네트워크4: [어댑터에 브리지]
| [NAT]과 [어댑터에 브리지] 비교 | VM에도 공인 IP가 할당됨 (호스트PC와 동일한 수준) |
![]() |
![]() |
- VM을 호스트PC와 동일한 수준으로 네트워크를 구성한다.
- VM에 공인IP를 할당해야한다.
* DHCP 기반 동적IP 할당하는 경우
- [NAT] 모드:
- 호스트PC: 공유기로부터 IP 할당
- VM: 호스트PC의 VBox에서 동적으로 IP 할당
- [어댑터에 브리지] 모드:
- 호스트PC: 공유기로부터 IP 할당
- VM: 공유기로부터 IP 할당.
가상네트워크5: [내부 네트워크]

- 호스트PC와 분리되고, 같은 호스트PC 내의 VM끼리는 통신이 가능하다.
가상네트워크6: [호스트 전용 어댑터]

- 호스트PC는 내부 VM과 통신 가능, 호스트PC와 외부네트워크는 단절
- 같은 호스트PC 내의 다른 VM끼리 통신 가능
7. 호스트 PC ↔ VM 통신 문제

- <가상머신 A>에서 <호스트PC>로 ping을 보낼 수 있지만, <호스트PC>에서 <가상머신A>로 ping을 보낼 수 없음.
- [외부망] → [내부망] 은 사설IP이기 때문
솔루션1: VM의 네트워크 설정을 [어댑터에 브릿지]로 변경
- 호스트PC와 가상머신의 네트워크 수준이 같아지고, 같은 C클래스 IP주소를 부여받음.
- 동일 C클래스에 속하는 것으로 인식되어 서로 통신이 가능해진다.
- 단, 가상머신에 부여할 C클래스 IP주소가 있어야한다.
솔루션2: [NAT] 네트워크에서 포트포워딩 설정
- 특정 포트번호를 내부 가상머신과 매핑하는 방식으로, 호스트PC에서 가상머신으로 연결/접속이 가능하다.
'컴퓨터공학 > 네트워크' 카테고리의 다른 글
| [네트워크] 06. 네트워크 전송의 기초 (0) | 2025.10.20 |
|---|---|
| [네트워크] 05. 네트워크 기술 (0) | 2025.10.19 |
| [네트워크] 03. 리눅스, 네트워크 도구 활용 (0) | 2025.10.18 |
| [네트워크] 02. 네트워크 주소와 모델 (0) | 2025.09.20 |
| [네트워크] 01. 네트워크 용어 기능 (feat. OSI 7계층) (0) | 2025.09.18 |


