티스토리 뷰

 

Virtual Private Cloud

Virtual Private Cloud(VPC)

Virtual Private Cloud(VPC)는 Compute Engine 가상 머신(VM) 인스턴스, Google Kubernetes Engine(GKE) 클러스터, App Engine 가변형 환경에 네트워킹 기능을 제공합니다.

 

또한 VPC는 클라우드 기반 리소스 및 서비스에 대해 확장 가능하고 유연한 글로벌 네트워킹을 제공합니다.

 

 

목차: VPC 구성 요소

1. Project

2. Network

3. Subnetwork

4. IP addresses

5. Routes and Firewall rules

 

Project:

- 프로젝트는 object 및 services를 billing과 연결합니다.

 

- 각 프로젝트의 기본 할당량은 네트워크 5이지만 GCP console을 사용하여 추가 할당량을 간단히 요청할 수 있습니다.

 

- 네트워크는 다른 프로젝트와 공유하거나 다른 프로젝트의 네트워크와 피어링 할 수 있습니다.

 

- 모든 프로젝트에는 서브넷방화벽이 미리 설정된 Default VPC network가 제공됩니다.

 

 

Network:

- IP 주소의 범위가 없습니다.

 

- 모든 가능한 regions로 확장할 수 있으며 global 합니다. 전 세계 어디에서나 아시아, 유럽, 미주, 모두 동시에 존재하는 하나의 네트워크를 가질 수 있습니다.

 

- 네트워크 내에서 regional subnetworks(지역 하위 네트워크)로 리소스를 분리할 수 ​​있습니다.

 

- 3가지 타입의 network 종류가 있습니다. Default, Auto Mode, Custom Mode

 

 

Subnetworks:

subnetwork

- subnetworks는 rigion 규모에서 작동합니다.

 

- rigion에는 여러 zone이 포함되어 있으므로 subnetwork는 zone을 교차할 수 있습니다.

 

- subnetwork는 단순히 IP 주소 범위이며 해당 범위 내의 IP 주소를 사용할 수 있습니다.

 

- .0.1은 네트워크 및 서브넷의 게이트웨이 용으로 예약되어 있습니다.

 

- IP 주소 범위의 마지막 주소는 "브로드 캐스트"주소입니다.

 

- 모든 서브넷에는 4 개의 예약된 IP 주소가 있습니다.

 

- 한번 subnetwork를 확장하면 되돌릴 수 없습니다.(축소할 수 없습니다)

 

- 너무 크게 확장하면 문제가 생길 여지가 많으므로 필요한 만큼 확장합니다.

 

 

 

IP addresses:

Internal IP and External IP

Interanl IP

- 각 가상 머신에는 Internal IPExternal IP가 할당될 수 있습니다.

 

- Internal IP는 내부적으로 DHCP를 통해 할당됩니다.

 

- 모든 VM과 VM에 의존하는 모든 서비스는 Internal IP 주소를 얻습니다.

 

- VM을 만들면 symbolic 이름을 Interanl IP 주소로 변환하는 내부 DNS 서비스에 등록됩니다.

 

- 내부 DNS의 범위는 네트워크로 지정되므로 동일한 네트워크에 있는 호스트의 웹 URL과 VM 이름을 변환할 수 있습니다.

 

- 내부 DNS는 다른 네트워크의 VM 호스트 이름을 번역할 수 없습니다.

 

 

External IP

Exteranl IP address pricing

- External IP는 할당받지 않을 수 있습니다.(할당받으면 요금이 들어갑니다..)

 

- External IP 주소는 pool에서 할당하여 임시로 만들거나 예약된 External IP 주소가 할당되어 고정됩니다.

 

- static External IP 주소를 예약하고 이를 VM 인스턴스 나, 리소스에 할당하지 않는 경우 전달 규칙에 따라 사용 중인 static 및 ephemeral(임시) External IP 주소보다 더 높은 요금이 청구됩니다(왜..?)

 

- External IP 주소는 VM의 OS에서 알 수 없습니다. 예를 들어 ifconfig 명령어로 IP주소 확인 시 Internal IP 주소만 볼 수 있습니다.

 

- External IP 주소는 VPC에 의해 투명하게 VM의 내부 주소에 매핑됩니다.

 

 

DNS resolution for internal IP addresseswas 

- 각 인스턴스에는 Internal IP 주소로 확인할 수 있는 호스트 이름이 있습니다. 호스트 이름은 인스턴스 이름과 동일합니다.

 

- FQDN이 있으며 DNS 이름은 내부 IP 주소에 관계없이 항상 특정 인스턴스를 가리 킵니다.

 

- 각 인스턴스에는 해당 인스턴스에 대한 DNS resolver 역할을 하는 메타 데이터 서버가 있습니다. (FQDN [hostname].[zone].c.[project-id].internal 형식을 가집니다.)

 

- 메타 데이터 서버는 로컬 네트워크 리소스에 대한 모든 DNS 쿼리를 처리하고 public name 확인을 위해 다른 모든 쿼리를 Google의 public DNS 서버로 라우팅 합니다.

 

- 네트워크는 관련 인스턴스의 Internal IP 주소External IP 주소를 일치시키는 조회 테이블을 저장합니다.

 

- Internal DNS resolverCompute Engine의 일부로 제공됩니다.(169.254.169.254)

 

DNS resolution for Enternal IP addresses

- External IP 주소가 있는 인스턴스는 프로젝트 외부 호스트의 연결을 허용할 수 있습니다.

 

- 인스턴스를 가리키는 public DNS 레코드는 자동으로 게시되지 않습니다. 그러나 관리자는 기존 DNS 서버를 사용하여 public DNS 레코드를 게시할 수 있습니다.

 

- DNSCloud DNS를 사용하여 GCP에서 호스팅 할 수 있습니다.

 

 

Cloud DNS

- Cloud DNS를 사용하면 자체 DNS 서버 및 소프트웨어를 관리할 부담 없이 수백만 개의 DNS 레코드를 만들고 업데이트할 수 있습니다.

 

 

Alias IP Ranges

Alias IP Ranges

- Internal IP 주소 범위를 가상 머신의 네트워크 인터페이스에 별칭(Alias)으로 할당할 수 있습니다.

 

- 하나의 VM에서 여러 서비스를 실행 중이고 각 서비스에 다른 IP 주소를 할당하려는 경우에 유용합니다.

 

 

 

Routes and Firewall rules:

라우터에 대해 잘 모르시겠다면 다음을 참고해주세요.

 

[네트워크 용어] 라우터란?(Router)

라우터(Router) 라우터는 패킷의 위치를 추출하여, 그 위치에 대한 최적의 경로를 지정하며, 이 경로를 따라 데이터 패킷을 다음 장치로 전향시키는 장치입니다. 이때 최적의 경로는 일반적으로��

puzzle-puzzle.tistory.com

 

- 네트워크가 생성되면 route가 생성되어 어디서나 트래픽을 전달할 수 있습니다.

 

- 서브넷이 생성될 때 route가 생성됩니다. 이것은 동일한 네트워크의 VM이 통신할 수 있게 합니다.

 

- 모든 네트워크에는 네트워크의 인스턴스가 서브넷을 통해 서로에게 직접 트래픽을 보낼 수 있는 Route가 있으며 네트워크 외부에 있는 대상으로 패킷을 보내는 기본 Route가 있습니다.

 

- Route를 생성하는 것만으로는 지정된 다음 hop에서 패킷을 수신할 수 없습니다. Firewall rules도 패킷을 허용해야 합니다.

 

- 기본 네트워크에는 네트워크의 모든 인스턴스가 서로 통신할 수 있도록 미리 구성된 Firewall rules이 있습니다. 수동으로 생성된 네트워크에는 이러한 규칙이 없으므로 생성해야 합니다.

 

 

Route collection

Route collection

Routes 컬렉션의 각 route는 하나 이상의 인스턴스에 적용될 수 있습니다.

 

- 네트워크와 인스턴스 태그가 일치하면 route가 인스턴스에 적용됩니다. 네트워크가 일치하고 지정된 인스턴스 태그가 없으면 route가 해당 네트워크의 모든 인스턴스에 적용됩니다.

 

- Compute Engine은 Routes 컬렉션을 사용하여 각 인스턴스에 대한 개별 읽기 전용 라우팅 테이블을 만듭니다.

 

- 네트워크의 모든 가상 머신 인스턴스는 이 라우터에 직접 연결되며 가상 머신 인스턴스를 떠나는 모든 패킷은 다음 홉으로 전달되기 전에 먼저 이 계층에서 처리됩니다.

 

- 가상 네트워크 router는 해당 인스턴스의 라우팅 테이블을 참조하여 패킷의 다음 홉을 선택합니다.

 

 

Firewall rules

- 모든 VPC 네트워크는 분산 방화벽으로 작동합니다.

 

- Firewall rules이 네트워크 전체에 적용되지만 인스턴스 수준에서 연결이 허용되거나 거부됩니다.

 

- GCP 방화벽 규칙은 stateful입니다. 즉, 방화벽 규칙은 세션이 설정되면 양방향 통신을 허용합니다.

 

- 모든 VPC 네트워크에는 기본적으로 들어오는 모든 연결(ingress)을 차단하고 나가는 모든 연결(egress)을 허용하는 두 가지 묵시적인 방화벽 규칙이 있습니다.(Default)

 

 

Firewall rules's parameters

아래의 보라색 글씨가 Firewall's rules parameters입니다.

 

- Ther direction of rule. 인바운드 연결은 ingress 규칙에 대해서만 일치하고 아웃바운드 연결은 egress 규칙에 대해서만 일치합니다. 

 

- 수신 패킷에 대한 연결 source 또는 송신 패킷에 대한 연결 destination

 

- 특정 프로토콜에만 적용하거나 특정 프로토콜과 포트 조합에만 적용하도록 규칙을 제한할 수 있는 연결 protocolport

 

- 규칙의 방향, 프로토콜, 포트 및 소스 또는 대상과 일치하는 패킷을 허용하거나 거부하는 규칙의 action

 

- 규칙이 평가되는 순서를 제어하는 ​​규칙의 priority입니다. 첫 번째 일치 규칙이 적용됩니다.

 

- The rule assignment. 기본적으로 모든 규칙은 모든 인스턴스에 할당되지만 특정 규칙은 특정 인스턴스에만 할당할 수 있습니다.

 

 

 

3 VPC network types

VPC network types

1. Default Mode:

- 모든 프로젝트에는 서브넷과 방화벽이 미리 설정된 Default VPC network가 제공됩니다.

 

2. Auto Mode:

- Default network를 포함하고 있습니다.

 

- Auto Mode network에서는 각 지역에서 하나의 서브넷이 자동으로 생성됩니다.

 

-  /20 마스크에서 /16으로 확장 가능한 사전 정의된 IP 범위 집합을 사용합니다. 

 

- /16 이상의 범위로 확장 시에 Custom Mode로 전환해야 합니다.(Auto Mode에서는 불가능합니다.)

 

- 모든 서브넷은 10.128.0.0/9 CIDR 블록에 적합합니다.

 

 

 

3. Custom Mode:

- Custom Mode network는

 

- subnets과 IP 범위에 대한 완전한 제어권을 갖습니다.

 

- RFC 1918 주소 공간 내에서 지정한 IP 범위를 사용하여 선택한 리전에서 생성할 서브넷을 결정합니다.

 

- 지정한 IP 범위는 동일한 네트워크의 서브넷 간에 겹칠 수 없습니다.

 

- custom mode network는 auto mode network로 변경할 수 없습니다.

 

 

 

VPC networks

VPC network

VPC 네트워크는 Google Cloud 내에서 가상화된다는 점을 제외하면 물리적 네트워크와 동일한 방식으로 생각할 수 있습니다. VPC 네트워크는 데이터 센터의 Rigion 별 가상 서브 네트워크(서브넷) 목록으로 구성된 전역 리소스로, 모든 리소스는 전역 광역 통신망을 통해 연결됩니다. VPC 네트워크는 Google Cloud에서 논리적으로 서로 격리됩니다.

 

 

아래에서 예시를 들면서 설명하도록 하겠습니다.

Networks isolate systems

- VM A와 B는 동일한 네트워크에 있으며 서로 다른 지역에 있더라도 내부 IP 주소를 사용하여 통신할 수 있습니다.

 

- VM A와 B는 네트워크 구성 프로토콜과 관련하여 동일한 랙에 있는 것처럼 보입니다.

 

-  VM C와 D는 동일한 지역에 있더라도 외부 IP 주소를 사용하여 통신해야 합니다.

 

- VM C와 D 간의 트래픽은 실제로 공개 인터넷에 닿지 않고 Google Edge 라우터를 통과합니다.

 

 

vpc의 기능

 

- 내부 HTTP(S) 부하 분산을 위한 기본 내부 TCP/UDP 부하 분산 및 프록시 시스템을 제공합니다.

 

- Cloud VPN 터널 및 Cloud Interconnect 연결을 사용하여 온프레미스 네트워크에 연결합니다.

 

- Google Cloud 외부 부하 분산기에서 백엔드로 트래픽을 배포합니다

 

 

방화벽 규칙에 대해 더 자세히

각 VPC 네트워크는 사용자가 구성할 수 있는 분산 가상 방화벽을 구현합니다. 또한 방화벽 규칙을 사용하면 어떤 대상으로도 이동할 수 있는 패킷을 제어할 수 있습니다.

모든 VPC 네트워크에는 들어오는 모든 연결을 차단하고 나가는 모든 연결을 허용하는 두 가지 묵시적인 방화벽 규칙이 있습니다(위의 구성요소에서 설명하였습니다). 하지만 Cloud Console에는 표시되지 않습니다. 그리고 생성한 방화벽 규칙은 이러한 묵시적 규칙에 우선합니다.(설정한 Firewall rules를 전부 지워도 해당 Firewall rules는 남아있습니다.)

 

 

묵시적 egress 허용 규칙:

 작업이 allow, 목적지가 0.0.0.0/0, 우선순위가 가장 낮은(65535) 이그레스 규칙을 사용하면 모든 인스턴스가 Google Cloud에서 차단하는 트래픽을 제외한 모든 목적지에 트래픽을 전송할 수 있습니다. 우선순위가 더 높은 방화벽 규칙은 아웃바운드 액세스를 제한할 수 있습니다. 아웃바운드 트래픽을 거부하는 다른 방화벽 규칙이 없고 인스턴스에 외부 IP 주소가 있거나 Cloud NAT 인스턴스를 사용하는 경우 인터넷 액세스가 허용됩니다. 

 

묵시적 ingress 거부 규칙: 

작업이 deny, 소스가 0.0.0.0/0, 우선순위가 가장 낮은(65535) 인그레스 규칙모든 인스턴스로 수신되는 연결을 차단하여 보호합니다. 우선순위가 더 높은 규칙은 수신 액세스를 허용할 수도 있습니다. 기본 네트워크에는 이 규칙을 재정의하는 추가 규칙이 포함되어 있어 특정 유형의 수신 연결을 허용합니다.

 

묵시적 규칙은 삭제할 수 없지만 우선순위는 가장 낮습니다. 규칙의 우선순위가 더 높으면 규칙을 재정의하는 규칙을 만들 수 있습니다(우선순위 번호가 65535미만). deny 규칙은 우선순위가 동일한 allow 규칙에 우선하기 때문에 우선순위가 65535인 인그레스 allow 규칙은 절대로 적용되지 않습니다.

 

VPC 방화벽 규칙은 스테이트풀(Stateful)입니다. 방화벽에 대해서는 아래의 링크를 통해 확인할 수 있습니다.

 

[네트워크 보안] 방화벽 규칙

방화벽 규칙 방화벽(firewall)은 미리 정의된 보안 규칙에 기반한, 들어오고 나가는 네트워크 트래픽을 모니터링하고 제어하는 네트워크 보안 시스템입니다. 방화벽은 일반적으로 신뢰할 수 있

puzzle-puzzle.tistory.com

 

 

 

Pricing

-GCP 네트워크로 들어오는 Ingress 또는 트래픽에는 요금이 부과되지 않습니다.(만약 load balancer를 사용하신다면 해당 요금은 따로 부과됩니다. 자세한 사항은 구글 클라우드 홈페이지를 참고해주세요.)

 

- 동일한 zone에 대해 egress가 인스턴스의 Internal IP 주소를 사용하여 통신하는 한 요금이 부과되지 않습니다.

 

- 또한 YouTube, 지도, 드라이브와 같은 Google 제품으로의 egress 트래픽 또는 동일한 zone 내의 다른 GCP 서비스로의 트래픽에는 요금이 부과되지 않습니다.

 

- 동일한 Rigion의 zone 간 egress, 트래픽이 인스턴스의 External IP 주소를 통하는 경우 zone 내 egress, Rigion 간 egress에 대한 요금이 부과됩니다.

 

- 가격정책은 항상 바뀔 수 있습니다. 자세한 내용은 구글 클라우드 홈페이지를 꼭 참고하시 바랍니다.

 

 

 

Common network designs

Incresed availability with multiple zones

- 동일한 서브 네트워크 내에서 두 개의 가상 머신을 여러 zone에 배치하여 availabiltiy를 높일 수 있습니다.

 

 

Globalization with multiple regions

- 리소스를 다른 rigion에 배치하면 훨씬 더 높은 수준의 failure independence를 제공합니다.

 

- HTTP load balancer와 같은 전역 load balancer를 사용하는 경우, 사용자와 가장 가까운 지역으로 트래픽을 라우팅 할 수 있습니다. 따라서 사용자의 지연 시간이 단축되고 프로젝트의 네트워크 트래픽 비용이 낮아질 수 있습니다.

 

 

Clout NAT provides internet access to private instances

- 일반적인 보안 권장 사항으로 가능한 한 VM 인스턴스에 내부 IP 주소만 할당하는 것이 좋습니다.

 

- Cloud NATGoogle의 관리 형 네트워크 주소 변환 서비스입니다. 이를 통해 public IP 주소 없이 애플리케이션 인스턴스를 프로비저닝 하는 동시에 제어되고 효율적인 방식으로 인터넷에 액세스 할 수 있습니다. 즉, 비공개 인스턴스가 업데이트, 패치, 구성 관리 등을 위해 인터넷에 액세스 할 수 있습니다.

 

- Cloud NAT는 인바운드 NAT를 구현하지 않습니다. 즉, VPC 네트워크 외부의 호스트는 Cloud NAT 게이트웨이 뒤에 있는 비공개 인스턴스에 직접 액세스 할 수 없습니다.

 

 

Private Google Access to Google APIs and services

- Internal IP 주소만 있는 VM 인스턴스가 Google API서비스의 External IP 주소에 도달하도록 허용하려면 비공개 Google 액세스를 사용 설정해야 합니다. External 주소가 없어도 해당 서비스에 접근할 수 있습니다.

 

- Private Google Access는 External IP에 영향을 미치지 않습니다. 그래서 VM A2VM B2는 Google APIs and Services에 접근 가능합니다.(Private Google Access는 Internal IP만 할당받은 것에만 영향을 미칩니다.)

 

 

이상으로 VPC에 대해 마치도록 하겠습니다~ 더 자세한 사항은 documents를 참고해서 더 추가하도록 할게요

반응형