GCP의 IP, Cloud DNS, Alias IP ranges

메모 : 아래는 (PCNE 공식 강의인)Coursera <Networking in Google Cloud Platform 전문 분야>에서 IP 주소, Cloud DNS, Alias IP ranges(별칭 IP 범위) 부분을 손필기로 정리한 것이다. 

Alias IP ranges는 처음에 이해가 안되는 말이 있어서 문서를 여러번 봤다. 근데 문서가 더 어려웠다.

이해 안되는 부분은 같이 스터디하는 선배님께 여쭈어가며 정리했다. 근데 쿠버네티스랑 연계해서 보려면 또 다시 봐야할 듯.

IP 주소

GCP의 VM에는 두개의 IP가 할당될 수 있다.

  • internal(내부) IP
  • external(외부) IP

internal IP

  • 내부적으로 DHCP를 통해 할당된다.
  • 모든 VM과, VM에 종속된 서비스는 internal IP를 얻는다.
    • 종속된 서비스 예 : GKE, App Engine
  • GCP에서 VM을 생성시, VM의 symbolic name이 내부 DNS 서비스에 등록되어서 이름을 internal IP로 변환한다.
    • DNS는 네트워크 범위를 가지므로, 동일 네트워크 안에 있는 host들의 web URL들과 VM 이름들은 번역할 수 있지만, 다른 네트워크의 있는 VM들의 host name은 번역할 수 없다.

메모 : 퀵랩에서도 종종 해본 내용이다. 동일 네트워크 안에 인스턴스 vm-a와 vm-b 가 있다고 하자. vm-a에 SSH 접속을 한 다음, vm-b에 ping을 보내고 싶으면, 그냥 간단하게 “ping -c 3 VM-b”이라고 명령어를 입력하면 된다. vm-b의 internal IP나, external IP를 입력할 필요 없이.

external IP

  • 선택사항.
  • Pool에서 서명하여 임시(ephemeral)로 만들거나, 예약된(reserved) external IP 주소에 서명하여 정적인(static) 상태로 만들 수 있다.
  • 실행중인(running) VM과 연결이 ‘안 된’  external IP를 예약하면 요금이 청구된다.

IP주소 매핑하기

external IP는 internal IP에 매핑된다

  • External IP는 VM의 OS에 알려져 있지 않다.
    • 임시(Ephemeral) external IP, 고정(static) external IP 둘 다!
  • External IP는 VPC에 의해, VM의 internal IP에 매핑된다.
    • internal IP만 반환하는 GCP의 VM 안에서 ifconfig를 실행시켜서 알 수 있다.
      • sudo /sbin/ifconfig

internal 주소에 대한 DNS 확인

internal 주소를 위한 DNS 확인
  • 각 인스턴스는 internal IP 주소로 확인할 수 있는 hostname이 있다.
    • 이 hostname은 인스턴스 이름과 동일하다. 
    • domain name 혹은 FQDN도 있다.
      • FQDN : [hostname].c.[project-id].internal
  • 인스턴스를 삭제하고 다시 만들면 internal IP가 변경될 수 있다.
  • 그러나 DNS 이름은 internal IP가 무엇이든 항상 특정 인스턴스를 가리킨다.
    • 각 인스턴스에는 해당 인스턴스의 DNS 확인자(resolver) 역할을 하는 메타 데이터 서버가 있다.
    • 메타 데이터 서버는 로컬 네트워크 리소스에 대한 모든 DNS 쿼리를 처리하고, Public Name 확인을 위하여 다른 모든 쿼리를 구글의 Public DNS 서버로 라우팅한다.
  • 대신, 네트워크 조회(LookUp)테이블을 저장한다.
    • 이 조회 테이블은 external IP와 관련 인스턴스의 internal IP를 일치시킨다.

external 주소에 대한 DNS 확인

external 주소를 위한 DNS 확인
  • External IP가 있는 인스턴스들은 프로젝트 외부의 호스트로부터의 연결을 허용할 수 있다.
    • 일반 사용자들이 external IP를 사용하여 직접 연결할 수 있다.
    • 관리자는 인스턴스를 가리키는 Public DNS record를 게시(Publish)할 수 있다.
      • Public DNS record는 자동으로 게시되지 않는다.
      • 기존 DNS 서버를 사용하여 게시할 수 있다.
  • Cloud DNS를 사용하여 GCP에서 도메인 및 서버를 호스팅할 수 있다.

Cloud DNS를 이용하여 DNS zone 호스팅하기

Cloud DNS 이용해서 DNS zone 호스팅하기

Cloud DNS는

  • 확장 가능하고, 안정적인, 신뢰할 수 있는 Domain name 시스템이다.
  • (구글과 동일한 인프라에서 실행되는)DNS 서버.
  • google.com과 같은 main name을 IP 주소로 변환한다.
  • anycast 네임서버의 구글 글로벌 네트워크를 사용하여서 전세계 중복 위치에서 DNS zone에 서비스를 제공하여 사용자의 대기시간을 줄이고, 가용성을 높인다.
    • Domain name을 찾을 수 없다면, 인터넷도 다운되므로 고가용성은 매우 중요하다.
    • GCP는 Cloud DNS에 구성된 도메인에 100% uptime SLA를 보장한다.
  • Cloud DNS를 사용하면, 콘솔, CLI, API를 이용하여 (자체 DNS서버나 소프트웨어를 관리하지 않고도)수백만개의 DNS레코드를 업데이트 할 수 있다.

Alias IP ranges 이용해서 VM의 네트워크 인터페이스에 별칭 IP 주소 할당하기

alias ip ranges 다이어그램
  • 단일 VM에서 하나의 서비스만 실행하는 경우, 인터페이스의 기본 IP 주소를 사용하여 해당 서비스에 참조할 수 있다.
  • 단일 VM에서 여러개의 서비스를 실행하는 경우, 각 서비스에 서로 다른 internal IP 주소를 할당할 수 있다.
    • GCP의 ‘Alias IP range’를 사용하면 VM의 네트워크 인터페이스에 별칭(Alias)으로 internal IP 주소 범위를 할당 가능
    • 바꿔 말하면, ‘Alias IP range’는 단일 VM에서 여러 서비스를 실행할 때, 각 서비스에 서로 다른 IP주소를 할당하고자 할 때 유용하다.
  • Alias IP ranges는 GKE 포드에서도 유용하다.
  • 모든 서브넷은, 해당 서브넷을 정의하는 internal IP 주소 범위인 primary CIDR range(기본 CIDR 범위)가 있다.
    • 각 VM 인스턴스들은 이 primary CIDR range 안에서 primary internal IP 주소를 가져온다.
  • Primary CIDR range 에서 Alias IP range를 할당할 수도 있고, 서브넷에 secondary range(보조 범위)를 추가한 후, 이 secondary range에서 Alias IP range를 할당할 수도 있다.
    • 이 서브넷의 secondary range 는 구성 도구(organizational tool)만 제공한다.
    • Alias IP ranges 가 반드시 secondary range가 필요한 것은 아니다.