별칭 IP 범위 구성

이 문서에서는 Google Cloud Console과 Google Cloud CLI를 사용하여 별칭 IP 주소와 별칭 IP 범위를 구성하는 방법을 안내합니다. 이 명령어를 실행하기 전에 별칭 IP 범위를 검토하세요.

제한사항

서브넷

  • 네트워크별 한도는 각 서브넷에서 정의할 수 있는 최대 보조 범위 수를 나타냅니다.
  • 보조 범위를 동시에 추가하고 삭제할 수 없습니다. 추가와 삭제는 서로 별도의 단계로 수행되어야 합니다.
  • 보조 범위에는 CIDR 확장이 지원되지 않습니다.

VM 인스턴스

  • 별칭 IP 범위는 모든 VM 네트워크 인터페이스에서 지원됩니다. 라우팅은 기본 네트워크 인터페이스의 별칭 IP 범위의 경우 자동으로 구성되지만 보조 인터페이스의 경우에는 그렇지 않습니다. 다중 네트워크 인터페이스가 있는 경우 추가 인터페이스에 정책 라우팅을 구성해야 합니다.
  • 별칭 IP 범위를 추가하거나 삭제할 수 있지만 업데이트할 수는 없습니다.
  • 한 VM의 별칭 IP 범위를 삭제하고 다른 VM에 할당할 경우, 이전이 완료되는 데 최대 1분이 소요될 수 있습니다.
  • 별칭 IP 주소에는 방화벽 소스 태그가 지원되지 않습니다. 즉, 방화벽 규칙에 소스 태그를 구성하면 해당 소스 태그가 VM 기본 IP 주소와 일치하지만 별칭 IP 주소와는 일치하지 않습니다. 소스 범위를 사용하여 별칭 IP 주소에서 오는 인그레스 트래픽을 허용하거나 거부합니다.
  • 내부 DNS가 기본 IP의 VM 이름을 확인합니다. 별칭 IP의 추가 이름은 자동으로 구성되지 않으며 수동으로 추가할 수 있습니다.

VPC 네트워크

  • 다수의 별칭 IP 범위를 동시에 추가하거나 삭제하려면 시간이 오래 걸릴 수 있습니다. 예를 들어 별칭 IP 범위 7,000개를 추가하거나 삭제하는 데 최대 10분이 걸릴 수 있습니다.
  • 보조 서브넷 범위가 있으면 자동 모드 VPC 네트워크를 삭제할 수 없습니다.
  • 정적 경로에서는 다음 홉 IP 주소가 VM의 기본 IP 주소여야 합니다. 별칭 IP 주소는 다음 홉 IP 주소로 지원되지 않습니다.
  • IPv6 주소는 지원되지 않습니다.
  • 별칭 IP 범위는 VPC 네트워크에서만 지원되고 이전 네트워크에서는 지원되지 않습니다. 네트워크 유형을 확인하려면 네트워크 목록을 표시하세요. VPC 네트워크의 모드는 custom 또는 auto입니다. 기존 네트워크의 모드는 legacy입니다.

서브넷 명령어

VM 별칭 IP 범위는 VM이 속한 서브넷이 소유하는 범위에서 할당받아야 합니다. 모든 서브넷에는 해당 서브넷을 정의하는 내부 IP 주소의 표준 범위인 기본 범위가 있습니다. 또한 서브넷에는 내부 IP 주소로 구성된 하나 이상의 보조 IP 범위가 있을 수 있습니다. 서브넷의 기본 범위나 보조 범위에서 별칭 IP 범위를 할당할 수 있습니다.

각 보조 범위에는 해당 서브넷에서 고유한 이름을 지정해야 합니다. VM에 별칭 IP 범위를 할당할 경우, 보조 범위 이름은 별칭 IP를 할당할 서브넷 범위를 Google Cloud에 알려줍니다.

기본 범위든 보조 범위든 모든 범위는 VPC 네트워크와 VPC 네트워크 피어링, VPN, 상호 연결을 통해 연결된 모든 네트워크의 모든 서브넷에서 고유해야 합니다.

이 섹션에서는 보조 범위로 서브넷을 만들거나, 기존 서브넷에 보조 범위를 추가하거나, 서브넷에서 보조 범위를 삭제하는 방법을 보여줍니다. 서브넷에 사용자가 사용하려는 범위가 있다면 VM 인스턴스 명령어에서 VM에 범위를 할당하는 방법을 확인하세요.

하나 이상의 보조 CIDR 범위로 서브넷 만들기

이 명령어는 VPC 네트워크가 준비되어 있다고 가정합니다. 그렇지 않은 경우, VPC 네트워크를 만듭니다.

이 명령어는 VM의 기본 인터페이스를 위한 서브넷을 만드는 경우든, 보조 인터페이스 중 하나를 위한 서브넷을 만드는 경우든 동일합니다.

별칭 IP 할당에 보조 범위를 사용하면 VM에서 호스트되는 서비스에 별도의 IP 공간이 허용되므로 VM에서 실행되는 서비스에만 액세스를 허용하고 VM의 기본 IP 주소에 대한 액세스는 차단하는 방화벽 규칙을 만들기가 더 쉽습니다.

Console

  1. Google Cloud Console에서 VPC 네트워크 페이지로 이동합니다.
    VPC 네트워크 페이지로 이동
  2. 기존 네트워크의 이름을 클릭합니다.
  3. 서브넷 추가를 클릭합니다.
  4. 새 서브넷의 이름을 입력합니다.
  5. 리전을 지정합니다.
  6. CIDR 표기법으로 IP 주소 범위를 입력합니다. (예: 10.65.61.0/24)
  7. 보조 IP 범위 만들기를 클릭합니다.
  8. 서브넷 범위 이름을 입력합니다.
  9. CIDR 표기법으로 보조 IP 범위를 입력합니다. (예: 10.9.0.0/24)
  10. 보조 IP 범위를 추가하려면 각 범위에 IP 범위 추가를 클릭한 다음 이름과 범위를 지정합니다.
  11. 추가를 클릭합니다.

gcloud

gcloud compute networks subnets create s1 \
    --network NETWORK_NAME \
    --region REGION \
    --range 10.65.61.0/24 \
    --secondary-range RANGE_NAME_1=RANGE_CIDR_1,RANGE_NAME_2=RANGE_CIDR_2,...

다음을 바꿉니다.

  • NETWORK_NAME: 서브넷을 만들 네트워크의 이름입니다.
  • REGION: 서브넷을 만들 리전입니다.
  • RANGE_NAME_1=RANGE_CIDR_1RANGE_NAME_2=RANGE_CIDR_2: 별칭 IP 범위 및 별칭 IP 범위 자체를 가져올 보조 범위의 이름입니다(예: range1=10.9.0.0/24).

전체 구문은 gcloud CLI 문서를 참조하세요.

API

하나 이상의 보조 범위가 있는 서브넷을 만듭니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks
{
  "ipCidrRange": "PRIMARY_IP_RANGE",
  "network": "NETWORK_URL",
  "name": "SUBNET_NAME",
  "secondaryIpRanges": [
  {
    "rangeName": "SECONDARY_RANGE_NAME_1",
    "ipCidrRange": "SECONDARY_IP_RANGE_1"
  },
  {
    "rangeName": "SECONDARY_RANGE_NAME_2",
    "ipCidrRange": "SECONDARY_IP_RANGE_2"
  },
  ...]
}

다음을 바꿉니다.

  • NETWORK_URL: 서브넷이 생성될 URL 또는 VPC 네트워크입니다.
  • PRIMARY_IP_RANGE: 서브넷의 기본 IP 주소 범위입니다.
  • PROJECT_ID: 서브넷이 생성될 VPC 네트워크가 포함된 프로젝트의 ID입니다.
  • REGION: 서브넷이 위치할 리전입니다.
  • SECONDARY_IP_RANGE_1SECONDARY_IP_RANGE_2: 보조 범위에 사용할 IP 주소 범위입니다.
  • SECONDARY_RANGE_NAME_1SECONDARY_RANGE_NAME_2: 보조 범위에 사용할 이름입니다.
  • SUBNET_NAME: 서브넷의 이름입니다.

자세한 내용은 subnetworks.insert 메서드를 참조하세요.

Terraform

Terraform 리소스를 사용하여 하나 이상의 보조 범위가 있는 서브넷을 만들 수 있습니다.

Terraform 인수에는 변경할 수 있는 예시 값이 있습니다.

resource "google_compute_subnetwork" "network-with-private-secondary-ip-ranges" {
  project       = var.project_id # Replace this with your project ID in quotes
  name          = "test-subnetwork"
  ip_cidr_range = "10.2.0.0/16"
  region        = "us-central1"
  network       = "test-vpc-network"
  secondary_ip_range {
    range_name    = "tf-test-secondary-range-update1"
    ip_cidr_range = "192.168.10.0/24"
  }
}

Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요.

기존 서브넷에 보조 CIDR 범위 추가하기

이 절차에서는 사용자가 사용하려는 서브넷을 가지고 있으나 하나 이상의 보조 범위를 추가해야 한다고 가정합니다.

별칭 IP 할당에 보조 범위를 사용하면 VM에서 실행되는 서비스에 대해서는 액세스를 허용하고 VM의 기본 IP 주소에 대한 액세스는 허용하지 않는 방화벽 규칙을 만들기가 더 쉽습니다.

Console

  1. Google Cloud Console에서 VPC 네트워크 페이지로 이동합니다.
    VPC 네트워크 페이지로 이동
  2. 세부정보 페이지를 보려면 수정할 서브넷의 이름을 클릭합니다.
  3. 수정을 클릭합니다.
  4. 보조 IP 범위 섹션에서 IP 범위 추가를 클릭합니다.
  5. 서브넷 범위 이름의 이름을 입력합니다.
  6. 보조 IP 범위의 범위를 CIDR 표기법으로 입력합니다. (예: 10.9.0.0/24)
  7. 보조 IP 범위를 추가하려면 각 범위에 IP 범위 추가를 클릭한 다음 이름과 범위를 지정합니다.
  8. 저장을 클릭합니다.

gcloud

gcloud compute networks subnets update SUBNET_NAME \
    --region REGION \
    --add-secondary-ranges RANGE_NAME_1=RANGE_CIDR_1,RANGE_NAME_2=RANGE_CIDR_2,...

다음을 바꿉니다.

  • SUBNET_NAME: 보조 범위를 추가할 대상 서브넷의 이름입니다.
  • REGION: 서브넷을 만들 리전입니다.
  • RANGE_NAME_1=RANGE_CIDR_1RANGE_NAME_2=RANGE_CIDR_2: 별칭 IP 범위 및 별칭 IP 범위 자체를 가져올 보조 범위의 이름입니다(예: range1=10.9.0.0/24).

전체 구문은 gcloud CLI 문서를 참조하세요.

API

기존 서브넷에 보조 범위를 추가합니다.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
{
  "secondaryIpRanges": [
  {
    "rangeName": "SECONDARY_RANGE_NAME_1",
    "ipCidrRange": "SECONDARY_IP_RANGE_1"
  },
  {
    "rangeName": "SECONDARY_RANGE_NAME_2",
    "ipCidrRange": "SECONDARY_IP_RANGE_2"
  },
  ...],
  "fingerprint": "SUBNETWORK_FINGERPRINT"
}

자리표시자를 유효한 값으로 바꿉니다.

  • PROJECT_ID는 수정할 서브넷이 포함된 프로젝트의 ID입니다.
  • REGION은 서브넷이 있는 리전입니다.
  • SECONDARY_IP_RANGE_1SECONDARY_IP_RANGE_2는 보조 범위에 사용할 IP 주소 범위입니다.
  • SECONDARY_RANGE_NAME_1SECONDARY_RANGE_NAME_2는 보조 범위에 사용할 이름입니다.
  • SUBNET_FINGERPRINT서브넷을 설명할 때 제공되는 기존 서브넷의 지문 ID입니다.
  • SUBNET_NAME은 수정할 서브넷의 이름입니다.

자세한 내용은 subnetworks.patch 메서드를 참조하세요.

서브넷에서 보조 CIDR 범위 삭제하기

서브넷에서 기존 보조 범위를 삭제할 수 있습니다. 서브넷과 연결된 범위를 보려면 서브넷 설명을 참조하세요.

콘솔

  1. Google Cloud Console에서 VPC 네트워크 페이지로 이동합니다.
    VPC 네트워크 페이지로 이동
  2. 세부정보 페이지를 보려면 수정할 서브넷의 이름을 클릭합니다.
  3. 수정을 클릭합니다.
  4. 보조 IP 범위 섹션에서 삭제할 보조 범위 옆의 X를 클릭합니다.
  5. 저장을 클릭합니다.

gcloud

gcloud compute networks subnets update SUBNET_NAME \
    --region REGION \
    --remove-secondary-ranges RANGE_NAME_1,RANGE_NAME_2,...

각 항목의 의미는 다음과 같습니다.

  • SUBNET_NAME은 보조 범위를 삭제할 서브넷의 이름입니다.
  • REGION은 서브넷을 만들 지역입니다.
  • RANGE_NAME_1RANGE_NAME_2는 대상 서브넷 SUBNET_NAME에서 삭제될 보조 범위의 이름입니다. 예를 들면 range1=10.9.0.0/24입니다.

전체 구문은 gcloud CLI 문서를 참조하세요.

API

보조 범위를 삭제하려면 제외하세요. 다음 예시에서는 기존 서브넷에서 모든 보조 범위를 삭제합니다.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
{
  "fingerprint": "SUBNET_FINGERPRINT",
  "secondaryIpRanges": [
  ]
}

자리표시자를 유효한 값으로 바꿉니다.

  • PROJECT_ID는 수정할 서브넷이 포함된 프로젝트의 ID입니다.
  • REGION은 서브넷이 있는 리전입니다.
  • SUBNET_FINGERPRINT서브넷을 설명할 때 제공되는 기존 서브넷의 지문 ID입니다.
  • SUBNET_NAME은 수정할 서브넷의 이름입니다.

자세한 내용은 subnetworks.patch 메서드를 참조하세요.

VM 인스턴스 작업

이 명령어는 별칭 IP 범위로 인스턴스를 만들거나 기존 VM 인스턴스에 하나 이상의 별칭 IP 범위를 추가하거나 기존 VM 인스턴스에서 하나 이상의 범위를 삭제하는 방법을 보여줍니다.

기본 CIDR 범위의 별칭 IP 범위로 VM 만들기

서브넷의 기본 범위에서 별칭 IP 범위를 할당하려는 경우 이 절차를 사용합니다. VPC 네트워크의 다른 리소스에서 사용자가 선택하는 범위 중 일부라도 이미 사용하고 있어야 합니다.

인스턴스의 기본 인터페이스와 별칭 IP 주소가 동일한 범위에 있게 하려면 이 절차를 사용합니다.

Console

  1. Google Cloud 콘솔의 VM 인스턴스 페이지로 이동합니다.
    VM 인스턴스 페이지로 이동
  2. 인스턴스 만들기를 클릭합니다.
  3. 새 인스턴스의 이름을 입력합니다.
  4. 영역을 지정합니다.
  5. 관리, 보안, 디스크, 네트워킹, 단독 테넌시를 클릭합니다.
  6. 네트워킹 탭을 클릭합니다.
  7. 네트워크 인터페이스 섹션에서 기본 인터페이스 옆에 있는 편집(연필 아이콘) 버튼을 클릭합니다.
  8. 별칭 IP 범위 표시를 클릭합니다.
  9. 서브넷 범위기본으로 설정된 상태로 둡니다.
  10. CIDR 표기법으로 별칭 IP 범위를 입력합니다. 이 범위는 기본 범위의 사용되지 않은 하위 범위여야 합니다.
  11. 만들기를 클릭합니다.

gcloud

gcloud compute instances create vm1 \
    --zone ZONE \
    --network-interface "subnet=SUBNET_NAME,aliases=RANGE_CIDR_1;RANGE_CIDR_2,..."

각 항목의 의미는 다음과 같습니다.

  • ZONE은 인스턴스를 포함할 영역입니다.
  • SUBNET_NAME은 인스턴스를 포함할 서브넷의 이름입니다.
  • RANGE_CIDR_1RANGE_CIDR_2는 인터페이스에 할당할 기본 서브넷의 IP 범위입니다. 이 범위는 특정 범위(192.168.100.0/24), 단일 IP 주소(192.168.100.1), CIDR 형식의 넷마스크(/24)가 될 수 있습니다. 이 IP 범위가 넷마스크로만 지정될 경우, IP 할당자가 이렇게 지정된 넷마스크로 사용 가능한 범위를 선택하여 네트워크 인터페이스에 할당합니다. 둘 이상의 범위를 지정하려면 각 범위를 세미콜론(;)으로 구분합니다.

전체 구문은 gcloud CLI 문서를 참조하세요.

API

인스턴스 서브넷의 기본 IP 주소 범위에서 별칭 IP 주소로 인스턴스를 만듭니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  "networkInterfaces": [
    {
      "aliasIpRanges": [
        {
          "ipCidrRange": "CIDR_RANGE"
        }
      ]
    },
    ...
  ],
  ...
}

자리표시자를 유효한 값으로 바꿉니다.

  • PROJECT_ID는 인스턴스를 만들 프로젝트의 ID입니다.
  • CIDR_RANGE는 인스턴스에 할당할 기본 서브넷의 IP 범위입니다. 이 범위는 특정 범위(192.168.100.0/24), 단일 IP 주소(192.168.100.1), CIDR 형식의 넷마스크(/24)가 될 수 있습니다. 이 IP 범위가 넷마스크로만 지정될 경우, IP 주소 할당자가 이렇게 지정된 넷마스크로 사용 가능한 범위를 선택하여 네트워크 인터페이스에 할당합니다.
  • ZONE은 인스턴스가 생성될 Google Cloud 영역입니다.

자세한 내용은 instance.insert 메서드를 참조하세요.

보조 CIDR 범위의 별칭 IP 범위로 VM 만들기

서브넷의 보조 범위에서 가져온 별칭 IP 범위를 할당하려면 이 절차를 사용합니다. 별칭 IP 범위를 서브넷의 기본 범위와 구분하면 VM에서 실행되는 서비스에 대해서는 액세스를 허용하되 VM의 기본 IP 주소에 대한 액세스는 허용하지 않는 방화벽 규칙을 만들기가 더 쉽습니다.

Console

  1. Google Cloud 콘솔의 VM 인스턴스 페이지로 이동합니다.
    VM 인스턴스 페이지로 이동
  2. 인스턴스 만들기를 클릭합니다.
  3. 새 인스턴스의 이름을 입력합니다.
  4. 영역을 지정합니다.
  5. 관리, 보안, 디스크, 네트워킹, 단독 테넌시를 클릭합니다.
  6. 네트워킹 탭을 클릭합니다.
  7. 네트워크 인터페이스 섹션에서 기본 인터페이스 옆에 있는 편집(연필 아이콘) 버튼을 클릭합니다.
  8. 별칭 IP 범위 표시를 클릭합니다.
  9. 보조 범위를 가진 서브네트워크를 선택합니다.
  10. 서브넷 범위에서 사용하려는 보조 IP 범위를 선택합니다.
  11. CIDR 표기법으로 별칭 IP 범위를 입력합니다. 이 범위는 보조 IP 범위의 사용되지 않은 범위여야 합니다.
  12. 만들기를 클릭합니다.

gcloud

gcloud compute instances create vm3 \
    --zone ZONE \
    --network-interface subnet=SUBNET_NAME,aliases=RANGE_NAME:RANGE_CIDR
 

각 항목의 의미는 다음과 같습니다.

  • ZONE은 인스턴스를 포함할 영역입니다.
  • SUBNET_NAME은 인스턴스를 포함할 서브넷의 이름입니다.
  • RANGE_NAME은 별칭 IP 범위를 가져올 서브넷 보조 범위의 이름입니다.
  • RANGE_CIDR는 인터페이스에 할당할 IP 범위입니다. 이 범위는 특정 범위(192.168.100.0/24), 단일 IP 주소(192.168.100.1), CIDR 형식의 넷마스크(/24)가 될 수 있습니다. 이 IP 범위가 넷마스크로만 지정될 경우, IP 할당자가 이렇게 지정된 넷마스크로 사용 가능한 범위를 선택하여 네트워크 인터페이스에 할당합니다.

전체 구문은 gcloud 문서를 참조하세요.

API

인스턴스 서브넷의 보조 IP 주소 범위에서 별칭 IP 주소로 인스턴스를 만듭니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  "networkInterfaces": [
    {
      "aliasIpRanges": [
        {
          "ipCidrRange": "SECONDARY_CIDR_RANGE",
          "subnetworkRangeName": "SECONDARY_RANGE_NAME"
        }
      ]
    },
    ...
  ],
  ...
}

자리표시자를 유효한 값으로 바꿉니다.

  • PROJECT_ID는 인스턴스를 만들 프로젝트의 ID입니다.
  • SECONDARY_CIDR_RANGE는 인터페이스에 할당할 IP 범위입니다. 이 범위는 특정 범위(192.168.100.0/24), 단일 IP 주소(192.168.100.1), CIDR 형식의 넷마스크(/24)가 될 수 있습니다. 이 IP 범위가 넷마스크로만 지정될 경우, IP 주소 할당자가 이렇게 지정된 넷마스크로 사용 가능한 범위를 선택하여 네트워크 인터페이스에 할당합니다.
  • SECONDARY_RANGE_NAME은 별칭 IP 범위를 가져올 서브넷 보조 범위의 이름입니다.
  • ZONE은 인스턴스가 생성될 Google Cloud 영역입니다.

자세한 내용은 instance.insert 메서드를 참조하세요.

여러 인터페이스와 별칭 IP 주소로 하나의 VM 만들기

이 예시에서는 서브넷이 하나씩 있는 네트워크 2개를 만들고 두 네트워크에 여러 개의 인터페이스가 있는 하나의 VM을 만듭니다. VPC 네트워크 2개가 이미 있다면 'VM 인스턴스 만들기' 단계로 건너뛰어도 됩니다.

Console

첫 번째 네트워크와 서브넷을 만듭니다.

  1. Google Cloud Console에서 VPC 네트워크 페이지로 이동합니다.
    VPC 네트워크 페이지로 이동
  2. VPC 네트워크 만들기를 클릭합니다.
  3. my-network1이름을 입력합니다.
  4. 서브넷 생성 모드Custom으로 설정하고 서브넷 이름my-subnet1로 지정합니다.
  5. 리전을 지정합니다.
  6. IP 주소 범위172.16.1.0/24로 설정합니다.
  7. 보조 IP 범위 만들기를 클릭합니다.
  8. 서브넷 범위 이름range1로 설정합니다.
  9. 보조 IP 범위10.1.0.0/16으로 설정합니다.
  10. 완료를 클릭합니다.
  11. 만들기를 클릭합니다.

보조 네트워크와 서브넷을 만듭니다.

  1. Google Cloud Console에서 VPC 네트워크 페이지로 이동합니다.
    VPC 네트워크 페이지로 이동
  2. VPC 네트워크 만들기를 클릭합니다.
  3. my-network2이름을 입력합니다.
  4. 서브넷 생성 모드Custom으로 설정하고 서브넷 이름my-subnet2로 지정합니다.
  5. 첫 번째 네트워크와 서브넷에 지정한 것과 동일한 리전을 지정합니다.
  6. IP 주소 범위172.16.2.0/24로 설정합니다.
  7. 보조 IP 범위 만들기를 클릭합니다.
  8. 서브넷 범위 이름range2로 설정합니다.
  9. 보조 IP 범위10.2.0.0/16으로 설정합니다.
  10. 완료를 클릭합니다.
  11. 만들기를 클릭합니다.

두 네트워크에 인터페이스가 여러 개 있는 VM을 만듭니다.

  1. Google Cloud Console의 VM 인스턴스 페이지로 이동합니다.
    VM 인스턴스 페이지로 이동
  2. 인스턴스 만들기를 클릭합니다.
  3. 영역을 사용자가 서브넷을 만든 리전으로 설정합니다.
  4. 관리, 보안, 디스크, 네트워킹, 단독 테넌시를 클릭합니다.
  5. 네트워킹을 클릭합니다.
  6. 첫 번째 네트워크 인터페이스를 클릭합니다.
  7. 네트워크my-network1로 설정합니다.
  8. 서브네트워크my-subnet1로 설정합니다.
  9. 별칭 IP 범위 표시를 클릭합니다.
  10. 별칭 IP 범위 추가를 클릭합니다.
  11. 서브넷 범위Primary로 설정합니다.
  12. 별칭 IP 범위/32로 설정합니다.
  13. IP 범위 추가를 클릭합니다.
  14. 서브넷 범위range1로 설정합니다.
  15. 별칭 IP 범위/24로 설정합니다.
  16. 완료를 클릭합니다.
  17. 네트워크 인터페이스 추가를 클릭합니다.
  18. my-network2을 선택합니다.
  19. 서브네트워크my-subnet2로 설정합니다.
  20. 별칭 IP 범위 표시를 클릭합니다.
  21. 별칭 IP 범위 추가를 클릭합니다.
  22. 서브넷 범위Primary로 설정합니다.
  23. 별칭 IP 범위/32로 설정합니다.
  24. IP 범위 추가를 클릭합니다.
  25. 서브넷 범위range2로 설정합니다.
  26. 별칭 IP 범위/24로 입력합니다.
  27. 완료를 클릭합니다.
  28. 만들기를 클릭합니다.

gcloud

  1. 첫 번째 네트워크를 만듭니다.

    gcloud compute networks create my-network1 --subnet-mode CUSTOM
    
  2. 서브넷을 추가합니다.

    gcloud compute networks subnets create my-subnet1 \
        --network my-network1 \
        --range 172.16.1.0/24 \
        --secondary-range range1=10.1.0.0/16
    
  3. 두 번째 네트워크를 만듭니다.

    gcloud compute networks create my-network2 --subnet-mode CUSTOM
    
  4. 서브넷을 추가합니다.

    gcloud compute networks subnets create my-subnet2 \
        --network my-network2 \
        --range 172.16.2.0/24 \
        --secondary-range range2=10.2.0.0/16
    
  5. 두 네트워크에 인터페이스가 여러 개 있는 VM을 만듭니다. 첫 번째로 나열된 네트워크 인터페이스 즉, my-subnet1에 있는 인터페이스가 기본 인터페이스입니다.

    gcloud compute instances create multi-nic-alias-vm \
        --machine-type f1-micro \
        --network-interface "subnet=my-subnet1,aliases=/32;range1:/24" \
        --network-interface "subnet=my-subnet2,aliases=/32;range2:/24"
    
  6. 표시 명령어를 사용하여 인터페이스와 그 주소를 확인합니다.

    gcloud compute instances describe multi-nic-alias-vm
    
    ...
    networkInterfaces:
    - ...
      aliasIpRanges:
      - ipCidrRange: 172.16.1.2/32
      - ipCidrRange: 10.1.0.0/24
        subnetworkRangeName: range1
      name: nic0
      network: .../networks/my-network1
      networkIP: 172.16.1.3
      subnetwork: .../subnetworks/my-subnet1
      ...
    - ...
      aliasIpRanges:
      - ipCidrRange: 172.16.2.2/32
      - ipCidrRange: 10.2.0.0/24
        subnetworkRangeName: range2
      name: nic1
      network: .../networks/my-network2
      networkIP: 172.16.2.3
      subnetwork: .../subnetworks/my-subnet2
      

API

  1. 이름이 my-network1my-network2인 두 개의 커스텀 모드 VPC 네트워크를 만듭니다. 자세한 내용은 커스텀 모드 네트워크 만들기를 참조하세요.

  2. VPC 네트워크에 서브넷을 추가합니다. 자세한 내용은 서브넷 추가를 참조하세요.

    1. 이름이 my-subnet1~my-network1인 서브넷을 추가합니다. 기본 범위에는 172.16.1.0/24를 지정하고 이름이 range1인 보조 범위에는 10.1.0.0/16을 지정합니다.

    2. 이름이 my-subnet2~my-network2인 서브넷을 추가합니다. 기본 범위에는 172.16.2.0/24를 지정하고 이름이 range2인 보조 범위에는 10.2.0.0/16을 지정합니다.

  3. 두 네트워크에 인터페이스가 여러 개 있는 VM 인스턴스를 만듭니다.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
    {
      "networkInterfaces": [
        {
          "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/my-subnet1",
          "aliasIpRanges": [
            {
              "ipCidrRange": "/32",
            },
            {
              "subnetworkRangeName": "range1",
              "ipCidrRange": "/24"
            }
          ]
        },
        {
          "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/my-subnet2",
          "aliasIpRanges": [
            {
              "ipCidrRange": "/32",
            },
            {
              "subnetworkRangeName": "range2",
              "ipCidrRange": "/24"
            }
          ]
        }
      ],
      ...
    }
    

    자리표시자를 유효한 값으로 바꿉니다.

    • PROJECT_ID는 인스턴스를 만들 프로젝트의 ID입니다.
    • REGION은 서브넷이 있는 Google Cloud 리전입니다. 서브넷은 인스턴스와 동일한 리전에 있어야 합니다.
    • ZONE은 인스턴스가 생성될 Google Cloud 영역입니다.

    자세한 내용은 instance.insert 메서드를 참조하세요.

기존 인스턴스에 별칭 IP 범위 추가하기

실행 중인 인스턴스에 별칭 IP 범위를 추가할 수 있습니다.

API 호출이 완료된 후에도 새 주소를 바로 사용할 수 없습니다. 게스트 OS가 주소와 경로를 추가한 후에만 사용할 수 있습니다.

Console

  1. Google Cloud 콘솔의 VM 인스턴스 페이지로 이동합니다.
    VM 인스턴스 페이지로 이동
  2. 기존 인스턴스의 이름을 클릭합니다.
  3. 수정을 클릭합니다.
  4. 네트워크 인터페이스 nic0(또는 별칭 IP 범위를 추가할 네트워크 인터페이스)을 클릭합니다.
  5. 별칭 IP 범위 표시를 클릭합니다.
  6. IP 범위 추가를 클릭합니다.
  7. 서브넷 범위를 선택합니다.
  8. 별칭 IP 범위를 입력합니다.
  9. 완료를 클릭합니다.
  10. 저장을 클릭합니다.

gcloud

gcloud compute instances network-interfaces update INSTANCE_NAME \
    --zone ZONE \
    [--network-interface NETWORK_INTERFACE; default="nic0"]
    --aliases "RANGE_NAME_1:RANGE_CIDR_1;RANGE_NAME_2:RANGE_CIDR_2;..."

다음을 바꿉니다.

  • ZONE은 인스턴스가 포함된 영역입니다.
  • NETWORK_INTERFACE는 별칭 IP 주소 범위를 추가할 네트워크 인터페이스의 이름입니다.
  • RANGE_NAME_1RANGE_NAME_2는 별칭 IP 범위를 가져올 서브넷 보조 범위의 이름입니다. 서브넷의 기본 범위에서 범위를 할당할 경우, 이 값을 생략합니다.
  • RANGE_CIDR_1RANGE_CIDR_2는 인터페이스에 할당할 IP 범위입니다. 이 범위는 특정 범위(192.168.100.0/24), 단일 IP 주소(192.168.100.1), CIDR 형식의 넷마스크(/24)가 될 수 있습니다. 이 IP 범위가 넷마스크로만 지정될 경우, IP 할당자가 이렇게 지정된 넷마스크로 사용 가능한 범위를 선택하여 네트워크 인터페이스에 할당합니다.

전체 구문은 gcloud 문서를 참조하세요.

API

기존 인스턴스에 별칭 IP 범위를 추가합니다.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/multinic/updateNetworkInterface?networkInterface=NETWORK_INTERFACE_NAME
{
  "aliasIpRanges": [
    {
      "ipCidrRange": "SECONDARY_IP_RANGE",
      "subnetworkRangeName": "SECONDARY_RANGE_NAME"
    },
    existing ranges...
  ],
  "fingerprint": "INTERFACE_FINGERPRINT"
}

자리표시자를 유효한 값으로 바꿉니다.

  • PROJECT_ID는 수정할 인스턴스가 포함된 프로젝트의 ID입니다.
  • NETWORK_INTERFACE_NAME은 수정할 인스턴스의 네트워크 인터페이스의 이름입니다.
  • INTERFACE_FINGERPRINT는 인스턴스를 설명할 때 제공되는 기존 네트워크 인터페이스의 지문 ID입니다.
  • SECONDARY_CIDR_RANGE는 인터페이스에 할당할 IP 범위입니다. 이 범위는 특정 범위(192.168.100.0/24), 단일 IP 주소(192.168.100.1), CIDR 형식의 넷마스크(/24)가 될 수 있습니다. 이 IP 범위가 넷마스크로만 지정될 경우, IP 주소 할당자가 이렇게 지정된 넷마스크로 사용 가능한 범위를 선택하여 네트워크 인터페이스에 할당합니다.
  • SECONDARY_RANGE_NAME은 별칭 IP 범위를 가져올 서브넷 보조 범위의 이름입니다. 서브넷의 기본 범위에서 범위를 할당할 경우, 이 필드를 생략합니다.
  • ZONE은 인스턴스가 생성될 Google Cloud 영역입니다.

자세한 내용은 instance.updateNetworkInterface 메서드를 참조하세요.

기존 인스턴스의 별칭 IP 범위 수정하기

기존 인스턴스에 별칭 IP 범위를 추가하거나 하나 이상의 범위를 삭제할 수 있습니다.

주소 변경사항이 바로 표시되지 않을 수 있습니다. API 호출이 완료되고 게스트 OS가 주소 및 경로를 수정해야 합니다.

Console

  1. Google Cloud 콘솔의 VM 인스턴스 페이지로 이동합니다.
    VM 인스턴스 페이지로 이동
  2. 기존 인스턴스의 이름을 클릭합니다.
  3. 수정을 클릭합니다.
  4. 네트워크 인터페이스 nic0(또는 수정할 네트워크 인터페이스)을 클릭합니다.
  5. 별칭 IP 범위 표시를 클릭합니다.
  6. 별칭 IP 범위를 추가하려면 별칭 IP 범위 추가를 클릭합니다.
  7. 별칭 IP 범위를 삭제하려면 별칭 IP 범위 옆의 X를 클릭합니다.
  8. 완료를 클릭합니다.
  9. 저장을 클릭합니다.

gcloud

gcloud compute instances network-interfaces update INSTANCE_NAME \
    --zone ZONE \
    [--network-interface NETWORK_INTERFACE; default="nic0"]
    --aliases "RANGES_TO_RETAIN;NEW_RANGE_NAME:NEW_RANGE_CIDR;..."
  • ZONE은 인스턴스를 포함하는 영역입니다.
  • NETWORK_INTERFACE는 수정할 네트워크 인터페이스의 이름입니다.
  • RANGES_TO_RETAIN은 유지하려는 기존 범위이며 CURRENT_RANGE_NAME:CURRRENT_RANGE_CIDR 형식입니다. 범위가 하나도 없는 인스턴스에 범위를 추가할 경우 해당 값은 공백이 됩니다. 인스턴스에서 모든 범위를 삭제할 경우, 전체 --aliases 필드가 공백이 됩니다.
  • NEW_RANGE_NAME은 새 별칭 IP 범위를 가져올 서브넷 보조 범위의 이름입니다. 서브넷의 기본 범위에서 범위를 할당할 경우, 이 값을 생략합니다.
  • NEW_RANGE_CIDR는 인터페이스에 할당할 IP 범위입니다. 이 범위는 특정 범위(192.168.100.0/24), 단일 IP 주소(192.168.100.1), CIDR 형식의 넷마스크(/24)가 될 수 있습니다. 이 IP 범위가 넷마스크로만 지정될 경우, IP 할당자가 이렇게 지정된 넷마스크로 사용 가능한 범위를 선택하여 네트워크 인터페이스에 할당합니다.

범위를 추가하려면 해당 명령어를 실행하고 기존 및 신규 별칭 IP 범위를 모두 지정합니다. 각 쌍을 세미콜론으로 구분합니다. 예를 들면 --aliases "CURRENT_RANGE_NAME:CURRRENT_RANGE_CIDR;NEW_RANGE_NAME:NEW_RANGE_CIDR"입니다.

범위를 삭제하려면 해당 명령어를 실행하고, 유지하고자 하는 별칭 IP 범위만 지정합니다. 보조 범위의 범위를 유지할 경우, 해당 보조 범위의 이름을 지정해야 합니다. CIDR 범위는 특정 범위(192.168.100.0/24) 또는 단일 IP 주소(192.168.100.1)가 될 수 있습니다(예: --aliases "RANGE_NAME:RANGE_CIDR;RANGE_CIDR").

모든 범위를 삭제하려면 해당 명령어를 실행하고 --aliases 플래그를 지정하되, 따옴표를 사용하여 공백을 입력합니다(예: --aliases "").

동일한 gcloud 명령어로 범위를 추가하고 삭제할 수 없습니다. Google Cloud CLI로 일부 범위를 삭제하고 다른 범위를 추가하려면 우선 이 명령어를 실행하여 필요하지 않은 범위를 삭제한 다음에 명령어를 다시 실행하여 필요한 범위를 추가합니다.

전체 구문은 gcloud 문서를 참조하세요.

API

기존 인스턴스의 네트워크 인터페이스의 경우 별칭 IP 주소 범위를 추가하거나 삭제합니다.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/multinic/updateNetworkInterface?networkInterface=NETWORK_INTERFACE_NAME
{
  "aliasIpRanges": [
    include new and existing ranges to add them...
    exclude existing ranges to remove them...
  ],
  "fingerprint": "INTERFACE_FINGERPRINT"
}

자리표시자를 유효한 값으로 바꿉니다.

  • PROJECT_ID는 수정할 인스턴스가 포함된 프로젝트의 ID입니다.
  • NETWORK_INTERFACE_NAME은 수정할 인스턴스의 네트워크 인터페이스의 이름입니다.
  • INTERFACE_FINGERPRINT는 인스턴스를 설명할 때 제공되는 기존 네트워크 인터페이스의 지문 ID입니다.

자세한 내용은 instance.updateNetworkInterface 메서드를 참조하세요.

문제 해결

별칭 IP로 VM 인스턴스를 만들 수 없음

  1. 네트워크가 VPC 네트워크인지 확인합니다. 이전 네트워크에서는 별칭 IP가 지원되지 않습니다.

    gcloud compute networks list --filter="name=NETWORK_NAME"
    

    네트워크 MODE가 'auto' 또는 'custom'이어야 합니다.

  2. 서브넷 범위 이름이 지정되어 있다면 다음 내용을 확인합니다.

    gcloud compute networks subnets describe SUBNET_NAME --region=REGION
    
    • 서브넷에 해당 이름으로 된 보조 범위가 있습니다.
    • 요청한 별칭 IP 범위가 이 보조 범위 내에 있거나, 넷마스크를 사용할 경우 기본 범위보다 더 작습니다.
  3. 서브넷 범위 이름이 지정되지 않은 경우, 요청한 별칭 IP 범위가 기본 서브넷 범위 내에 있거나, 넷마스크를 사용할 경우 기본 범위보다 더 작은지 확인합니다.

별칭 IP에 연결할 수 없음

  1. 방화벽 규칙을 확인합니다.

    1. 모든 방화벽 규칙을 나열합니다.

      gcloud compute firewall-rules list --format=json
      
    2. 별칭 IP를 오가는 트래픽이 허용되는지 확인합니다.

    3. 필요하다면 별칭 IP의 핑을 허용하는 방화벽 규칙을 추가합니다.

      gcloud compute firewall-rules create FIREWALL_NAME1 \
        --network NETWORK_NAME --priority 0 --source-ranges ALIAS_IP \
        --allow icmp
      
      gcloud compute firewall-rules create FIREWALL_NAME2 \
        --network NETWORK_NAME --priority 0 --direction out \
        --destination-ranges ALIAS_IP --allow icmp
      
  2. VM이 해당 IP 별칭 범위를 로컬로 인식하는지 확인합니다. Debian과 같은 Linux 배포판의 경우 일반적으로 다음과 같이 확인할 수 있습니다.

    1. 인스턴스에 연결하고 다음 명령어를 실행합니다.

      ip route show table local
      

      출력에 다음 내용이 포함됩니다.

      local ALIAS_IP_RANGE dev eth0  proto 66  scope host
      
    2. /etc/default/instance_configs.cfg에서 ip_aliases = true인지 확인합니다. 이를 변경해야 하는 경우 게스트 에이전트도 다시 시작해야 합니다.

      systemctl restart google-guest-agent
      
    3. 로컬 경로가 존재하지 않는 경우, 다음 명령어를 사용하여 구성합니다.

      ip route add to local ALIAS_IP_RANGE dev eth0 proto 66
      

자동 시작 서비스가 별칭 IP 주소에 바인딩되지 않음

지원되는 Linux 배포판에서 별칭 IP 주소는 사전 설치된 게스트 에이전트에 의해 로컬 주소로 자동 설정됩니다. OS 수준 구성이 필요하지 않으므로 설정이 간소화됩니다.

하지만 이는 게스트 에이전트가 실행되기 전에 OS가 별칭 IP 주소를 로컬 주소로 인식하지 못함을 의미합니다. VM에 자동 시작 서비스가 있고 게스트 에이전트보다 먼저 시작되는 경우 별칭 IP 주소에 바인딩할 수 없습니다.

예를 들어 Apache HTTP 서버는 다음 오류와 함께 종료될 수 있습니다.

could not bind to address ALIAS_IP:80

이 문제를 해결하려면 게스트 에이전트 이후에 시작되도록 서비스를 구성합니다. systemctl을 사용하는 배포판의 경우 다음 단계를 따르세요.

  1. 권한이 있는 사용자로서 다음 명령어를 실행하여 올바르게 작동하지 않는 서비스에 대한 삽입 스니펫을 추가합니다. 예를 들어 Debian의 Apache HTTP 서버는 apache2입니다.

    systemctl edit YOUR_SERVICE
    
  2. 텍스트 편집기에서 다음 줄을 추가합니다. Lines below this comment will be discarded라는 줄 위에 줄을 추가해야 합니다.

    [Unit]
    After=google-guest-agent.service
    

내 보조 IP 범위가 나열되지 않음

보조 IP 범위는 일반 서브넷으로 나열되지 않습니다. 서브넷 보조 IP 범위가 생성되었음을 표시하려면 gcloud compute networks subnets describe 명령어를 사용합니다.

  1. 서브넷을 만듭니다.

    gcloud compute networks subnets create my-subnet \
        --region us-central1 \
        --network my-network \
        --range 10.9.0.0/16 \
        --secondary-range secondaryrange1=172.16.0.0/12
    
    Created [https://www.googleapis.com/compute/v1/projects/google.com:my-project/regions/us-central1/subnetworks/my-subnet].
    NAME       REGION       NETWORK     RANGE
    my-subnet  us-central1  my-network  10.9.0.0/16
    
  2. 서브넷을 나열합니다.

    gcloud compute networks subnets list
    
    NAME       REGION       NETWORK     RANGE
    my-subnet  us-central1  my-network  10.9.0.0/16
    
  3. 서브넷의 세부정보를 가져와서 보조 범위를 확인합니다.

    gcloud compute networks subnets describe my-subnet --region us-central1
    
    ...
    ipCidrRange: 10.9.0.0/16
    ...
    secondaryIpRanges:
    - ipCidrRange: 172.16.0.0/12
      rangeName: secondaryrange1
    ...
    

지정한 서브넷 보조 범위가 존재하지 않음

VM을 만들 때 보조 범위가 존재하지 않는다는 오류가 발생할 경우 다음을 확인하세요.

  • 서브넷에 지정된 이름의 보조 범위가 있는지 여부
  • 보조 범위가 있는 서브넷 내에 VM을 만들고 있는지 여부

다음 명령어를 실행하여 이 오류를 확인할 수 있습니다.

  1. 보조 범위로 서브넷을 만듭니다.

    gcloud compute networks subnets create my-subnet \
        --region us-central1 \
        --network my-network \
        --range 10.9.0.0/16 \
        --secondary-range secondaryrange1=172.16.0.0/12
    
    Created [https://www.googleapis.com/compute/v1/projects/google.com:my-project/regions/us-central1/subnetworks/my-subnet].
    NAME       REGION       NETWORK     RANGE
    my-subnet  us-central1  my-network  10.9.0.0/16
    
  2. 새로 만든 서브넷이 아니라 기본 네트워크 등의 다른 네트워크에 인스턴스를 만듭니다.

    gcloud compute instances create instance-1 \
        --zone us-central1-a \
        --network default
    
    Created [https://www.googleapis.com/compute/v1/projects/google.com:my-project/zones/us-central1-a/instances/instance-1].
    NAME        ZONE           MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP    STATUS
    instance-1  us-central1-a  n1-standard-1               10.128.0.2     47.82.96.9  RUNNING
    
  3. 1단계에서 만든 서브넷에서 별칭 IP 범위를 할당해봅니다. 보조 범위가 인스턴스와 다른 서브넷에 있기 때문에 이 명령어는 실패합니다.

    gcloud compute instances network-interfaces update instance-1 \
        --zone us-central1-a \
        --aliases secondaryrange1:172.16.0.10/32
    
    ERROR: (gcloud.compute.instances.network-interfaces.update) HTTPError 400: Invalid value for field 'resource.aliasIpRanges[0].subnetworkRangeName': 'secondaryrange'. The specified subnetwork secondary range does not exist.
    
  4. 다른 인스턴스를 만듭니다. 이 인스턴스는 1단계에서 만든 서브넷에 있는 인터페이스를 가집니다.

    gcloud compute instances create instance-2 \
        --zone us-central1-a \
        --network-interface subnet=my-subnet
    
    Created [https://www.googleapis.com/compute/v1/projects/google.com:my-project/zones/us-central1-a/instances/instance-2].
    NAME        ZONE           MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP    STATUS
    instance-2  us-central1-a  n1-standard-1               10.9.0.2     38.74.204.89  RUNNING
    
  5. 이 인스턴스에 별칭 IP를 추가합니다. 이번에는 인터페이스와 보조 범위가 동일한 서브넷에 있으므로 명령어가 성공적으로 실행됩니다.

    gcloud compute instances network-interfaces update instance-2 \
        --zone us-central1-a \
        --aliases secondaryrange1:172.16.0.10/32
    
    Updating network interface [nic0] of instance [instance-2]...done.
    

보조 IP 범위 추가와 삭제를 동일한 요청으로 수행할 수 없음

서브네트워크 보조 IP 범위 추가 및 삭제를 동일한 명령어로 수행하는 것은 현재 지원되지 않습니다. 보조 범위를 추가하고 삭제하는 gcloud 명령어는 수정되지 않은 기존 범위를 보존합니다.

범위를 추가하고 삭제하려면 두 명령어를 따로 실행하세요.

gcloud compute networks subnets update SUBNET_NAME \
    --add-secondary-ranges RANGE_NAME_1=RANGE_CIDR_1,RANGE_NAME_2=RANGE_CIDR_2,...
gcloud compute networks subnets update  SUBNET_NAME \
    --remove-secondary-ranges RANGE_NAME_1,RANGE_NAME_2,...

이 명령어에 대한 자세한 내용을 보려면 gcloud compute networks subnets update --help를 사용하세요.

별칭 IP 범위를 동시에 추가하고 삭제할 수 없음

동일한 요청으로 VM 별칭 IP 범위를 추가하고 삭제하는 것은 현재 지원되지 않습니다.

별칭 IP 범위를 업데이트하는 gcloud 명령어는 기존 범위를 보존하지 않으므로 특정 범위를 생략할 경우 그 범위를 삭제하는 요청으로 간주됩니다.

예를 들어 현재 VM에 별칭 범위 10.9.27.0/24가 있는데 새로 요청된 범위가 /24인 경우, /24를 요청하는 명령어를 실행하면 10.9.27.0/24를 삭제하고 /24를 추가하라는 뜻으로 해석되므로 명령어가 거부됩니다. 새 범위를 추가하려면 먼저 기존 범위가 명시적으로 삭제되어야 합니다.

예를 들면 다음과 같습니다.

  1. 별칭 IP 범위를 만듭니다.

    gcloud compute instances create vm --network-interface "subnet=s1,aliases=10.9.27.0/24"
    
  2. 기존 범위를 지정하지 않고 /24를 추가해봅니다. 오류가 발생합니다.

    gcloud compute instances network-interfaces update vm --aliases "/24"
    ERROR: (gcloud.compute.instances.network-interfaces.update) HTTPError 400: Invalid value for field 'resource.aliasIpRanges': ''. Cannot simultaneously add and remove alias IP ranges.
    
  3. VM이 별칭 IP 범위를 갖지 않도록 업데이트합니다.

    gcloud compute instances network-interfaces update vm --aliases ""
    Updating network interface [nic0] of instance [vm]...done.
    
  4. 새 별칭 IP 범위를 추가합니다.

    gcloud compute instances network-interfaces update vm --aliases "/24"
    Updating network interface [nic0] of instance [vm]...done.
    

이 명령어에 대한 자세한 내용을 보려면 gcloud compute instances network-interfaces update --help를 사용하세요.

방화벽 규칙 소스 태그 및 소스 서비스 계정

방화벽 소스 서비스 계정과 소스 태그는 일치하는 인스턴스의 기본 네트워크 IP로만 확장되고 일치하는 인스턴스의 별칭 IP에는 적용되지 않습니다. 따라서 소스 태그에 기반을 둔 방화벽 규칙은 인스턴스 별칭 IP 주소의 트래픽에 영향을 주지 않습니다. 별칭 IP 주소를 소스 또는 대상 범위로 방화벽 규칙에 추가할 수 있습니다.

여러 인터페이스와 별칭 IP 범위가 있는 VM과 관련한 문제

다중 인터페이스 문제 해결을 참조하세요.

Google Cloud 이미지에서 IP 별칭을 사용 설정하면 자체 관리형 Kubernetes 클러스터에서 cbr0 브리지가 중지됨

Google에서 제공하는 이미지에서 Google 게스트 에이전트는 별칭 IP 주소 범위의 로컬 경로를 만듭니다. 자체 관리형 Kubernetes 클러스터의 경우 별칭 IP 범위의 로컬 경로를 만들지 않도록 Google 게스트 에이전트를 구성해야 합니다. GKE는 노드 이미지에서 별칭 IP 범위에 대한 로컬 경로 생성을 사용 중지하므로 GKE 클러스터에는 이 단계가 필요하지 않습니다.

증상

  • 게스트 에이전트가 만든 로컬 경로가 cbr0 인터페이스에서 별칭 IP 범위를 삭제하면 Kubernetes Pod는 네트워크 액세스 권한을 상실합니다.

  • Linux 브리지 기기(tcpdump -ni cbr arp)의 패킷 캡처는 인터페이스가 작동 중이지만 cbr0 인터페이스에서 ARP 응답이 없는 것을 보여줍니다.

  • 로컬 경로 테이블(ip route show table local)을 검사하면 별칭 IP 주소 범위가 컨테이너 브리지 인터페이스(cbr0) 대신 기본 네트워크 인터페이스(예: eth0 또는 ens4)에 할당된 것으로 나타납니다.

해결

  1. 게스트 환경에 설치된 패키지에 나열된 적절한 명령어를 실행하여 노드 VM이 Google 게스트 에이전트 또는 이전 Compute Engine 패키지를 실행 중인지 확인합니다.

  2. 노드 VM이 Google 게스트 에이전트를 실행하지 않는 경우 게스트 에이전트를 설치하거나 Google에서 제공한 최신 이미지를 사용합니다.

  3. 별칭 IP 범위 및 전달 규칙의 로컬 경로 만들기를 건너뛰도록 Google 게스트 에이전트를 구성합니다.

    1. /etc/default/instance_configs.cfg을 수정하여 [NetworkInterfaces] 섹션에서 ip_forwarding=false을 설정합니다. instance_configs.cfg 파일에 아직 없는 경우 [NetworkInterfaces] 섹션을 만들 수 있습니다.

    2. 다음 작업 중 하나를 수행합니다.

      • 노드 VM을 다시 시작합니다.

      • google-guest-agent.service 서비스를 다시 시작하고 로컬 경로 테이블을 수정합니다.

        google-guest-agent.service 서비스를 다시 시작하려면 sudo systemctl restart google-guest-agent.service를 실행합니다. 그런 다음 로컬 경로 테이블을 수정하여 별칭 IP 주소 범위의 항목을 삭제합니다. 예를 들면 다음과 같습니다.

        sudo ip route del local ALIAS_IP_RANGE dev DEVICE_IDENTIFIER
        

        다음을 바꿉니다.

        • ALIAS_IP_RANGE: 별칭 IP 주소 범위입니다.
        • DEVICE_IDENTIFIER: 네트워크 인터페이스의 식별자입니다. 예를 들면 ens4 또는 eth0입니다.

    자세한 내용은 Google 게스트 에이전트 문서의 구성 섹션을 참조하세요.

다음 단계