VPC 고급 개념

이 페이지에서는 Virtual Private Cloud(VPC) 네트워크에 대해 자세히 살펴봅니다. 이 페이지를 읽기 전에 VPC 네트워크를 참조하세요. 피어링된 VPC 네트워크에 대한 자세한 내용은 VPC 네트워크 피어링을 참조하세요.

하위 수준 VPC 네트워킹 세부정보

본 섹션은 VPC 네트워킹에 관한 몇 가지 상세한 세부정보를 제공합니다. 일반적인 사용 시에는 읽지 않아도 되지만 VPC 네트워킹의 작동 원리에 대한 더 상세한 정보를 확인하려면 읽어 보세요. 아래의 그림은 해당 섹션의 추가 정보를 통해 상세하게 설명합니다.

VPC 네트워크에 관한 상세한 다이어그램
VPC 네트워크에 관한 상세한 다이어그램

처리 주체와 처리 대상

시스템의 여러 부분에서 다양한 VPC 네트워킹 기능을 처리합니다. 그 중에는 문서화가 잘 되어 있는 표준 네트워킹 기능도 있고 VPC 네트워크에만 해당되는 기능도 있습니다. 사용자가 구성할 수 있는 기능도 있고 그렇지 않은 기능도 있습니다. VPC 네트워크는 Linux의 VIRTIO 네트워크 모듈을 사용하여 이더넷 카드 및 라우터 기능을 모델링하지만 ARP 조회와 같은 더 높은 수준의 네트워킹 스택은 표준 네트워킹 소프트웨어를 사용하여 처리됩니다.

ARP 조회
인스턴스 커널이 ARP 요청을 실행하고 VPC 네트워크가 ARP 응답을 실행합니다. MAC 주소와 IP 주소 사이의 매핑은 인스턴스 커널을 통해 처리됩니다.
MAC 조회 테이블, IP 조회 테이블, 활성 연결 테이블
이러한 테이블은 기준 VPC 네트워크에서 호스팅되므로 검사하거나 구성할 수 없습니다.
DNS 서버

각 인스턴스의 메타데이터 서버가 DNS 서버 역할을 합니다. 이는 모든 VPC 네트워크 IP 주소에 대한 DNS 항목을 로컬 VPC 네트워크에 저장하고 Google의 공용 DNS 서버에 VPC 네트워크 외부 항목을 호출합니다. 사용자는 이 DNS 서버를 구성할 수 없습니다. 각 인스턴스의 DHCP 클라이언트는 인스턴스의 /etc/resolv.conf 파일을 관리하도록 구성됩니다.

DHCP 정책을 수정하여 사용자의 검색 도메인이나 네임서버를 인스턴스의 /etc/resolv.conf에 추가할 수 있습니다. 많은 Linux 배포판에서 /etc/dhcp/dhclient.conf를 통해 이러한 수정이 지속되도록 허용합니다. 자세한 내용은 내부 DNS 문서를 참조하세요.

VPC 네트워크와 외부 사이의 패킷 처리

VPC 네트워크로 들어오거나 VPC 네트워크에서 나가는 패킷은 방화벽 규칙, 외부 IP 조회 테이블, 활성 연결 테이블과 패킷을 대조하는 네트워크 코드를 통해 처리됩니다. 또한 VPC 네트워크는 VPC 네트워크를 드나드는 패킷에 대해 NAT를 수행하기도 합니다.

인스턴스를 통해 수신되는 패킷

이러한 패킷은 수신된 후 인스턴스 커널을 통해 일반적인 방식으로 스트림으로 전환됩니다.

인스턴스를 통해 전송되는 패킷

패킷은 인스턴스 커널을 통해 일반적인 방식으로 전송됩니다. 인터페이스 및 네트워크 기능은 VIRTIO 네트워크 모듈을 사용하여 모델링됩니다.

연결의 구체적인 단계

여기서는 인스턴스가 VPC 네트워크 호출을 실행할 때 어떤 일이 일어나는지 더 자세히 설명합니다.

인스턴스가 호출을 수행할 경우:

  1. 대상 주소가 인스턴스 이름이나 www.google.com과 같은 URL인 경우 인스턴스는 그 메타데이터 서버의 DNS 서비스를 호출하여 일치하는 IP 주소를 확인합니다. 인스턴스가 다른 DNS 서비스를 참조하도록 구성할 수 있지만 이렇게 하면 인스턴스 이름을 확인할 수 없습니다.
  2. 대상 IP 주소는 모든 인스턴스가 알고 있는 서브넷의 IP 주소 범위와 대조됩니다.

    1. IP 주소가 현재 VPC 네트워크 또는 VPC 네트워크 피어링을 사용하여 피어링하는 VPC 네트워크에 없는 경우:

      1. 인스턴스가 패킷의 최종 대상으로 설정된 서브넷의 게이트웨이 MAC 주소로 패킷을 전송합니다. 게이트웨이의 MAC 주소를 확인하기 위해 인스턴스가 ARP 요청을 수행해야 할 수도 있습니다.

      2. VPC 네트워크가 IP 헤더를 다시 써서 인스턴스의 외부 IP 주소를 소스로 선언합니다. 인스턴스가 외부 IP 주소를 갖고 있지 않은 경우 호출이 허용되지 않고 VPC 네트워크가 발신자에게 알리지 않고 패킷을 삭제합니다.

      3. VPC 네트워크가 발신 패킷을 기록하고 소스와 대상을 활성 연결 테이블에 추가합니다.

      4. VPC 네트워크가 패킷을 그 대상으로 전송합니다.

      5. 대상이 패킷을 받은 후, 응답하기로 결정한 경우 응답합니다.

      6. VPC 네트워크가 이 응답을 수신하고 활성 연결 테이블을 참조하여 활성 연결임을 확인한 후 허용합니다. VPC 네트워크가 네트워크/외부 IP 조회 테이블을 참조하여 인스턴스의 외부 IP 주소를 일치하는 네트워크 주소로 대체하고 패킷을 소스 인스턴스로 전송합니다.

      7. 인스턴스가 패킷을 수신합니다.

    2. 대상 IP 주소가 VPC 네트워크 내부 또는 VPC 네트워크 피어링을 사용하여 피어링된 VPC 네트워크에 있는 경우:

      1. 인스턴스가 서브넷의 게이트웨이 MAC 주소로 패킷을 전송하도록 마스크 255.255.255.255를 사용한 IP로 구성됩니다. 게이트웨이의 MAC 주소를 확인하기 위해 인스턴스가 우선 ARP 요청을 수행해야 할 수도 있습니다.

      2. Google Cloud는 현재 또는 피어링된 VPC 네트워크 내의 대상 IP 주소로 패킷을 전달합니다.

      3. 대상 인스턴스가 패킷을 수신합니다. 대상 인스턴스가 수신 방화벽을 점검하여 이 패킷이 허용되는지 판단합니다. 허용되지 않는 경우 패킷이 자동으로 삭제됩니다. 허용되는 경우 인스턴스가 패킷을 처리합니다.

외부 인스턴스나 컴퓨터가 인스턴스를 호출할 경우:

  1. 외부의 호출자가 VPC 네트워크가 소유하는 인스턴스의 외부 IP 주소로 패킷을 전송합니다.

  2. VPC 네트워크가 이 패킷을 활성 연결 테이블과 비교하여 기존 연결인지 확인합니다.

    1. 기존 연결이 아닌 경우 VPC 네트워크는 이 연결을 허용하는 방화벽 규칙을 찾습니다.
    2. 방화벽 규칙이 없는 경우 VPC 네트워크는 발신자에게 알리지 않고 이 패킷을 삭제합니다.
  3. 기존 연결 또는 유효한 방화벽 규칙이 존재하는 경우 VPC 네트워크가 조회 테이블을 검토하여 외부 IP를 패킷에 있는 해당 내부 IP로 대체하고, 수신 패킷을 활성 연결 테이블에 기록하고, 패킷을 대상 인스턴스로 전송합니다.

  4. 패킷을 네트워크 범위 외부로 전송할 때는 IP 주소가 VPC 네트워크 IP 범위 외부에 있을 경우에 설명된 대로 인스턴스가 패킷을 수신하고 응답합니다.

  5. VPC 네트워크가 응답을 수신하고 활성 연결 테이블에서 일치하는 수신 요청을 찾아서 패킷을 허용합니다. 인스턴스의 내부 IP를 조회 테이블의 해당 외부 IP로 교체하여 소스 IP 주소를 수정한 후에 전송합니다.

VPC 네트워크 처리량 측정

자세한 내용은 네트워크 처리량 계산을 참조하세요.

다음 단계