공개 IP 주소 서비스

공개 (외부) IP 주소 네트워크 서비스를 사용하면 인터넷에서 워크로드 가상 머신(VM), 관리 어플라이언스 또는 프라이빗 클라우드에서 실행되는 부하 분산기에 연결할 수 있습니다. 예를 들어 워크로드 VM에서 웹 서버를 실행하는 경우 인터넷을 통해 공개 IP 주소를 사용하여 웹 트래픽을 처리할 수 있습니다. 기본적으로 공개 IP 네트워크 서비스는 사용 중지되어 있습니다.

공개 IP 주소를 리소스에 할당하면 다음과 같은 장점도 있습니다.

  • 분산 서비스 거부(DDoS) 공격 방지 이 보호 방식은 공개 IP 주소에 대해 자동으로 사용 설정됩니다.
  • 일반적인 네트워크 수준 공격에 대한 상시 트래픽 모니터링 및 실시간 완화
  • 전역 네트워크의 전체 규모에 대한 공격 보호 및 완화 네트워크는 리전 간에 공격 트래픽을 분산하고 완화할 수 있습니다.

동작

공개 IP 주소는 하나의 비공개 IP 주소에만 할당할 수 있으며 할당을 해제할 때까지 해당 비공개 IP 주소를 전담합니다. 공개 IP 주소와 연결된 리소스는 항상 인터넷 액세스를 위해 공개 IP 주소를 사용합니다. VMware Engine에 연결된 기본 VPC 네트워크에 공개 IP 주소를 최대 100개까지 예약할 수 있습니다.

기본적으로 공개 IP 주소에서 수신되는 트래픽은 거부되고 아웃바운드 인터넷 액세스만 허용됩니다. 인바운드 트래픽을 허용하려면 특정 포트에 대한 공개 IP 주소의 방화벽 규칙을 만듭니다.

gcloud 및 API 기본 요건

gcloud 명령줄 도구 또는 API를 사용하여 VMware Engine 리소스를 관리하려면 아래 설명된 대로 도구를 구성하는 것이 좋습니다.

gcloud

  1. 기본 프로젝트 ID를 설정합니다.

    gcloud config set project PROJECT_ID
    
  2. 기본 리전 및 영역을 설정합니다.

    gcloud config set compute/region REGION
    gcloud config set compute/zone ZONE

gcloud vmware 도구에 대한 자세한 내용은 Cloud SDK 참조 문서를 확인하세요.

API

이 문서의 API 예시에서는 cURL 명령줄 도구를 사용하여 API를 쿼리합니다. cURL 요청의 일부로 유효한 액세스 토큰이 필요합니다. 유효한 액세스 토큰을 얻는 방법은 다양합니다. 다음 단계에서는 gcloud 도구를 사용하여 액세스 토큰을 생성합니다.

  1. Google Cloud에 로그인합니다.

    gcloud auth login
    
  2. 액세스 토큰을 생성하여 TOKEN으로 내보냅니다.

    export TOKEN=`gcloud auth print-access-token`
    
  3. TOKEN이 제대로 설정되었는지 확인합니다.

    echo $TOKEN
    
    Output:
    TOKEN
    

이제 API에 대한 요청에 승인 토큰을 사용합니다. 예를 들면 다음과 같습니다.

curl -X GET -H "Authorization: Bearer \"$TOKEN\""  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations

Python

이 문서의 Python 코드 샘플은 VMware Engine 라이브러리를 사용하여 API와 통신합니다. 이 접근 방식을 사용하려면 라이브러리를 설치해야 하며 애플리케이션 기본 사용자 인증 정보를 구성해야 합니다.

  1. Python 라이브러리 다운로드 및 설치

     pip install google-cloud-vmwareengine
    
  2. 셸에서 명령어를 실행하여 ADC 정보를 구성하거나

      gcloud auth application-default login
    

    서비스 계정 키 파일을 사용합니다.

      export GOOGLE_APPLICATION_CREDENTIALS="FILE_PATH"
    

라이브러리에 대한 자세한 내용은 참조 페이지를 확인하거나 GitHub의 코드 샘플을 확인하세요.

리전에서 공개 IP 네트워크 서비스 사용 설정

워크로드 VM에 공개 IP 주소를 할당하려면 먼저 리전에서 공개 IP 네트워크 서비스를 사용 설정해야 합니다.

콘솔

  1. VMware Engine 포털에 액세스합니다.
  2. 네트워크 > 리전 설정으로 이동합니다.
  3. 관심 리전에 해당하는 행에서 수정을 선택합니다. 요약 표에 리전이 나와 있지 않으면 리전 추가를 클릭하여 리전을 추가합니다.
  4. 공개 IP 서비스사용 설정됨으로 전환합니다.
    • 공개 IP 서비스를 사용 설정하려면 인터넷 액세스 네트워크 서비스도 사용 설정해야 합니다.
    • 인터넷 액세스 서비스를 사용 설정하고 공개 IP 서비스를 사용 중지할 수 있습니다. 이 경우 지점 및 사이트 간 VPN 및 공개 IP 할당을 사용할 수 없습니다.
  5. 에지 서비스 CIDR 필드에 VMware Engine 공개 IP 게이트웨이 주소를 지정할 때 사용할 주소 범위(/26 주소 범위)를 입력합니다.
  6. 제출을 클릭합니다.

작업이 완료되면 일반적으로 몇 분 후 네트워크 서비스 상태가 사용 설정됨으로 변경됩니다.

gcloud

gcloud 도구를 사용하여 다음 명령어를 실행하여 네트워크 정책을 만듭니다.

gcloud vmware network-policies create NETWORK_POLICY_NAME \
    --vmware-engine-network NETWORK_NAME --edge-services-cidr IP_RANGE \
    --location REGION --external-ip-access --internet-access

다음을 바꿉니다.

  • NETWORK_POLICY_NAME: 이 네트워크 정책의 이름입니다.
  • NETWORK_NAME: 이 요청의 네트워크이며 REGION-default 형식이어야 합니다.
  • IP_RANGE: CIDR 표기법으로 표시된 인터넷 액세스와 외부 IP 액세스 게이트웨이에 사용할 CIDR 범위입니다. '/26' 프리픽스가 있는 RFC 1918 CIDR 블록이 필요합니다.
  • REGION: 네트워크의 리전입니다.

API

curl -X POST -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/networkPolicies?networkPolicyId=NETWORK_POLICY_NAME -d '{
  "vmwareEngineNetwork":"projects/PROJECT_ID/locations/REGION/vmwareEngineNetworks/NETWORK_NAME",
  "edgeServiceCidr":IP_RANGE,
  "internetAccess: {
    "enabled": true
   },
   "externalIp": {
     "enabled": true
   }
 }

다음을 바꿉니다.

  • NETWORK_POLICY_NAME: 이 네트워크 정책의 이름입니다.
  • PROJECT_ID: 이 요청의 프로젝트 ID입니다.
  • REGION: 네트워크의 리전입니다.
  • IP_RANGE: CIDR 표기법으로 표시된 인터넷 액세스와 외부 IP 액세스 게이트웨이에 사용할 CIDR 범위입니다. '/26' 프리픽스가 있는 RFC 1918 CIDR 블록이 필요합니다.
  • NETWORK_NAME: 이 네트워크 정책이 적용되는 네트워크이며 >REGION-default 형식이어야 합니다.

Python

다음 함수를 사용하여 external_ipInternet_accessTrue로 설정하여 새 네트워크 정책을 만듭니다.

from google.api_core import operation
from google.cloud import vmwareengine_v1

def create_network_policy(
    project_id: str,
    region: str,
    ip_range: str,
    internet_access: bool,
    external_ip: bool,
) -> operation.Operation:
    """
    Creates a new network policy in a given network.

    Args:
        project_id: name of the project you want to use.
        region: name of the region you want to use. I.e. "us-central1"
        ip_range: the CIDR range to use for internet access and external IP access gateways,
            in CIDR notation. An RFC 1918 CIDR block with a "/26" suffix is required.
        internet_access: should internet access be allowed.
        external_ip: should external IP addresses be assigned.

    Returns:
        An operation object representing the started operation. You can call its .result() method to wait for
        it to finish.

    Raises:
        ValueError if the provided ip_range doesn't end with /26.
    """
    if not ip_range.endswith("/26"):
        raise ValueError(
            "The ip_range needs to be an RFC 1918 CIDR block with a '/26' suffix"
        )

    network_policy = vmwareengine_v1.NetworkPolicy()
    network_policy.vmware_engine_network = f"projects/{project_id}/locations/{region}/vmwareEngineNetworks/{region}-default"
    network_policy.edge_services_cidr = ip_range
    network_policy.internet_access.enabled = internet_access
    network_policy.external_ip.enabled = external_ip

    request = vmwareengine_v1.CreateNetworkPolicyRequest()
    request.network_policy = network_policy
    request.parent = f"projects/{project_id}/locations/{region}"
    request.network_policy_id = f"{region}-default"

    client = vmwareengine_v1.VmwareEngineClient()
    return client.create_network_policy(request)

공개 IP 주소 할당

워크로드 VM에 공개 IP 주소를 할당하려면 다음을 수행합니다.

  1. Google Cloud VMware Engine 포털에 액세스
  2. 네트워크 > 공개 IP로 이동합니다.
  3. 할당을 클릭합니다.
  4. 이름 필드에 공개 IP 주소 항목을 식별할 수 있는 이름을 입력합니다.
  5. 워크로드 VM이 포함된 프라이빗 클라우드를 선택합니다.
  6. 할당된 공개 IP를 제공할 위치를 선택합니다.
  7. 연결된 로컬 주소 필드에 이 공개 IP 주소를 할당하려는 VM의 로컬 IP 주소를 입력합니다.
  8. 제출을 클릭하여 공개 IP 주소 할당 작업을 시작합니다.

활동 > 작업 페이지에서 작업 상태를 확인할 수 있습니다. 할당이 완료되면 새 항목이 작업 상태와 함께 공개 IP 페이지에 표시됩니다.