-
[GCP] vpc, subnet, 방화벽 설명 및 생성해보기AWS & GCP 2025. 3. 30. 15:01
VPC
VPC 네트워크 예시
- Subnet1은 us-west1 리전에서 10.240.0.0/24로 정의됩니다.
- us-west1-a 영역의 두 개 VM 인스턴스가 이 서브넷에 있습니다. 두 개의 IP 주소는 모두 subnet1의 가용 주소 범위에 속합니다.
- Subnet2는 us-east1 리전에서 192.168.1.0/24로 정의됩니다.
- us-east1-b 영역의 두 개 VM 인스턴스가 이 서브넷에 있습니다. 두 개의 IP 주소는 모두 subnet2의 가용 주소 범위에 속합니다.
- Subnet3도 us-east1 리전에서 10.2.0.0/16으로 정의됩니다.
- us-east1-b 영역의 VM 인스턴스 하나와 us-east1-c 영역의 두 번째 인스턴스는 각각 subnet3에 있으며 사용 가능한 범위에서 IP 주소를 수신합니다. 서브넷은 리전 리소스이므로 인스턴스는 네트워크 인터페이스가 각자의 영역이 포함된 동일한 리전의 서브넷과 연결되도록 할 수 있습니다.
이름, 설명
VPC의 이름과 해당 VPC에 대한 설명을 명시합니다.
최대 전송 단위(MTU)
MTU(최대 전송 단위)는 IP 헤더, 레이어 4 프로토콜 헤더, 레이어 4 데이터를 포함하여 이더넷 프레임 안에 들어갈 수 있는 최대 IP 패킷의 크기(바이트)입니다. 1460, 1500, 8896 중 선택할 수 있으며 인터넷은 일반적으로 1,500바이트의 MTU를 사용하므로 IP 패킷 크기를 1,500바이트 이하로 유지하면 일반적으로 MTU 관련 패킷 손실을 방지할 수 있습니다.
네트워크 프로필 구성
네트워크 프로필 리소스를 사용하여 특정 사용 사례에 맞게 VPC 네트워크의 특정 속성을 사전 구성합니다. 기본값은 자동이며 원격 직접 메모리 액세스 (RDMA)를 지원하는 네트워크 인터페이스 (NIC)가 있는 머신에서 AI 워크로드를 실행하는 것과 같은 사례가 있을 때, 선택합니다.
선택 기준 자동(Auto) 사용자 지정(Custom) 네트워크 최적화 GCP가 자동 최적화 사용자가 직접 설정 설정 복잡도 간단함 (자동) 복잡함 (직접 설정 필요) 사용 사례 일반적인 VPC 네트워크 고성능 워크로드, 맞춤형 QoS 서브넷 생성 모드
서브넷 생성 모드엔 맞춤설정과 자동 모드가 있고 다음과 같은 차이가 있습니다.
- 자동모드
- 네트워크 내의 각 리전에서 하나의 서브넷이 자동으로 만들어집니다. 자동으로 생성되는 이러한 서브넷은
10.128.0.0/9
CIDR 블록에 속하는 사전 정의된 IPv4 범위 집합을 사용합니다. 새 Google Cloud 리전을 사용할 수 있게 되면 이 블록의 IP 범위를 사용하여 리전의 새 서브넷이 자동으로 자동 모드 VPC 네트워크에 추가됩니다. 자동으로 생성되는 서브넷 외에도10.128.0.0/9
이외의 IP 범위를 사용하여 선택한 리전의 자동 모드 VPC 네트워크에 수동으로 서브넷을 더 추가할 수 있습니다.
- 네트워크 내의 각 리전에서 하나의 서브넷이 자동으로 만들어집니다. 자동으로 생성되는 이러한 서브넷은
- 맞춤설정
- 서브넷이 자동으로 만들어지지 않습니다. 이 네트워크 유형에서는 개발자가 서브넷과 IP 범위를 완전히 제어할 수 있습니다. 직접 지정한 IP 범위를 사용하여 선택한 리전에 만들 서브넷을 결정합니다.
비공개 IPv6 주소 설정
VPC 네트워크에서 내부 트래픽을 위해 IPv6 주소를 사용할 수 있도록 설정하는 기능입니다.
고급 동적 라우팅 구성
이 모드는 온프레미스 네트워크와 VPC 간의 경로(Route)를 어떻게 전파할 것인지를 결정하는 설정입니다.
모드 설명 특징 지역(Regional) 모드 VPC 내에서 Cloud Router가 같은 리전(Region)에 있는 경로만 학습 - 라우트가 같은 리전에만 전파됨- 다른 리전과 연결하려면 수동으로 경로 추가 필요 전역(Global) 모드 VPC 내에서 Cloud Router가 모든 리전(Region)에 걸쳐 경로를 학습 - 라우트가 VPC의 모든 리전에 전파됨- 멀티 리전 환경에서 자동으로 경로를 공유 Cloud Router는 GCP VPC와 온프레미스 네트워크(또는 다른 클라우드) 간의 동적 라우팅을 위해 사용됩니다.
즉, GCP와 외부 네트워크 간의 경로를 자동으로 학습(BGP 사용) 하고 라우팅을 동적으로 업데이트하는 역할을 합니다.
서브넷
서브넷 생성 팁
GCP에서 서비스를 운영할 때 (예: Airflow, GKE, VM 등) 각 서비스마다 별도의 서브넷을 생성해서 사용하는 것은 일반적으로 권장되는 좋은 방법입니다. 물론, 모든 경우에 반드시 그래야 하는 것은 아니며, 네트워크 설계의 복잡성과 관리 편의성 사이의 균형을 고려해야 합니다. 보안 요구 사항이 높거나 격리가 중요한 서비스: Airflow, GKE (특히 워커 노드와 컨트롤 플레인), 데이터베이스 VM 등은 별도의 서브넷에 배치하는 것을 고려하는 것이 좋습니다.
이름, 설명
서브넷의 이름과 해당 서브넷에 대한 설명을 명시합니다.
리전
해당 서브넷이 위치할 리전을 선택합니다.
IP 스택 유형
내부 또는 외부 액세스로 서브넷에 IPv6 주소 범위를 추가할 수 있습니다. Google은 고정된 크기(/64)의 IPv6 CIDR 블록을 제공합니다. CIDR 블록의 IPv6 주소 범위는 선택할 수 없습니다.
기본 IPv4 범위
해당 서브넷에서 사용할 프라이빗 IPv4 주소 범위를 정의하는 설정하는 필드입니다. RFC 1918 표준의 사설 IP 주소 범위 안에서 할당해야 합니다.
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
할당할 때, 주의해야 할 점은 같은 VPC 내 다른 서브넷과 IPv4 범위가 겹치지 않도록 설정해야 하며 VPC peering이나 VPN을 통해 다른 클라우드의 VPC와 연결을 맺으려 할 때, 해당 네트워크의 IP 대역과 중복되지 않아야 합니다. 서브넷을 생성한 후에는 IPv4 주소 범위를 변경할 수 없기 때문에 신중히 결정해야 합니다.
Associate with an internal range
VPC 네트워크 피어링, 공유 VPC, Cloud VPN, Cloud Interconnect와 같은 기능으로 인해 네트워크가 더 복잡해졌을 때 내부 범위를 사용하면 Virtual Private Cloud (VPC) 네트워크 토폴로지를 관리하는 데 도움이 될 수 있습니다.
보조 IPv4 범위
서브넷에 추가적인 프라이빗 IPv4 범위를 설정하는 기능을 제공합니다. 즉, 기본 IPv4 주소 범위 외에도 추가적인 IP 대역을 할당할 수 있도록 해주는 기능입니다.
- GKE (Google Kubernetes Engine) 클러스터의 Pod 및 Service IP 관리에 주로 사용
- 특정 워크로드 또는 서비스에 별도의 IP 블록을 할당하여 네트워크를 분리할 수 있음
비공개 Google 액세스
이 서브넷의 VM이 외부 IP 주소를 할당하지 않고도 Google 서비스에 액세스할 수 있는지 여부를 설정합니다. 즉, 공인 IP없이 빅쿼리, GKE와 같은 서비스에 접근이 가능하므로 private 서브넷으로만 구성해서 네트워크 보안을 강화시킬 수 있습니다. 일반적으로 해당 옵션을 활성화 시키는 것이 네트워크 비용 절감과 보안 향상 효과를 얻을 수 있습니다.
서브넷 별 상세 설명
서브넷은 크게 public과 private으로 나눌 수 있습니다. 일반적으로 public, private 서브넷은 직접적인 인그레스는 모두 거부이고 이그레스를 어떻게 처리하냐가 다릅니다.
- public 서브넷
- 인그레스: 거부
- 이그레스: 허용
- private 서브넷
- 인그레스: 거부
- 이그레스: 거부 (nat를 통해 허용)
다음은 서브넷 별로 비공개 google 액세스를 활성화하면 어떤 효과가 있는지 설명합니다.
- Public 서브넷 + 비공개 Google 액세스: Public 서브넷은 인터넷 게이트웨이를 통해 외부 인터넷으로 직접 라우팅될 수 있는 서브넷입니다. 여기에 비공개 Google 액세스를 활성화하면, 해당 서브넷의 VM은 공용 IP 주소를 가지고 인터넷과 통신하면서 동시에 Google Cloud 서비스와는 내부 IP 주소로 안전하게 통신할 수 있습니다. 이는 공용 IP 주소를 통한 아웃바운드 인터넷 트래픽 비용을 절감하고, Google 서비스와의 통신 보안을 강화하는 데 유용할 수 있습니다.
- Private 서브넷 + 비공개 Google 액세스: Private 서브넷은 인터넷 게이트웨이를 통해 외부 인터넷으로 직접 라우팅되지 않는 서브넷입니다. 여기에 비공개 Google 액세스를 활성화하면, 해당 서브넷의 VM은 공용 IP 주소 없이 Google Cloud 서비스와 내부 IP 주소로 통신할 수 있으며, 외부 인터넷과의 통신은 Cloud NAT와 같은 다른 메커니즘을 통해 이루어져야 합니다. 이는 외부 노출을 최소화하고 Google 서비스와의 안전한 통신을 보장하는 보안적인 구성입니다.
흐름 로그
서브넷의 트래픽을 로그로 남기는 옵션입니다. 해당 옵션을 활성화하면 cloud logging의 비용이 부과됩니다. 따라서 집계 간격과 샘플링 레이트를 조절하여 쌓이는 로그의 양을 통제해야 비용 폭탄을 받지 않습니다.
방화벽
기본적으로 제공해주는 방화벽을 선택해 vpc에 추가할 수 있습니다. 만약 아무것도 선택하지 않았으면 방화벽 규칙은 비어있을텐데 이럴 경우, 모든 IP와 포트에 대해 접근 거부가 적용됩니다.
구성 예시
CLI
$ gcloud compute networks create test-vpc1 --project={프로젝트} --description=\사\용\할\ vpc\ \예\시 --subnet-mode=custom --mtu=1460 --bgp-routing-mode=regional --bgp-best-path-selection-mode=legacy $ gcloud compute networks subnets create private-gke-subnet --project={프로젝트} --description=gke\ \서\비\스\에\서\ \사\용\할\ private\ vpc --range=10.100.0.0/17 --stack-type=IPV4_ONLY --network=test-vpc1 --region=us-central1 --enable-private-ip-google-access --enable-flow-logs --logging-aggregation-interval=interval-5-min --logging-flow-sampling=0.01 --logging-metadata=include-all
설명
test-vpc1 이란 vpc를 생성합니다. mtu는 1460이며 동적 라우팅 모드는 지역이고 라우팅 선택 모드는 기본으로 설정합니다.
서브넷은 gke에서 사용할 private-gke-subnet 이란 이름으로 생성하고 IPv4만 사용하도록 설정합니다. 비공개 google 액세스를 사용함으로 설정해 외부 IP없이도 구글 서비스에 접속이 가능하도록 하며 로그를 사용하는데 비용 절감을 위해 집계 간격을 5분, 샘플링 비율을 1%로 설정합니다.
마지막으로 방화벽 규칙의 경우, 아무것도 추가하지 않으며 해당 VPC에 어떠한 접근이 가능하지 않도록 초기 설정을 진행합니다.
레퍼런스
https://cloud.google.com/vpc/docs/vpc?hl=ko
https://cloud.google.com/vpc/docs/create-modify-vpc-networks?hl=ko
https://cloud.google.com/vpc/docs/mtu?hl=ko
- Subnet1은 us-west1 리전에서 10.240.0.0/24로 정의됩니다.