기초부터 탄탄히
VPC란?
AWS VPC[Virtual Private Cloud]는 AWS 클라우드 내에서 가상 네트워크 환경을 구축할 수 있는 서비스입니다. VPC를 사용하면 가상 네트워크 토폴로지를 정의하고, 서브넷, 라우팅 테이블, 네트워크 게이트웨이 등의 네트워크 리소스를 관리할 수 있습니다.
1. 격리된 네트워크 환경: VPC를 통해 AWS 클라우드 내에서 논리적으로 격리된 가상 네트워크 환경을 생성할 수 있습니다. 이를 통해 보안 및 네트워크 제어 수준을 높일 수 있습니다.
2. 확장성: VPC는 필요에 따라 쉽게 확장 가능합니다. 서브넷을 추가하거나 가용 영역을 확장하여 리소스를 유연하게 관리할 수 있습니다.
3. 보안: VPC 내에서 보안 그룹과 네트워크 ACL(Access Control List)을 통해 인스턴스 및 서브넷 수준에서 트래픽을 제어할 수 있습니다. 이를 통해 네트워크 액세스를 세밀하게 제어할 수 있습니다.
4. 연결성: VPC는 인터넷 게이트웨이, NAT 게이트웨이, VPN 등을 통해 인터넷 및 온프레미스 네트워크와 연결할 수 있습니다. 이를 통해 하이브리드 클라우드 환경을 구축할 수 있습니다.
5. 사용자 정의 IP 주소 범위: VPC에서는 사용자 정의 IP 주소 범위를 할당할 수 있습니다. 이를 통해 기존 네트워크와의 통합이 용이해집니다.
6. 다양한 서비스와의 통합: VPC는 EC2, RDS, ElastiCache 등 다양한 AWS 서비스와 원활하게 통합되어 안전하고 확장 가능한 아키텍처를 구축할 수 있습니다.
VPC는 AWS 클라우드 환경에서 네트워크 인프라를 구축하고 관리하는 핵심 서비스로, 보안, 확장성, 유연성 등의 이점을 제공합니다. 이를 통해 사용자는 클라우드 리소스를 효과적으로 활용하고 관리할 수 있습니다.
서브넷, 라우팅 테이블, 네트워크 게이트웨이
용어 정리
1. 서브넷 [Subnet]
서브넷은 VPC 내에서 IP 주소 범위를 구분하는 논리적인 단위입니다. 서브넷을 통해 VPC를 더 작은 네트워크 세그먼트로 나누어 관리할 수 있습니다. 주로 퍼블릭 서브넷과 프라이빗 서브넷으로 구분됩니다.
- 퍼블릭 서브넷[Public Subnet]: 인터넷 게이트웨이(Internet Gateway)와 연결되어 있어 인터넷과의 통신이 가능한 서브넷입니다. 웹 서버와 같은 인터넷과 직접 통신이 필요한 리소스들이 주로 위치합니다.
- 프라이빗 서브넷[Private Subnet]: 인터넷과 직접 연결되지 않은 서브넷으로, 인터넷과의 통신은 NAT 게이트웨이(Network Address Translation Gateway)를 통해 이루어집니다. 데이터베이스 서버와 같은 내부 리소스들이 주로 위치합니다.
2. 라우팅 테이블 [Routing Table]
라우팅 테이블은 네트워크 트래픽의 경로를 정의하는 테이블입니다. 서브넷 내의 인스턴스가 다른 네트워크와 통신할 때, 라우팅 테이블에 정의된 규칙에 따라 트래픽이 전달됩니다. 라우팅 테이블에는 다음과 같은 정보가 포함됩니다:
- 목적지[Destination]: 트래픽이 전달될 네트워크의 IP 주소 범위입니다.
- 목적지까지의 경로[Target]: 트래픽을 전달할 네트워크 게이트웨이, 예를 들어 인터넷 게이트웨이, NAT 게이트웨이, 또는 VPC 피어링 연결 등입니다.
3. 네트워크 게이트웨이 [Network Gateway]
네트워크 게이트웨이는 VPC와 다른 네트워크 간의 트래픽을 중계하는 역할을 합니다. 주요 네트워크 게이트웨이에는 다음이 있습니다 :
- 인터넷 게이트웨이[Internet Gateway]: VPC와 인터넷 간의 트래픽을 중계합니다. 퍼블릭 서브넷이 인터넷과 통신할 수 있도록 합니다.
- NAT 게이트웨이[NAT Gateway]: 프라이빗 서브넷의 인스턴스가 인터넷과 통신할 수 있도록 중계합니다. 주로 프라이빗 서브넷의 인스턴스가 인터넷에서 소프트웨어 업데이트를 받을 때 사용됩니다.
- VPN 게이트웨이[VPN Gateway]: VPC와 온프레미스(기업 내부) 네트워크 간의 안전한 통신을 위해 VPN(가상 사설망) 연결을 제공합니다.
- VPC 피어링[VPC Peering]: 두 개의 VPC를 직접 연결하여 VPC 간의 트래픽을 라우팅합니다.
4. CIDR[Classless Inter-Domain Routing]
CIDR은 IP 주소와 서브넷 마스크를 함께 사용하여 네트워크 주소를 지정하는 방식입니다. 이를 통해 네트워크를 더 유연하고 효율적으로 관리할 수 있습니다.
- CIDR의 구성
CIDR 표기법은 IP 주소와 슬래시(`/`)로 구분된 서브넷 마스크 길이로 구성됩니다. 예를 들어, `192.168.0.0/16`은 다음과 같이 해석됩니다:
- IP 주소: `192.168.0.0`
- 서브넷 마스크 길이: `16`
서브넷 마스크 길이는 IP 주소의 네트워크 부분을 나타내는 비트 수를 의미합니다. 위 예시에서는 16비트가 네트워크 부분을 나타내며, 나머지 16비트가 호스트 부분을 나타냅니다.
- 서브넷 마스크 계산
CIDR 표기법에서 서브넷 마스크 길이는 네트워크의 크기를 결정합니다. `192.168.0.0/16` 예시에서:
- 네트워크 부분: `192.168`
- 호스트 부분: `0.0`
서브넷 마스크를 16진수로 표현하면 `255.255.0.0`이 됩니다. 이는 네트워크에 2^16 (65,536) 개의 IP 주소를 포함할 수 있음을 의미합니다.
- CIDR 블록 선택
VPC를 만들 때 CIDR 블록을 선택하는 것은 매우 중요합니다. CIDR 블록은 VPC 내에서 사용할 수 있는 IP 주소 범위를 정의합니다. 몇 가지 예시를 들어 보겠습니다:
- /16 블록: `10.0.0.0/16`은 65,536개의 IP 주소를 제공합니다.
- /24 블록: `10.0.1.0/24`는 256개의 IP 주소를 제공합니다.
- /28 블록: `10.0.1.0/28`는 16개의 IP 주소를 제공합니다.
- VPC와 서브넷 구성
VPC를 만들 때는 보통 더 큰 CIDR 블록을 할당하고, 이를 여러 서브넷으로 나눕니다. 예를 들어, `10.0.0.0/16` VPC를 만들고 이를 여러 서브넷으로 나눌 수 있습니다:
- 퍼블릭 서브넷: `10.0.1.0/24`
- 프라이빗 서브넷: `10.0.2.0/24`
각 서브넷은 독립적으로 라우팅 및 보안 설정을 가질 수 있어 네트워크를 보다 유연하게 구성할 수 있습니다.
- CIDR 블록 선택 시 고려사항
1.필요한 IP 주소 수: VPC와 서브넷에서 필요로 하는 IP 주소 수를 고려해야 합니다. 각 서브넷에는 예약된 IP 주소가 있으므로 이를 감안해야 합니다.
2. 미래 확장성: 미래에 네트워크 확장이 필요할 수 있으므로 충분한 IP 주소 공간을 할당하는 것이 좋습니다.
3. 중복 방지: 다른 네트워크와의 충돌을 피하기 위해 고유한 CIDR 블록을 선택해야 합니다.
- CIDR 예시
- VPC CIDR 블록: `10.0.0.0/16`
- 서브넷 1: `10.0.1.0/24`
- 서브넷 2: `10.0.2.0/24`
- 서브넷 3: `10.0.3.0/24`
위 예시에서는 VPC가 65,536개의 IP 주소를 제공하며, 각 서브넷은 256개의 IP 주소를 제공합니다.
- 네트워크 주소: 서브넷을 식별하는 주소로, 서브넷 마스크를 통해 정의된 네트워크 부분을 포함합니다. 예: `192.168.1.0/24`.
- 호스트 주소: 서브넷 내의 개별 장치를 식별하는 주소로, 네트워크 주소와 호스트 부분을 포함합니다. 예: `192.168.1.1`부터 `192.168.1.254`까지.
- 브로드캐스트 주소: 서브넷 내 모든 호스트에게 메시지를 보내는 주소로, 서브넷의 마지막 주소입니다. 예: `192.168.1.255`.
가장 쉽게 따라해보는
VPC 생성
1. AWS Console에서 VPC를 검색합니다.
2. VPC 생성 버튼을 눌러주고, IPv4 CIDR은 10.0.0.0/16로 256개의 IP 주소를 제공하는 것을 사용합니다.
3. 잘 생성된 모습을 확인할 수 있습니다.
4. 이제 VPC를 생성했으니, 서브넷을 생성해보겠습니다. VPC ID는 나의 VPC ID를 선택해주면 됩니다. 태그를 줬기 때문에 값에 입력했던 것을 그대로 가져다가 검색하면 찾기 쉬울 것 같습니다! 물론 나만 쓰는 계정이면 손쉽게 찾겠지만
IPv4 서브넷 CIDR 블록에는 subnet-1은 10.0.1.0/24, subnet-2는 10.0.2.0/24로 설정해줍니다.
5. 인터넷 게이트웨이를 생성합니다.
6. 인터넷 게이트웨이에 VPC를 연결합니다.
7. 라우팅 테이블을 생성합니다.
8. 라우팅 편집 버튼을 눌러줍니다. 5단계에서 만든 인터넷 게이트웨이를 추가해줍니다.
9. 서브넷 연결 편집을 통해 아까 만들었던, 서브넷 두개를 라우팅 테이블에 연결해줍니다.
10. IP 주소는 살짝 다르지만, 위의 구조와 동일한 구조로 이루어져 있습니다.