여러 네트워크 인터페이스가 있는 VM 문제 해결

이 페이지에서는 여러 네트워크 인터페이스가 있는 VM을 만들고 사용할 때 발생할 수 있는 일반적인 문제의 문제 해결 단계를 제공합니다.

인터페이스가 여러 개 있는 VM을 만들 수 없음

다음 오류 메시지 중 하나가 표시될 수 있습니다.

  • Invalid value for field 'resource': ''. Too many network interfaces. The maximum number of network interfaces allowed for this machine type is.

    이 오류 메시지가 표시될 경우, 인스턴스 머신 유형에서 지원하는 최대 인터페이스보다 더 많은 인터페이스를 만들려고 시도한 것입니다. 인터페이스 최대 개수 표를 참조하세요.

  • Networks must be distinct for NICs attached to a VM.

    이 메시지가 표시될 경우, 동일한 네트워크에 여러 개의 인터페이스를 만들려고 시도한 것입니다. 각 네트워크 인터페이스는 서로 다른 VPC 네트워크에 연결되어야 합니다.

  • Subnetwork CIDR ranges must be non-overlapping for NICs attached to a VM.

    이 메시지가 표시될 경우, VM의 인터페이스와 연결된 여러 CIDR 범위가 겹치는 것입니다. 이러한 CIDR 범위에는 VM 인터페이스와 연결된 서브넷의 모든 기본 범위와 별칭 IP 범위에 사용된 보조 범위가 포함됩니다. 각 인터페이스는 다른 VPC 네트워크에 있는 서브넷에 연결되며, 이 서브넷이 다른 인터페이스의 서브넷과 겹치면 안 됩니다. 예를 들어 REGION_A 리전에 인스턴스를 만들려는 경우에는 다음 명령어나 Google Cloud 콘솔을 사용하여 서브넷 기본 CIDR 범위를 확인할 수 있습니다.

    gcloud compute networks subnets list --regions REGION_A
    NAME                REGION      NETWORK          RANGE
    default             REGION_A  default          10.138.0.0/20
    overlapping-subnet  REGION_A  test-network     10.138.8.0/24
    

    보조 서브넷 CIDR 범위를 확인하려면 다음 명령어 또는 Google Cloud 콘솔을 사용합니다.

    gcloud compute networks subnets describe overlapping-subnet --region REGION_A
    
    ...
    ipCidrRange: 10.128.8.0/24
    ...
    secondaryIpRanges:
    - ipCidrRange: 10.138.8.0/24
      rangeName: conflicting-range
    
  • Multiple network interfaces are not supported on legacy networks.

    이 메시지가 표시될 경우, 이전 네트워크에 인스턴스를 만들려고 시도한 것입니다. 이전 네트워크에서는 인터페이스가 여러 개인 인스턴스가 지원되지 않습니다. 다음 방법 중 하나를 사용하여 네트워크가 기존 네트워크인지 확인할 수 있습니다.

    • Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동하여 모드 열을 선택합니다.
    • gcloud compute networks list 명령어를 실행하고 SUBNET_MODE 필드를 확인합니다.
  • Required 'compute.instances.create' permission for 'projects/PROJECT_ID/zones/ZONE/instances/test-inst'

    이 메시지가 표시되면 로그인한 계정에 인스턴스를 만드는 데 필요한 IAM 권한이 부여되지 않은 것입니다. 인스턴스 생성에 필요한 역할에 관한 자세한 내용은 다중 네트워크 인터페이스가 포함된 인스턴스, 권한, IAM을 참고하세요. 프로젝트와 연결된 IAM 정책이 OWNER, EDITOR, compute.instanceAdmin.v1 중 어느 역할을 부여하는지 확인할 수 있습니다. 공유 VPC에 인스턴스를 만들려면 compute.networkUser 역할이 추가로 필요합니다. 다음 예시에서는 email2@gmail.com 계정에 인스턴스를 만드는 데 필요한 IAM 권한이 부여되지 않았습니다. 자세한 내용은 리소스에 대한 액세스 권한 부여, 변경, 취소 IAM 가이드를 참고하세요.

    gcloud projects get-iam-policy PROJECT_ID
    bindings:
    - members:
      - user:email1@gmail.com
        role: roles/owner
    - members:
      - serviceAccount:our-project-123@appspot.gserviceaccount.com
      - serviceAccount:123456789012-compute@developer.gserviceaccount.com
        role: roles/editor
    - members:
      - user:email2@gmail.com
        role: roles/viewer
    etag: BwUjMhXbSPU=
    version: 1
    

    프로젝트 소유자나 편집자에게 OWNER, EDITOR, compute.instanceAdmin.v1 중 한 가지 역할을 부여해 달라고 요청할 수 있습니다. 인터페이스를 공유 VPC에 속한 서브넷과 연결하는 경우 compute.networkUser 역할도 필요할 것입니다.

    gcloud projects set-iam_policy --member user:email2@gmail.com --role roles/editor
    

보조 인터페이스의 내부 IP 주소에 연결할 수 없음

  • 방화벽 규칙에서 VM 보조 인터페이스에 대한 연결이 허용되는지 확인합니다. Google Cloud 콘솔에서 해당 VPC 네트워크를 클릭하거나 다음 gcloud 명령어를 사용하여 보조 인터페이스에 연결된 네트워크의 방화벽 규칙을 확인하면 이를 알 수 있습니다.

    gcloud compute firewall-rules list --filter='network:NETWORK_NAME'
    
  • 인터넷 주소를 통해 보조 인터페이스에 연결하려고 하는지, 아니면 보조 인터페이스의 네트워크 외부에서 연결하려고 하는지 확인합니다. 해당 네트워크 내부에서만 인터페이스의 내부 IP에 연결할 수 있습니다. 네트워크 외부에서 인터페이스에 연결해야 한다면 보조 인터페이스에 외부 IP 주소를 할당해도 됩니다.

  • 보조 인터페이스가 연결된 서브넷 외부에서 보조 인터페이스의 내부 IP에 연결하려고 하는지, 동일한 네트워크의 다른 서브넷에서 연결하려고 하는지, 아니면 피어링된 네트워크에서 연결하려고 하는지 확인합니다. 인스턴스당 여러 개의 네트워크 인터페이스는 인터페이스가 여러 개인 VM 인스턴스와 VPC 피어링 간의 상호작용에 대해 설명합니다. 인터페이스의 서브넷 외부에서 보조 인터페이스에 연결하려면 VM에 경로를 구성해야 합니다. DHCP가 VM에 기본 경로를 프로그래밍하는 방법에 대한 자세한 내용은 다중 네트워크 인터페이스의 DHCP 동작을 참조하세요.

  • IPv6 주소에 액세스하려고 하는 경우 보조 인터페이스의 IPv6 주소에 연결할 수 없음도 참조하세요.

외부 IP 주소를 사용하여 보조 인터페이스에 연결할 수 없음

DHCP 서버는 VM의 기본 네트워크 인터페이스에서만 기본 경로를 프로그래밍합니다. 외부 IP를 사용하여 보조 인터페이스에 연결하는 방법은 두 가지가 있습니다. 네트워크 외부에서만 보조 네트워크 인터페이스에 연결해야 한다면 해당 네트워크 인터페이스에 기본 경로를 설정할 수 있습니다. 그렇지 않으면 추가 인터페이스를 위한 라우팅 구성 튜토리얼에 설명된 접근 방식을 사용하여 VM의 소스 기반 정책 라우팅을 사용해서 개별 라우팅 테이블을 구성할 수 있습니다.

IPv6 주소에 액세스하려고 하는 경우 보조 인터페이스의 IPv6 주소에 연결할 수 없음도 참조하세요.

보조 인터페이스의 IPv6 주소에 연결할 수 없음

IPv6 주소에 액세스하려고 하는 경우 VM에 google-guest-agent 버전 20220603.00 이상이 설치되어 있는지 확인합니다. google-guest-agent 버전 관리에 대한 자세한 내용은 게스트 환경을 참조하세요.

이전 버전의 google-guest-agent가 있으면 보조 인터페이스에서 IPv6 서브넷 경로를 수신하지 않습니다. 경로가 올바르게 구성되도록 게스트 에이전트를 업데이트하는 것이 좋습니다.

하지만 이 문제를 해결하려면 대신 시작 스크립트를 만들어 보조 인터페이스마다 다음과 같이 구성을 변경하면 됩니다.

sudo sysctl -w net.ipv6.conf.INTERFACE_NAME.accept_ra_rt_info_max_plen=128

INTERFACE_NAME을 인터페이스 이름으로 바꿉니다(예: eth1 또는 ens5).

/32 이외의 넷마스크를 사용할 때 연결 문제가 있음

기본적으로, 인스턴스 메타데이터 서버는 기본 게이트웨이에 대한 ARP 요청에만 응답합니다.

/32 이외의 넷마스크로 인터페이스를 구성하려면 플래그 --guest-os-features MULTI_IP_SUBNET을 사용하여 이미지를 만들고 이를 통해 인스턴스를 만들어야 합니다. 예를 들어 debian-9 기반 이미지를 사용하는 경우 다음 명령어를 사용하여 이미지를 만들 수 있습니다.

gcloud compute images create debian-9-multi-ip-subnet \
     --source-disk debian-9-disk \
     --source-disk-zone ZONE_A \
     --guest-os-features MULTI_IP_SUBNET

이미지에 구성된 게스트 기능을 보려면 게스트 이미지에서 gcloud compute images describe 명령어를 실행합니다.

gcloud compute images describe debian-9-multi-ip-subnet

커스텀 이미지 만들기에 대한 자세한 내용은 커스텀 이미지 만들기, 삭제, 지원 중단을 참조하세요.

여러 네트워크 인터페이스가 포함된 VM의 내부 호스트 이름을 확인할 수 없음

DNS 쿼리는 내부 호스트 이름으로 실행될 때 인스턴스의 기본 네트워크 인터페이스(nic0)로 확인됩니다.

nic0이 DNS 쿼리를 수행하는 인스턴스의 VPC 네트워크와 다른 VPC 네트워크에 연결된 경우 DNS 쿼리가 실패합니다. 내부 DNS는 지정된 VPC 네트워크 내에서만 확인됩니다. 자세한 내용은 다중 네트워크 인터페이스에서 DNS 변환을 참조하세요.

직렬 콘솔을 사용한 문제 해결

구성과 관련한 문제를 해결할 때 VM에서 직렬 콘솔을 사용 설정하는 것이 좋은 방법이 되기도 합니다. 직렬 콘솔을 사용한 문제 해결의 단계에 따라 직렬 콘솔에 대화형 디버깅을 사용 설정할 수 있습니다.