인스턴스 및 인스턴스 템플릿에 IPv6 구성


인스턴스가 연결된 서브넷에 IPv6 범위가 구성되어 있으면 Compute Engine 인스턴스에 IPv6 주소를 구성할 수 있습니다.

IPv6에 대한 자세한 내용은 IPv6 서브넷 범위를 참조하세요.

사양

  • IPv4 및 IPv6 구성을 둘 다 포함하는 컴퓨팅 인스턴스는 이중 스택입니다. IPv6 주소는 네트워크 인터페이스에 구성된 IPv4 주소에 추가로 제공됩니다.

  • 이중 스택 또는 IPv6 전용 인스턴스의 인터페이스에는 IPv6 주소의 단일 /96 범위가 할당됩니다. 범위 안의 첫 번째 IPv6 주소(/128)는 인터페이스에 구성됩니다.

  • 인스턴스의 모든 인터페이스에 IPv6 주소를 구성할 수 있습니다. 다중 네트워크 인터페이스 구성에 대한 자세한 내용은 다중 네트워크 인터페이스를 참조하세요.

  • VM의 네트워크 인터페이스의 스택 유형에 따라 연결할 수 있는 서브넷 유형이 결정됩니다.

    • IPv4 전용 인터페이스는 이중 스택 및 IPv4 전용 서브넷에 연결할 수 있습니다.
    • 이중 스택 인터페이스는 이중 스택 서브넷에 연결할 수 있습니다.
    • IPv6 전용 인터페이스는 이중 스택 및 IPv6 전용 서브넷에 연결할 수 있습니다(프리뷰).
  • 네트워크 인터페이스에 IPv6 주소를 구성하려면 인터페이스가 이중 스택 또는 IPv6 전용 서브넷(프리뷰)에 연결되어 있어야 합니다.

  • 서브넷의 IPv6 액세스 유형 구성에 따라 서브넷에 내부 또는 외부 IPv6 범위가 포함되는지 결정됩니다. 연결된 인스턴스는 서브넷에서 IPv6 액세스 유형을 상속합니다.

  • IPv6 전용 인스턴스(프리뷰)는 Ubuntu 및 Debian OS에서만 지원됩니다.

IPv6 주소를 사용하여 인스턴스에 액세스

암시적 IPv6 거부 인그레스 방화벽 규칙은 해당 IPv6 주소로 들어오는 연결을 차단하여 인스턴스를 보호합니다. IPv6 주소를 사용하여 인스턴스에 액세스하려면 우선순위가 더 높은 규칙이 수신 액세스를 허용해야 합니다.

방화벽 규칙에 대한 자세한 내용은 VPC 방화벽 규칙계층적 방화벽 정책을 참고하세요.

VPC 방화벽 규칙 예시는 일반적인 사용 사례에 대한 방화벽 규칙 구성을 참고하세요.

IPv6 주소 할당

다음 목록에서는 IPv6 주소가 컴퓨팅 인스턴스에 할당되는 방법을 설명합니다.

  • 컴퓨팅 인스턴스에는 DHCPv6을 사용하여 IPv6 주소가 할당됩니다. 메타데이터 서버는 인스턴스의 DHCPv6 요청에 응답하고 응답에서 할당된 /96 범위의 첫 번째 IPv6 주소(/128)를 전송합니다.

  • 메타데이터 서버는 경로 공지를 사용하여 기본 경로를 인스턴스에 게시합니다. 그런 후 인스턴스는 모든 IPv6 트래픽에 이 기본 경로를 사용할 수 있습니다.

    인스턴스에 연결하고 메타데이터 서버에서 gateway-ipv6 항목을 쿼리하여 인스턴스의 네트워크 인터페이스에 대한 기본 경로를 찾을 수 있습니다.

    curl http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/gateway-ipv6 -H "Metadata-Flavor: Google"
    

    메타데이터 서버에 대한 자세한 내용은 인스턴스 메타데이터 보기 및 쿼리를 참고하세요.

  • 컴퓨팅 인스턴스는 fe80::/10 범위에서 할당된 링크 로컬 IP 주소로 구성되지만 이웃 검색에만 사용됩니다.

  • 인스턴스의 네트워크 인터페이스의 MTU 구성은 IPv4 및 IPv6 패킷 모두에 적용되지만 모든 상황에서 모든 MTU 값이 지원되지는 않습니다. 자세한 내용은 최대 전송 단위를 참조하세요.

IPv6 주소를 사용하는 인스턴스 만들기

IPv4 주소와 IPv6 주소를 조합하여 사용하는 인스턴스(이중 스택)를 만들거나 IPv6 주소만 사용하는 인스턴스를 만들 수 있습니다.

IPv6 주소를 사용하는 Compute Engine 인스턴스를 만드는 방법에 관한 자세한 내용은 다음 태스크를 참고하세요.

인스턴스의 스택 유형 변경

기존 Compute Engine 인스턴스의 스택 유형을 변경할 수 있습니다. 스택 유형은 다음 중 하나로 설정할 수 있습니다.

  • IPv4만(단일 스택)
  • IPv4 및 IPv6(이중 스택)

스택 유형을 이중 스택으로 변경할 경우 인스턴스가 이중 스택 서브넷에 연결되어야 합니다. 인스턴스가 연결된 서브넷을 변경해야 하는 경우 인스턴스를 중지하고 서브넷을 변경합니다. 서브넷이 업데이트된 후 인스턴스의 IP 스택 유형을 변경할 수 있습니다.

IPv6 전용 인스턴스(프리뷰)의 스택 유형은 변경할 수 없습니다.

콘솔

  1. VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스로 이동

  2. IPv6 주소를 할당하려는 인스턴스 이름을 클릭합니다.

  3. 인스턴스 세부정보 페이지에서 다음 단계를 완료합니다.

    1. 수정을 클릭합니다.
    2. 네트워크 인터페이스에서 수정할 인터페이스를 확장합니다.
    3. IP 스택 유형 선택: IPv4만(단일 스택) 또는 IPv4 및 IPv6(이중 스택).
    4. 완료를 클릭합니다.
  4. 저장을 클릭합니다.

gcloud

gcloud compute instances network-interfaces update 명령어를 사용하여 인스턴스의 스택 유형을 업데이트합니다.

gcloud compute instances network-interfaces update INSTANCE_NAME \
    --stack-type=STACK_TYPE \
    --zone=ZONE

다음을 바꿉니다.

  • INSTANCE_NAME: 인스턴스 이름
  • STACK_TYPE: 인스턴스의 스택 유형(IPV4_ONLY 또는 IPV4_IPV6)
  • ZONE: 인스턴스가 배포된 영역

REST

instances.updateNetworkInterface 메서드PATCH 요청을 전송하여 인스턴스의 스택 유형을 업데이트하세요.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/updateNetworkInterface

다음을 바꿉니다.

  • PROJECT_ID: 인스턴스가 포함된 프로젝트의 ID
  • ZONE: 인스턴스가 배포된 영역
  • INSTANCE_NAME: 인스턴스 이름

요청 본문 예시:

{
    "stackType": "STACK_TYPE",
}

STACK_TYPE을 인스턴스의 스택 유형인 IPV4_ONLY 또는 IPV4_IPV6로 바꿉니다.

IPv6 주소로 인스턴스 템플릿 만들기

이중 스택 또는 IPv6 전용(프리뷰) 인스턴스를 만드는 데 사용할 수 있는 리전 또는 전역 인스턴스 템플릿을 만들 수 있습니다. 자세한 내용은 인스턴스 템플릿 만들기를 참조하세요.

IPv6 주소를 사용하는 인스턴스를 만드는 인스턴스 템플릿을 만들려면 Google Cloud CLI 또는 REST를 사용해야 합니다.

gcloud

리전 또는 전역 인스턴스 템플릿을 만들려면 gcloud compute instance-templates create 명령어를 사용합니다. 리전 인스턴스 템플릿을 만들려면 --instance-template-region 플래그를 사용하여 인스턴스 템플릿의 리전을 지정해야 합니다.

다음 예시에서는 전역 인스턴스 템플릿을 만듭니다.

gcloud compute instance-templates create TEMPLATE_NAME \
    --subnet=SUBNET \
    --stack-type=STACK_TYPE

다음을 바꿉니다.

  • TEMPLATE_NAME: 템플릿의 이름
  • SUBNET: IPv6 서브넷 범위가 있는 서브넷
  • STACK_TYPE: 스택 유형. 이중 스택 인스턴스의 경우 IPV4_IPV6이고 외부 IPv6 주소가 있는 인스턴스의 경우 IPV6_ONLY입니다.

REST

리전 인스턴스 템플릿을 만들려면 regionInstanceTemplates.insert 메서드를 사용하거나 전역 인스턴스 템플릿을 만들려면 instanceTemplates.insert 메서드를 사용합니다.

다음 예시에서는 전역 인스턴스 템플릿을 만듭니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates

PROJECT_ID를 프로젝트 ID로 바꿉니다.

요청 본문 예시:

{
  "name": "INSTANCE_TEMPLATE_NAME"
  "properties": {
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "subnetwork": "regions/REGION/subnetworks/SUBNET",
        "stackType": "STACK_TYPE",
      },
    ],
    "disks":
    [
      {
        "type": "PERSISTENT",
        "boot": true,
        "mode": "READ_WRITE",
        "initializeParams":
        {
          "sourceImage": "IMAGE_URI"
        }
      }
    ]
  }
}

다음을 바꿉니다.

  • INSTANCE_TEMPLATE_NAME: 인스턴스 템플릿의 이름
  • MACHINE_TYPE: 인스턴스의 머신 유형(예: c3-standard-4)
  • SUBNET: IPv6 서브넷 범위가 있는 서브넷
  • REGION: 서브넷의 리전
  • IMAGE_URI: 사용하려는 이미지의 URI

    예를 들어 "sourceImage": "projects/debian-cloud/global/images/family/debian-12"를 지정하면 Compute Engine은 Debian 12 이미지 계열의 최신 버전 운영체제 이미지에서 인스턴스를 만듭니다.

요청 매개변수에 대한 자세한 내용은 instanceTemplates.insert 메서드를 참조하세요.