VM インスタンスの PTR レコードを作成する


構成可能な PTR レコードを使用して、VM インスタンスの外部 IP アドレスに関連付けられた逆引き DNS レコードを定義し、これらのレコードに依存するアプリケーションが正常に動作できるようにします。

アプリケーションによっては、IP アドレスをドメイン名に解決するために逆引き DNS レコード(PTR レコード)が必要なものがあります。たとえば、SMTP を使用するアプリケーションには、メールの送信元のドメインを指す PTR レコードが必要です。このようなレコードを使用しないスパムフィルタは、評価の低いメールにマークを付けることで、そのメールが迷惑メールフォルダに入れられるか、まったく送信されないようにできます。

PTR レコードは、VM インスタンスのプライマリ ネットワーク インターフェースにのみ追加できます。PTR レコードは、ロードバランサ、Cloud NAT、その他の VM 以外の IP アドレスでは使用できません。

IPv6 PTR レコードは、インスタンスのプライマリ ネットワーク インターフェースが、外部 IPv6 アドレス範囲を持つデュアルスタック サブネットに接続されている場合にのみ使用できます。この場合、IPv4 と IPv6 の PTR レコードを個別に作成できます。

自動的に作成された内部 DNS の PTR 名をオーバーライドするカスタム PTR レコードを作成するには、マネージド逆引き参照ゾーンをご覧ください。

準備

  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。

    このページのサンプルをどのように使うかに応じて、タブを選択してください。

    コンソール

    Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。

    gcloud

    1. Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init
    2. デフォルトのリージョンとゾーンを設定します

    REST

    このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

      Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init

ドメインの所有権を確認

カスタム PTR レコードで VM を作成する前に、ドメイン名を所有していることを確認してください。所有権を確認することは、ドメインの所有者であることを Google に証明するための、一種のセキュリティ対策です。

ドメイン名の所有権を確認するには、次の 2 つの方法があります。

  • Google アカウントをお持ちの場合は、Search Console を使用して確認できます。
  • Google アカウントまたは Google 以外のアカウントがある場合は、VM の IP アドレスを DNS 構成に追加して確認できます。

Search Console を使用して確認する

  1. Search Console を開き、インスタンスに PTR レコードを追加するときに使用する Google アカウントを使ってログインします。複数のアカウントでドメインの所有権を確認できます。
  2. PTR ドメイン名を入力します。
  3. [続行] をクリックします。
  4. 手順に沿って操作し、[Go to Property] をクリックします。
  5. 画面下の左側のメニューにある [設定] をクリックし、[所有権の確認] をクリックします。

ドメインを所有していることを確認したら、[設定] ペインで [ユーザー] をクリックし、その他の確認済み所有者を表示します。他のドメインに PTR レコードを追加するには、現在のドメインが表示されている左側のプロパティ選択ツールをクリックします。[プロパティの追加] をクリックして、対象のドメインを追加します。

ドメイン名が即時に確認されない場合、推奨される方法を使用して確認を取得します。

VM の IP アドレスを DNS 構成に追加して確認する

  1. VM がまだ存在しない場合は、リージョン静的外部 IP アドレスを予約して、後で VM の作成時に使用します。
  2. VM の外部 IP アドレスを含む「A」レコードをドメインの DNS 構成に追加します。

PTR レコードを含む VM インスタンスを作成する

PTR レコードは、新しいインスタンスの作成時に指定できます。既存のインスタンスの PTR レコードを追加するには、PTR レコードを追加するをご覧ください。

コンソール

  1. Google Cloud コンソールで、[インスタンスの作成] ページに移動します。

    [インスタンスの作成] に移動

  2. VM の詳細を指定します。

  3. [詳細オプション] セクションを開き、次の操作を行います。

    1. [ネットワーキング] セクションを開きます。
    2. この VM で使用する 1 つ以上のネットワーク インターフェースを作成します。また、デフォルトのネットワーク インターフェースを使用することもできます。
    3. [ネットワーク インターフェース] セクションで、最初のネットワーク インターフェース(プライマリ ネットワーク インターフェース)を開きます。
    4. [パブリック DNS PTR レコード] セクションで、追加する PTR レコードの各タイプを選択します。
    5. [PTR ドメイン名] に、追加する PTR レコードのタイプごとにドメイン名を入力します。
    6. [外部 IPv4 アドレス] フィールドまたは [外部 IPv6 アドレス] フィールドで、以前に予約した IP アドレスを選択します。DNS 構成を使用して VM の IP アドレスを確認した場合は、そのアドレスを指定する必要があります。
    7. ネットワーク インターフェースの設定を確認するには、[完了] をクリックします。
  4. 新しい VM の残りのプロパティを構成します。

  5. ページの下部にある [作成] をクリックします。

VM が開始した後、VM の外部 IP アドレスに対してリバース DNS ルックアップを実行して、PTR レコードが想定どおりに機能していることを確認できます。

gcloud

  • IPv4 PTR レコードを関連付けて新しいインスタンスを作成するには、gcloud instances create コマンドを使用します。

    gcloud compute instances create INSTANCE_NAME \
        --image-family IMAGE_FAMILY \
        --image-project IMAGE_PROJECT \
        --public-ptr \
        --public-ptr-domain DOMAIN_NAME \
        --address=IP_ADDRESS
    

    次のように置き換えます。

    • INSTANCE_NAME: 新しい VM インスタンスの名前。
    • IMAGE_FAMILY: 使用可能なイメージ ファミリーのいずれか。
    • IMAGE_PROJECT: すべてのイメージとイメージ ファミリーの参照が解決される Google Cloud プロジェクト。プロジェクト名を指定しない場合は、現在のデフォルト プロジェクトが使用されます。
    • DOMAIN_NAME: このインスタンスに追加するドメイン名。
    • IP_ADDRESS: 以前に予約した IP アドレス。DNS 構成を使用して VM の IP アドレスを確認した場合は、そのアドレスを指定する必要があります。
  • 関連付けられた IPv6 PTR レコードを含む新しいインスタンスを作成するには、次の操作を行います。

    1. デュアルスタック VM を作成する
    2. IPv6 PTR レコードを追加する

REST

  • IPv4 PTR レコードを含む新しいインスタンスを作成するには、instances.insert メソッドPOST リクエストを行います。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
    {
      "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
      "name": "INSTANCE_NAME",
      "disks": [
        {
          "initializeParams": {
            "sourceImage": "projects/debian-cloud/global/images/family/debian-10"
          },
          "boot": true
        }
      ],
      "networkInterfaces": [
        {
          "network": "NETWORK",
          "accessConfigs": [
            {
              "type": "ONE_TO_ONE_NAT",
              "name": "External NAT",
              "natIP": "IP_ADDRESS",
              "publicPtrDomainName": "DOMAIN_NAME",
              "setPublicPtr": true
            }
          ]
        }
      ]
    }
    

    次のように置き換えます。

    • PROJECT_ID: オブジェクトの ID。
    • ZONE: インスタンスのゾーン。
    • MACHINE_TYPE: マシンタイプ。
    • INSTANCE_NAME: インスタンスの名前。
    • NETWORK: ネットワークの URL。
    • IP_ADDRESS: 以前に予約した IP アドレス。DNS 構成を使用して VM の IP アドレスを確認した場合は、そのアドレスを指定する必要があります。
    • DOMAIN_NAME: 追加するドメイン名。
  • IPv6 PTR レコードを含む新しいインスタンスを作成するには、次の操作を行います。

    1. デュアルスタック VM を作成する
    2. IPv6 PTR レコードを追加する

PTR レコードを追加する

PTR レコードを追加するには、VM インスタンスのプライマリ ネットワーク インターフェース(nic0)でアクセス構成を更新します。

コンソール

  1. Google Cloud コンソールで [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. 編集するインスタンスをクリックします。

  3. [編集] をクリックします。

  4. [ネットワーク インターフェース] セクションで、プライマリ ネットワーク インターフェースをクリックします。

  5. [パブリック DNS PTR レコード] セクションで、追加する PTR レコードの各タイプを選択します。

  6. [PTR ドメイン名] に、追加する PTR レコードのタイプごとにドメイン名を入力します。

  7. [完了] をクリックし、[保存] をクリックします。

gcloud

  1. VM にアクセス構成がない場合は、gcloud compute instances add-access-config コマンドを使用して追加します。

    gcloud compute instances add-access-config INSTANCE_NAME
    

    ここで、INSTANCE_NAME は実際のインスタンス名に置き換えます。

  2. gcloud compute instances update-access-config コマンドを使用して、アクセス構成を更新して PTR レコードを追加します。IPv4 と IPv6 の両方の PTR レコードを追加するには、次のコマンドを個別に使用します。

    • IPv4 の場合:

      gcloud compute instances update-access-config INSTANCE_NAME \
          --public-ptr \
          --public-ptr-domain DOMAIN_NAME
      
    • IPv6 の場合:

      gcloud compute instances update-access-config INSTANCE_NAME \
          --ipv6-public-ptr-domain=DOMAIN_NAME
      

    次のように置き換えます。

    • INSTANCE_NAME: 更新するインスタンスの名前。
    • DOMAIN_NAME: 追加するドメイン名。

REST

  1. VM にアクセス構成がない場合は、instances.addAccessConfig メソッドPOST リクエストを送信してアクセス構成を追加します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/addAccessConfig?networkInterface="nic0"
    
  2. instances.updateAccessConfig メソッドPOST リクエストを送信して、アクセス構成を更新して PTR レコードを追加します。IPv4 と IPv6 の両方の PTR レコードを追加するには、次のリクエストを個別に行います。

    • IPv4 の場合:

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/updateAccessConfig?networkInterface=nic0
      {
        "setPublicPtr": true,
        "publicPtrDomainName": "DOMAIN_NAME",
        "type": "ONE_TO_ONE_NAT"
      }
      
    • IPv6 の場合:

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/updateAccessConfig?networkInterface=nic0
      {
        "publicPtrDomainName": "DOMAIN_NAME",
        "type": "DIRECT_IPV6"
      }
      

    次のように置き換えます。

    • PROJECT_ID: プロジェクト ID。
    • ZONE: インスタンスのゾーン。
    • INSTANCE_NAME: インスタンス名。
    • DOMAIN_NAME: 追加するドメイン名。

PTR レコードを削除する

PTR レコードを削除するには、VM インスタンスのプライマリ ネットワーク インターフェース(nic0)のアクセス構成を更新します。PTR レコードを削除すると、Google Cloud はデフォルトの完全修飾ドメイン名 googleusercontent.com でリバース DNS ルックアップに応答します。

コンソール

  1. Google Cloud コンソールで [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. 編集するインスタンスをクリックします。

  3. [編集] をクリックします。

  4. [ネットワーク インターフェース] セクションで、プライマリ ネットワーク インターフェースをクリックします。

  5. [パブリック DNS PTR レコード] セクションで、削除する PTR レコードの各タイプのチェックボックスをオフにします。

  6. [完了] をクリックし、[保存] をクリックします。

gcloud

PTR レコードを削除するには、gcloud compute instances update-access-config コマンドを使用します。IPv4 と IPv6 の両方の PTR レコードを削除するには、次のコマンドを個別に使用します。

  • IPv4 の場合:

    gcloud compute instances update-access-config INSTANCE_NAME \
        --no-public-ptr
    
  • IPv6 の場合:

    gcloud compute instances update-access-config INSTANCE_NAME \
        --no-ipv6-public-ptr
    

INSTANCE_NAME は、更新するインスタンスの名前に置き換えます。

REST

PTR レコードを削除するには、POST リクエストを instances.updateAccessConfig メソッドに対して実行します。IPv4 と IPv6 の両方の PTR レコードを削除するには、次のリクエストを個別に行います。

  • IPv4 の場合:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/updateAccessConfig?networkInterface=nic0
    {
      "setPublicPtr": false,
      "type": "ONE_TO_ONE_NAT"
    }
    
  • IPv6 の場合:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/updateAccessConfig?networkInterface=nic0
    {
      "publicPtrDomainName": "",
      "type": "DIRECT_IPV6"
    }
    

次のように置き換えます。

  • PROJECT_ID: プロジェクト ID。
  • ZONE: インスタンスのゾーン。
  • INSTANCE_NAME: インスタンス名。

制限事項

  • メンテナンス イベント中のライブ マイグレーション プロセスの一環として VM が別のホストに移行されると、PTR レコード ロジックで一部のエッジケースが正しく処理されず、DNS PTR は完全修飾ドメイン名(FQDN)である googleusercontent.com に戻されます。機能を元に戻すには、PTR レコードをもう一度適用してください。

  • IPv6 PTR レコードを持つ VM を停止すると、IPv6 PTR レコードは一時的に登録解除され、VM に表示されません。このレコードは、VM を再起動すると自動的に追加されます。

次のステップ