(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【GCP】VMインスタンスの一覧&詳細を確認するコマンド

スポンサーリンク

はじめに

GoogleCloudPlatformの外部IPアドレスと内部IPアドレスの紐づけについて調べていた際に便利だったコマンドを紹介します
ちなみに結論としてはネットワークインターフェースで1:1のNATをしている模様です。

環境情報
$ gcloud --version
Google Cloud SDK 289.0.0

VMインスタンスの一覧を確認する

以下のコマンドで作成済のVMインスタンスの一覧が確認できます。
起動中のVMにはExternalIPということで外部IPアドレスが割り振られていて

$ gcloud compute instances list
NAME        ZONE           MACHINE_TYPE  PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP    STATUS
instance-2  us-central1-a  f1-micro                   10.128.0.2                  TERMINATED
instance-1  us-east1-b     f1-micro                   10.142.0.2   35.X.X.X  RUNNING

ローカル端末からでも当アドレスにはpingが打てます。アメリカにサーバあるからか応答速度は100ms超え。

$ ping 35.X.X.X
35.X.X.X に ping を送信しています 32 バイトのデータ:
35.X.X.X からの応答: バイト数 =32 時間 =203ms TTL=51
...

tracerouteの結果でも後半で一気に遅延が大きくなったので日本にサーバあるか否かはクラウドを選ぶ上で重要なポイントですね。

> tracert 35.185.70.214

214.70.185.35.bc.googleusercontent.com [35.X.X.X] へのルートをトレースしています
経由するホップ数は最大 30 です:

  1     1 ms     1 ms    <1 ms  x.home [192.168.1.1]
...
 11   224 ms   197 ms   199 ms  214.70.185.35.bc.googleusercontent.com [35.X.X.X]

VMインスタンスの詳細を確認する

一覧で確認した「インスタンス名」を引数に以下コマンドを押下すれば詳細情報が確認できます。

$ gcloud compute instances describe <INSTANCE_NAME>

以下は出力結果。

canIpForward: false
cpuPlatform: Intel Haswell
creationTimestamp: '...'
deletionProtection: false
description: ''
disks:
- autoDelete: true
  boot: true
  deviceName: instance-1
  diskSizeGb: '10'
  guestOsFeatures:
  - type: VIRTIO_SCSI_MULTIQUEUE
  index: 0
  interface: SCSI
  kind: compute#attachedDisk
  licenses:
  - https://www.googleapis.com/compute/v1/projects/debian-cloud/global/licenses/debian-9-stretch
  mode: READ_WRITE
  source: https://www.googleapis.com/compute/v1/projects/.../zones/us-east1-b/disks/instance-1
  type: PERSISTENT
displayDevice:
  enableDisplay: false
fingerprint: ...=
id: '...'
kind: compute#instance
labelFingerprint: ...=
machineType: https://www.googleapis.com/compute/v1/projects/.../zones/us-east1-b/machineTypes/f1-micro
metadata:
  fingerprint: ...=
  items:
  - key: ssh-keys
    value: ...:ssh-rsa 
...
  kind: compute#metadata
name: instance-1
networkInterfaces:
- accessConfigs:
  - kind: compute#accessConfig
    name: External NAT
    natIP: 35.X.X.X
    networkTier: PREMIUM
    type: ONE_TO_ONE_NAT
  fingerprint: ...=
  kind: compute#networkInterface
  name: nic0
  network: https://www.googleapis.com/compute/v1/projects/.../global/networks/default
  networkIP: 10.142.0.X
  subnetwork: https://www.googleapis.com/compute/v1/projects/.../regions/us-east1/subnetworks/default
reservationAffinity:
  consumeReservationType: ANY_RESERVATION
scheduling:
  automaticRestart: true
  onHostMaintenance: MIGRATE
  preemptible: false
selfLink: https://www.googleapis.com/compute/v1/projects/.../zones/us-east1-b/instances/instance-1
serviceAccounts:
- email: ...-compute@developer.gserviceaccount.com
  scopes:
  - https://www.googleapis.com/auth/devstorage.read_only
  - https://www.googleapis.com/auth/logging.write
  - https://www.googleapis.com/auth/monitoring.write
  - https://www.googleapis.com/auth/servicecontrol
  - https://www.googleapis.com/auth/service.management.readonly
  - https://www.googleapis.com/auth/trace.append
startRestricted: false
status: RUNNING
tags:
  fingerprint: ..=
zone: https://www.googleapis.com/compute/v1/projects/../zones/us-east1-b

ここでのポイントは以下の箇所。

networkInterfaces:
- accessConfigs:
  - kind: compute#accessConfig
    name: External NAT
    natIP: 35.X.X.X
    networkTier: PREMIUM
    type: ONE_TO_ONE_NAT

やはり外部IPと内部IPはNATされているんですね。

確かに仮想マシン内のipconfigでは外部IPは確認できません。

終わりに

仮想マシンからはメタ的な情報は確認できませんがgcloudコマンドではそれらが確認できて勉強になります。
仮想マシンをGoogleCloudに立てている方は興味があれば確認してみてください。