1. “이 주소로 접속하세요”라고 알려줬는데 왜 안 될까?
서버나 개발 중인 앱을 친구에게 보여주려고 IP 주소를 알려줬더니 접속이 안 된다는 상황이 있습니다. 분명히 내 컴퓨터에서는 잘 됩니다. 내가 알려준 주소는 192.168.0.5였습니다.
왜 안 될까요? 192.168.x.x는 사설 IP이기 때문입니다. 이 주소는 내 집 안 네트워크에서만 통하고, 외부 인터넷에서는 접근할 수 없습니다.
2. 사설 IP란 무엇인가?
**사설 IP(Private IP)**는 특정 로컬 네트워크 내부에서만 사용하도록 예약된 IP 주소입니다. 전 세계 인터넷에서 라우팅되지 않습니다.
사설 IP로 예약된 주소 범위는 다음과 같습니다.
| 범위 | 주로 사용되는 곳 |
|---|---|
| 10.0.0.0 ~ 10.255.255.255 | 기업 내부망, AWS VPC |
| 172.16.0.0 ~ 172.31.255.255 | 중규모 네트워크 |
| 192.168.0.0 ~ 192.168.255.255 | 가정용 공유기 |
집에서 공유기를 사용하면 스마트폰, 노트북, TV 같은 기기들은 192.168.x.x 형태의 사설 IP를 부여받습니다. AWS EC2 인스턴스의 내부 IP가 10.x.x.x인 것도 같은 이유입니다.
3. 공인 IP란 무엇인가?
**공인 IP(Public IP)**는 전 세계 인터넷에서 유일하게 식별되는 IP 주소입니다. 인터넷 서비스 제공자(KT, SKT, LG U+)로부터 할당받습니다.
내 공인 IP를 확인하고 싶다면 구글에서 “내 IP 주소”를 검색하면 바로 확인할 수 있습니다.
사설 IP와 공인 IP의 가장 큰 차이는 인터넷 접근 가능 여부입니다.
| 구분 | 사설 IP | 공인 IP |
|---|---|---|
| 인터넷 접근 | 불가능 | 가능 |
| 유일성 | 네트워크 내부에서만 유일 | 전 세계에서 유일 |
| 할당 주체 | 공유기나 라우터 | 인터넷 서비스 제공자 |
| 비용 | 무료 | 유료 (인터넷 요금에 포함) |
4. 공유기와 NAT – 사설 IP로 인터넷이 되는 원리
사설 IP를 가진 기기가 어떻게 인터넷을 사용할 수 있을까요? 공유기가 **NAT(Network Address Translation, 네트워크 주소 변환)**를 수행하기 때문입니다.
내 노트북(192.168.0.5)에서 유튜브에 접속할 때의 과정입니다. 노트북이 공유기(사설 게이트웨이)에 요청을 보냅니다. 공유기가 내부 주소(192.168.0.5)를 공인 IP로 변환해 유튜브 서버로 전송합니다. 유튜브 서버의 응답이 공인 IP로 돌아오면 공유기가 다시 192.168.0.5로 전달합니다.
이 과정 덕분에 여러 기기가 하나의 공인 IP를 공유해 인터넷을 사용할 수 있습니다.
5. 포트 포워딩 – 외부에서 내부 기기에 접속하기
외부 인터넷에서 내부 사설 IP 기기에 직접 접속하려면 **포트 포워딩(Port Forwarding)**을 설정해야 합니다.
공유기에 “외부에서 80번 포트로 오는 요청을 내부 192.168.0.5의 80번 포트로 전달해줘”라고 설정하는 방식입니다.
공유기 관리 페이지(주로 192.168.0.1 또는 192.168.1.1)에 접속해 포트 포워딩 설정 메뉴를 찾아 설정합니다.
단, 가정용 인터넷은 대부분 유동 IP입니다. 공인 IP가 며칠마다 바뀝니다. 고정 IP 서비스를 신청하거나 DDNS(Dynamic DNS) 서비스를 활용하면 IP가 바뀌어도 같은 도메인으로 접속할 수 있습니다.
6. 클라우드 서버의 IP 구조
AWS EC2 같은 클라우드 서버를 사용하면 내부 IP와 외부 IP 두 가지가 할당됩니다.
내부 IP(Private IP): 10.x.x.x 형태로 같은 VPC(가상 네트워크) 내에서만 사용합니다. 같은 VPC 내 다른 서버끼리 통신할 때 사용합니다.
외부 IP(Public IP): 인터넷에서 접근할 수 있는 공인 IP입니다.
클라우드 서버에서 외부 접속이 안 되는 경우 두 가지를 확인해야 합니다. 서버 자체의 UFW 방화벽 설정, 그리고 AWS라면 보안 그룹(Security Group)에서 인바운드 규칙 설정입니다.
AWS 서버를 재시작하면 퍼블릭 IP가 바뀔 수 있습니다. IP를 고정하려면 **탄력적 IP(Elastic IP)**를 할당합니다.
7. 접속이 안 될 때 확인해야 할 것들
상황 1. 내가 알려준 IP로 친구가 접속 못 하는 경우 사설 IP를 알려준 것이 아닌지 확인합니다. 구글에서 “내 IP 주소”를 검색해 공인 IP를 확인하고 그것을 알려줍니다.
상황 2. 공인 IP로 접속을 시도해도 안 되는 경우 공유기에서 포트 포워딩이 설정됐는지 확인합니다. 서버에서 해당 서비스가 실행 중인지 확인합니다. 방화벽에서 해당 포트가 열려 있는지 확인합니다.
상황 3. 클라우드 서버에 접속 안 되는 경우 AWS라면 보안 그룹 인바운드 규칙을 확인합니다. UFW 방화벽 설정을 확인합니다.
8. 정리 및 다음 단계
오늘 배운 핵심을 정리합니다.
- **사설 IP(192.168.x.x, 10.x.x.x)**는 로컬 네트워크 내부에서만 사용하며 외부 인터넷에서 접근할 수 없습니다.
- 공인 IP는 인터넷에서 유일하고 외부에서 직접 접근 가능합니다.
- NAT를 통해 여러 기기가 하나의 공인 IP를 공유해 인터넷을 사용합니다.
- 외부에서 내부 기기에 접근하려면 공유기에서 포트 포워딩을 설정해야 합니다.
- 클라우드 서버 접속 문제는 UFW와 보안 그룹 양쪽을 모두 확인합니다.
다음 글에서는 서버 없이 정적 웹사이트를 무료로 배포하는 방법, GitHub Pages·Netlify·Vercel 비교를 알아보겠습니다.