VPC를 공부하다 보면 마주치는 서브넷
프라이빗 서브넷과 퍼블릭 서브넷으로 나뉜다고 하는데 그게 무엇일까?
퍼블릭 서브넷과 프라이빗 서브넷은 AWS(Virtual Private Cloud)와 같은 클라우드 환경에서 사용되는 네트워크를 보호 및 분리할 수 있는 솔루션이다.
이들은 보안그룹 및 ACL과 주로 함께 사용되는데, 이에 관해서는 보안그룹과 ACL를 참고.
외부에서 접근 가능한 리소스를 호스팅하는 용도로 사용된다.
주로 웹 서버, 로드 밸런서, CDN 등이 퍼블릭 서브넷에 위치하여 사용된다.
공인 IP 주소가 할당된다.
퍼블릭이므로 외부에서 직접 접근 가능하다.
예시: 웹 애플리케이션 서버, 로드 밸런서, CDN 등
🙄 Q
퍼블릭 서브넷에 웹 어플리케이션이 동작중일 때, NAT 게이트웨이가 없어도 웹 페이지에 접속이 가능하다.
그 이유가 무엇일까?
👉 ANS
일반적으로 VPC 내에 있는 퍼블릭 서브넷에는 외부와 통신하기 위해 퍼블릭(공인) IP 주소가 할당된다. 따라서 이러한 공인 IP를 통해 NAT 게이트웨이를 만들지 않더라도, 퍼블릭 서브넷에 있는 인스턴스들은 직접 인터넷과 통신할 수 있다.
외부에서의 직접 접근을 허용하지 않고, 내부 리소스를 안전하게 유지하는 데 사용된다.
주로 데이터베이스 서버, 애플리케이션 서버 등이 프라이빗 서브넷에 위치하여 사용된다.
사설 IP 주소가 할당된다.
외부에서 직접적으로 접근할 일이 없기에, 사설 IP 주소가 할당되어 사용된다.
🙄 Q
프라이빗 서브넷은 퍼블릭 IP 주소가 없을까?
👉 ANS
없다. 프라이빗 서브넷은 퍼블릭 IP 주소가 할당되지 않은 서브넷이다. 프라이빗 서브넷에 있는 인스턴스는 기본적으로 외부와 직접 통신할 수 없어야 하기 때문이다. 따라서 프라이빗 서브넷 내부의 리소스가 외부에 직접 접근하려면 NAT 게이트웨이, NAT 인스턴스, VPN 등을 사용하여 인스턴스가 외부와 통신하게 된다.
외부에서의 직접적인 접근이 차단되며, 외부와의 통신은 NAT 게이트웨이를 통해 이루어진다.
예시: 데이터베이스 서버, 내부 애플리케이션 서버
🗽 쇼핑몰 웹 페이지를 운영한다고 생각해보자.
프론트 기능을 하는 웹 페이지 서버는 퍼블릭 서브넷에 위치하여 외부에서 웹 페이지에 접근할 수 있도록 해야한다.
(그래야 모든 쇼핑몰을 이용하는 사용자들이 이러한 웹 서버에 접속할 것이다)
사용자 정보
, 판매 상품의 상세정보
, 판매자 정보
등 중요한 정보들이 저장된 데이터베이스 서버는 보안을 위해 외부에서는 직접적으로 액세스할 수 없는 프라이빗 서브넷에 위치해야 한다.
웹 페이지 서버는 퍼블릭 서브넷에서 작동하면서 구매
, 판매
등의 요청이 들어오면 프라이빗 서브넷에 위치한 데이터베이스 서버와 NAT 게이트웨이를 통해 통신이 이루어진다.
이를 통해 외부에서의 직접적인 데이터베이스 접근을 방지하면서도 필요한 서비스 간 통신이 이루어진다.
🙄 Q
웹 서버와 데이터베이스 서버는 같은 VPC에 위치한다.
이처럼 같은 VPC인데도 프라이빗 서브넷에 접근하려면 NAT를 통과해야할까?
👉 ANS
통과해야 한다. 같은 VPC 내에서도 퍼블릭 서브넷에 위치한 인스턴스가 프라이빗 서브넷에 접근하려면 NAT 게이트웨이 또는 NAT 인스턴스를 통과해야 한다. 이는 VPC 내에서 서브넷 간에는 기본적으로 직접 통신이 차단되어 있기 때문이다.
서브넷은 만들 때, 퍼블릭과 프라이빗을 지정할 수 있는 것이 아니다.
단지, 퍼블릭 서브넷과 프라이빗 서브넷이 나뉘게 되는 기준은 라우팅 테이블에 따라 달라진다.
대상 주소가 0.0.0.0/0
이고 igw-
로 시작하는 인터넷 게이트웨이로 가는(default) 경로가 있느냐/없느냐에 따라서 퍼블릭/프라이빗 서브넷이 구분된다.