[GCP] 네트워크 - Virtual Private Cloud (VPC)

서경·2024년 9월 30일
post-thumbnail

네트워크 - Virtual Private Cloud (VPC)

1. 네트워크 구성 요소

  • 현재 일반적으로 구성하는 네트워크 형태는 Client(서비스 요청자)/Server(서비스 제공자) 구조로 구성



1.1. Network Service (가상 Network)

VPC(Virtual Private Cloud) 서비스



1.2. 포트 번호 (port number)

  • 네트워크 통신을 수행하는 프로세스(실행 중인 프로그램)에 부여되는 번호

  • 0 ~ 65535번 사용(2 byte)

  • 0 ~ 1023번 예약 번호
    · 22번 포트 - SSH(Secure SHell)
    · 80번 포트 - HTTP( Web )
    · 443번 포트 - HTTPs( secure Web )

  • Server에서 동작하는 프로세스에 대한 포트 번호가 결정되어 있어야 서비스 제공 가능



1.3. IP Address

  • 네트워크에 연결된 computer(host)에 부여되는 번호

  • IP Address는 네트워크에서 유일하게 부여

  • IPv4(32 bit)와 IPv6(128 bit) 방식

  • GCP에서 IP address 표현 방식은 IPv4를 기본으로 사용

  • 주로 IPv4 방식 사용 - 10진수 3자리(2진수 8자리, 8 bit, 옥텟)를 .(dot)으로 구분하여 4개로 표현
    · 192.168.0.0 -> IPv4 방식 IP Address


○ IPv4 구성

  1. 네트워크 ID (네트워크 식별 번호)
  • 호스트가 연결되어 있는 구성

  • 클래스로 표현
    · A 클래스: 가장 처음 1 bit - 0, 0.0.0.0 ~ 127.255.255.255, 최대 host 수 : 16,777,216
    · B 클래스: 가장 처음부터 2 bit - 01, 128.0.0.0 ~ 191.255.255.255, 최대 host 수 : 65,536
    · C 클래스: 가장 처음부터 3 bit - 001, 192.0.0.0 ~ 223.255.255.255, 최대 host 수 : 256


  1. 호스트 ID (호스트 식별 번호)
  • 네트워크에 연결된 computer (host)

  1. 네트워크에 연결된 호스트를 관리하기 위한 부분 네트워크



1.4. Gateway (게이트웨이)

  • 현재 네트워크 외부로 나가고 들어오는 통로

  • 외부 인터넷(인터넷)과 통신을 수행하기 위한 연결점 - 인터넷 게이트웨이

  • 통상 IPv4의 마지막 옥텟이 1번을 Gateway로 사용



1.5. Router (라우터)

  • 네트워크에 연결된 host의 경로를 탐색하는 역할 수행

  • Routing table(라우팅 테이블) 에 연결된 host의 경로 정보를 가지고 있다.



TIP!

네트워크 구성은 할 때 방화벽 구성이 중요하다.
VPC 방화벽을 통해 외부에서 내부 네트워크로 진입하는 것을 막는다.

라우터, 게이트웨이 등 VPC 서비스 구성 시 기본적으로 설정이 되며,
네트워크는 필요 시 VPC 네트워크로 생성하면 된다.

한 프로젝트 당 VPC는 총 5개씩 구성이 가능하며,
매번 새로 생성하지 않고 사전에 구성해둔 VPC를 사용해도 된다.
디폴트 VPC도 있기 때문에, 상황에 맞게 원하는 VPC 사용이 가능하다.






2. 네트워크 형태

2.1. 공인 네트워크

  • 인터넷에 연결된 네트워크
  • 공인 IP 사용 - IPv4를 기본으로 사용함으로 IP address 개수 제한



2.2. 사설 네트워크

  • 인터넷에 연결되지 않은 네트워크

○ 사설 IP 범위

  • 10.0.0.0 ~ 10.255.255.255 (10.0.0.0/8)
  • 172.16.0.0 ~ 172.31.255.255 (172.16.0.0/12)
  • 192.168.0.0 ~ 192.168.255.255 (192.168.0.0/16)



3. TCP/IP (인터넷에서 사용하는 프로토콜)

  • 네트워크에 연결된 호스트간에 통신을 수행하기 위해서는 동일한 프로토콜 사용
  • 프로토콜 :통신 규약

  • 인터넷에 연결된 host간 통신을 위한 프로토콜 스택

○ 통상 O/S kernel 구성 요소

· application에서 socket을 이용하여 활용


  • 패킷: 네트워크에서 통신하는 단위



3.1. TCP/IP 프로토콜 스택

○ Application layer

  • 프로그램간 통신을 위한 프로토콜

  • SSH, HTTP, FTP, mail …


○ Transport layer

  • 프로그램에 연결된 포트 번호 결정통신 방법

  • TCP(1 vs 1), UDP(1 vs 1, 1 vs n, n vs m)


○ Internet layer

  • Host에 대한 IP address 결정

  • IP, ICMP, ARP


○ Network Interface layer

  • 물리적으로 네트워크에 연결하는 장치
  • NIC에 대한 MAC address









Virtual Private Cloud (VPC)


  • 모든 Region을 아우르는 글로벌 가상 네트워크
  1. 조직 전체에 하나의 VPC만 사용해 프로젝트 내에서 팀을 분리할 수 있습니다.
  2. 다운타임 없이 IP 공간을 늘릴 수 있습니다.



1. 주요 특징

1.1. VPC 네트워크

  • VPC로 가상 토폴로지를 자동으로 설정해 서브넷 및 네트워크 정책의 프리픽스 범위를 구성하거나 직접 구성할 수 있습니다.

  • 다운타임 없이 CIDR 범위를 확장할 수 있습니다.



1.2. VPC 흐름 로그

  • 흐름 로그는 Compute Engine의 네트워크 인터페이스에서 송수신되는 IP 트래픽 정보를 기록

  • VPC 흐름 로그를 네트워크 모니터링, 포렌식, 실시간 보안 분석, 비용 최적화에 활용할 수 있다.

  • Google Cloud 흐름 로그는 5초마다 업데이트되어 즉각적인 가시성을 제공



1.3. VPC 피어링

  • 대역폭의 병목 현상이나 단일 장애점 없이 같은 조직 내 또는 다른 조직 간의 비공개 통신을 구성할 수 있습니다.



1.4. 공유 VPC

  • 조직의 여러 프로젝트에서 공유되도록 VPC 네트워크를 구성하세요.

  • 관련된 연결 경로 및 방화벽은 중앙에서 관리됩니다.

  • 개발자가 청구 및 할당량이 별도로 적용되는 자체 프로젝트를 운영하는 동시에, 서로 소통할 수 있는 공유된 비공개 네트워크에 접속할 수 있습니다.



1.5. 자체 IP 사용

  • 모든 리전에 걸친 Google 네트워크로 자체 IP 주소를 가져와 마이그레이션 중 다운타임을 최소화하고 네트워킹 인프라 비용을 절감할 수 있다.

  • 자체 IP를 가져오면 Google Cloud에서 전 세계 모든 피어에 이를 공지

  • 프리픽스를 최소 16개의 주소 블록(/28)으로 나눌 수 있으므로 리소스의 유연성이 높아집니다.


○ CIDR (Classless Inter Domain Routing)

  • 10.0.0.0/16 -> 11111111 11111111 00000000 00000000
    · 10.0.0.0 ~ 10.0.255.255
    · 65536 개의 host에 IP Address 할당 가능

  • CIDR 별 IP Address 개수
    · /16 -> 65536
    · /20 -> 4096
    · /24 -> 254
    · /28 -> 16






  • VPC 네트워크에서 다음을 수행한다.
  1. Compute Engine 가상 머신(VM) 인스턴스에 연결을 제공한다.
  2. 내부 애플리케이션 부하 분산기( Load Balancer )용 기본 내부 패스 스루 네트워크 부하 분산기 및 프록시 시스템을 제공한다.
  3. Cloud VPN 터널 및 Cloud Interconnect용 VLAN 연결을 사용하여 온프레미스 네트워크에 연결한다.
  4. Google Cloud 외부 부하 분산기에서 백엔드로 트래픽을 배포한다.
  • 프로젝트에는 여러 VPC 네트워크가 포함될 수 있습니다.
    이를 금지하는 조직 정책을 만들지 않는 한, 새 프로젝트는 각 리전에 하나의 서브네트워크(서브넷)가 있는 기본 네트워크(자동 모드 VPC 네트워크)로 시작됩니다.









VPC 구성

1. 접속

VPC Network -> VPC 네트워크 -> Create VPC network






2. VPC 설정

  • Name : 사용될 VPC 성격에 맞게 설정

  • VPC network ULA internal IPv6 range : Disable

  • Subnets : Custom
    · Automatic으로 설정하며 GCP 에서 default로 제공되는 Subnet에 할당되기 때문에 원하는 Subnet 설정을 위해서는 custom 설정







3. Edit Subnet

  • external(public), internal(private) 각 2개씩 subnet 생성

  • Private Google Access : On
    · 공인IP가 없이 프로젝트의 VPC대역 외 GCP의 API와 서비스에 접근하기 위해서는 해당 옵션을 "On" 시켜야 접근이 가능하다.




3.1. Dynamic routing mode : Regional

  • 해당 옵션의 mode에 따라서 Dynamic routing(BGP)의 범위가 달라진다.

  • Region mode의 경우, 동일 리전의 인스턴스에만 적용

  • Global mode의 경우, 리전과 상관 없이 모든 인스턴스에 적용



3.2. external subnet

  • Name : subnet-demo-ext-01 / subnet-demo-ext-02

  • Region : asia-northeast3(seoul)

  • IP stack type : IPv4

  • IPv4 range : 172.22.36.0/26 / 172.22.36.64/26



3.3. internal subnet

  • Name : subnet-demo-int-01 / subnet-demo-int-02

  • Region : asia-northeast3(seoul)

  • IP stack type : IPv4

  • IPv4 range : 172.22.36.128/26 / 172.22.36.192/26







4. Firewall rules

  • Firewall rule은 GCP에서 기본으로 제공하는 정책들은 적용해서 구성

  • vpc-demo-allow-custom : enable
    · vpc-demo(172.22.36.0/24) 대역에서는 모든 Protocols와 Ports들을 allow
    · 이 정책을 enable하는 이유는 앞으로 demo 테스트를 하는데 있어서 방화벽에 대한 제약을 최소화하기 위해서 반영
    · 실제 운영망에서는 서비스 영향도에 따라서 방화벽 룰을 설정하면 된다.

  • vcp-demo-allow-icmp : enable
    · 서버 ping check를 위해서 방화벽 룰 적용



  • 방화벽 추가






5. CREATE

나머지 설정값들은 default로 설정하고 CREATE 선택



TIP!

VPC 생성은 복잡하거나 어렵지 않다.
네트워크 내용을 정리하여 정리된 내용을 기반으로 VPC 생성이 가능하다.
VPC 생성 시 이름을 정하고 네트워크 안에 서브넷을 어떻게 구성할 것인지 정한다.

자동 방식을 이용하여 하거나 리전 별로 서브넷을 구성할 수도 있다.
수동으로 선택하자면, 전체 리전 별이 아닌 한 리전에다 리전의 존 별로 할당이 가능하다.
사이더에 의해 각 서브넷의 네트워크 범위 설정이 가능하다.


기본적으로 네트워크가 구성이 되면 사설 네트워크가 생성되고,
게이트웨이를 통해 외부랑 통신할 수 있는 통로를 만들고 방화벽을 통해 보안 관리를 한다.


방화벽은 VPC 안에 있고 VM을 생성하여 서비스 구현하고 서비스를 운영한다.
방화벽을 통해서 외부로 나가고 방화벽을 통해서 외부에서 진입한다.
아웃바운드(송신)는 나가는 거라 크게 신경쓸 필요가 없지만, 인바운드(수신) 방화벽은 들어오는 것이기 때문에 방화벽이 중요하다.

만약, 방화벽으로 외부에서 못 들어오게 다 막는다면, 서비스 제공이 어렵다.
서비스 제공은 상대방에게 일방적으로 제공하는 게 아니기 때문에 인바운드 규칙을 정해줘야 한다.


(예시) VPC의 인바운드 규칙을 설정할 때, 서비스의 성격에 따라 아래와 같은 포트 및 프로토콜을 허용

  • 22번 포트 (SSH): 원격 서버 접속을 위해 사용

  • 80번 포트 (HTTP): 웹 서비스 제공을 위해 사용

  • ICMP: 네트워크 상태 확인(핑)을 위해 사용.









GCP 서비스 개인 학습



1. VPC 네트워킹 기초 (GSP210)

https://www.cloudskillsboost.google/focuses/1229?catalog_rank=%7B%22rank%22%3A2%2C%22num_filters%22%3A0%2C%22has_search%22%3Atrue%7D&parent=catalog&search_id=33507548






2. VPC 네트워크 - 액세스 제어 (GSP213)

https://www.cloudskillsboost.google/focuses/1231?catalog_rank=%7B%22rank%22%3A6%2C%22num_filters%22%3A0%2C%22has_search%22%3Atrue%7D&parent=catalog&search_id=33507612

0개의 댓글