DNSSEC 構成の管理

このページでは、DNSSEC(Domain Name System Security Extensions)の有効化と無効化、DNSSEC のデプロイの検証、Cloud DNS との間でゾーンを移行する方法について説明します。

DNSSEC のコンセプトの概要については、DNSSEC の概要をご覧ください。

既存のマネージド ゾーンの DNSSEC の有効化

既存のマネージド ゾーンで DNSSEC を有効にするには、次の手順をご覧ください。

コンソール

  1. Google Cloud Console で、[Cloud DNS] ページに移動します。

    Cloud DNS に移動する

  2. ゾーンの DNSSEC 設定をクリックし、[DNSSEC] で [On] を選択します。

    DNSSEC ゾーンメニューの有効化

  3. 確認ダイアログで [Enable] をクリックします。

    DNSSEC 確認ダイアログを有効にする

gcloud

次のコマンドを実行します。

gcloud dns managed-zones update EXAMPLE_ZONE \
    --dnssec-state on

EXAMPLE_ZONE は、ゾーン ID に置き換えます。

Python

以下のコマンドを実行します。

def enable_dnssec(project_id, name, description=None):
client = dns.Client(project=project_id)
zone = client.zone(name=name)
zone.update(dnssec='on', description=description)

ゾーン作成時の DNSSEC の有効化

ゾーンを作成するときに DNSSEC を有効にするには、次の手順をご覧ください。

コンソール

  1. Google Cloud Console で、[Cloud DNS] ページに移動します。

    Cloud DNS に移動する

  2. [ゾーンを作成] をクリックします。

  3. [Reference name] フィールドに名前を入力します。

  4. [DNS 名] フィールドに名前を入力します。

  5. [DNSSEC] で [On] を選択します。

  6. 省略可: [説明] を追加します。

  7. [作成] をクリックします。

    DNSSEC 署名ゾーンを作成する

gcloud

次のコマンドを実行します。

gcloud dns managed-zones create EXAMPLE_ZONE \
    --description "Signed Zone" \
    --dns-name myzone.example.com \
    --dnssec-state on

EXAMPLE_ZONE は、ゾーン ID に置き換えます。

Python

以下のコマンドを実行します。

def create_signed_zone(project_id, name, dns_name, description):
client = dns.Client(project=project_id)
zone = client.zone(
    name,  # examplezonename
    dns_name=dns_name,  # example.com.
    description=description,
    dnssec='on')
zone.create()
return zone

DNSSEC のデプロイの確認

DNSSEC 対応ゾーンが正しくデプロイされていることを確認するには、正しい DS レコードを親ゾーンに配置していることを確認してください。次のいずれかが発生すると、DNSSEC の解決に失敗することがあります。

  • 構成が間違っている場合や、入力ミスがあった場合
  • 親ゾーンに間違った DS レコードが配置されている場合

正しい構成が配置されていることを確認し、DS レコードを親ゾーンに配置する前にクロスチェックするために、次のツールを使用します。

Verisign DNSSEC デバッガと Zonemaster サイトを使用して、レジストラを Cloud DNS ネームサーバーや DS レコードで更新する前に、DNSSEC 構成を検証できます。DNSSEC に対応して正しく構成されたドメインは example.com であり、DNSViz を使用して表示できます。

DNSSEC 署名ゾーンの推奨 TTL 設定

TTL は、DNSSEC 署名ゾーンの有効期間(秒)です。

ネームサーバーがクエリに対するレスポンスを送信した時刻を基準にした TTL 期限とは異なり、DNSSEC 署名は一定の時間で失効します。署名の有効期間よりも TTL のほうが長い場合は、DNSSEC 署名の有効期限が切れたときに、多数のクライアントが同時にレコードを要求することがあります。また、TTL が非常に短い場合は、DNSSEC 検証リゾルバに問題が生じる可能性もあります。

TTL の選択に関するほかの推奨事項については、RFC 6781 のセクション 4.4.1 の時間に関する考慮事項RFC 6781 の図 11 をご覧ください。

RFC 6781 のセクション 4.4.1 を読む際、多くの署名時間パラメータは Cloud DNS によって固定されていて、変更できないことに注意してください。現在のところ、以下の変更はできません(このドキュメントは予告なしに変更や更新が行われることがあります)。

  • 開始オフセット = 1 日
  • 有効期間 = 21 日
  • 再署名期間 = 3 日
  • 更新期間 = 18 日
  • ジッター間隔= 1/2 日(または ±6 時間)
  • 最小署名有効期間 = 更新期間 - ジッター期間 = 17.75 日= 1533600

最小署名有効期間よりも長い TTL は使用しないでください。

マネージド ゾーンの DNSSEC の無効化

DNSSEC をオフにするには、DS レコードを削除し、キャッシュでその DS レコードが期限切れになるまで待ってから、次の gcloud コマンドを使用します。

gcloud dns managed-zones update EXAMPLE_ZONE \
    --dnssec-state off

EXAMPLE_ZONE は、ゾーン ID に置き換えます。

DNSSEC、ドメイン転送、ゾーン移行

DNSSEC がドメイン レジストリで有効になっている DNSSEC 対応ゾーンについては、以降のセクションの手順を参照してください。

  • ドメインが別のレジストラに転送された場合(または所有権が移行された場合)

  • Cloud DNS と他の DNS オペレーターの間で DNS ゾーンを移行する場合

Cloud DNS がこのような移行に使用する技術的な手法は、RFC 6781 セクション 4.1.2「鍵署名鍵のロールオーバー」で説明されている KSK Double-DS ロールオーバーの一種です。

DNSSEC 転送、ドメイン転送、潜在的な影響についてのわかりやすい説明は、DNS/DNSSEC 転送とドメイン転送の互換性についてをご覧ください。

DNSSEC 署名ゾーンの Cloud DNS への移行

DNSSEC 署名ゾーンを Cloud DNS に移行する場合は、使用している KSK アルゴリズムが Cloud DNS でサポートされていることを確認してください。サポートされていない場合は、ゾーンを移行する前にドメイン登録事業者で DNSSEC を無効にし、Cloud DNS ネームサーバーを使用するようにレジストラのネームサーバー レコードを更新してください。

既存の KSK および ZSK アルゴリズムが Cloud DNS でサポートされている場合は、次の手順に沿って、DNSSEC が有効な状態で移行を実行できます。

  1. DNSSEC の Transfer 状態で新しい DNSSEC 署名ゾーンを作成しますTransfer 状態を使用すると、DNSKEY をゾーンに手動でコピーできます。

  2. ゾーンファイルをエクスポートし、新しいゾーンにインポートします。

  3. 古いゾーンのゾーンファイルの DNSKEY(KSK と ZSK の両方)を追加します。

    dig コマンドを使用して、他のネームサーバーに DNSKEY レコードを照会することもできます。

  4. レジストラに新しいゾーンの DS レコードを追加します

  5. レジストラのネームサーバー レコードを新しいゾーンの Cloud DNS ネームサーバーに更新します。

DNSSEC 転送状態の終了

DNSSEC 転送状態を終了する前に、Cloud DNS へのネームサーバー参照(NS と DS)がすべての権威レジストリ ネームサーバーに伝播されるまで待機します。また、すべての古いネームサーバー DNSSEC リソース レコードについて、TTL が期限切れになっていることを確認します(レジストリ親ゾーン NS および DS レコードだけでなく、古いゾーンの DNSKEY、NSEC/NSEC3、RRSIG も含むあります)。手動で追加した転送 DNSKEY レコードは必ず削除してください。

その後、ゾーンの DNSSEC 状態を Transfer から On に変更できるようになります。この変更を行うと、ゾーンからの自動 ZSK ローテーションが有効になります。通常、ゾーンは 1 週間後に安全に DNSSEC 転送状態を終了できます。ゾーンを 1~2 か月よりも長く DNSSEC 転送状態にしておくことはできません。

また、レジストラから古い DNS オペレーターのゾーンの DS レコードを削除する必要もあります。

Cloud DNS からの DNSSEC 署名ゾーンの移行

DNSSEC 署名ゾーンを別の DNS オペレーターに移行する前に、ゾーンとオペレーターが、使用している同じ KSK アルゴリズムをサポートしていることを確認します。サポートしていない場合は、ゾーンを移行する前にドメインのレジストラで DNSSEC を無効にし、新しいネームサーバーを使用するようにレジストラのネームサーバー レコードを更新します。

同じ KSK(可能であれば同じ ZSK)アルゴリズムがサポートされており、既存の DNSKEY を新しいゾーンにコピーする手段がある場合は、DNSSEC が有効な状態で移行を実行できます。このためには次の手順を実行します。

  1. DNSSEC 状態を On から Transfer に変更します。これにより、ZSK ローテーションが停止します。

  2. ゾーンファイル(DNSKEY を含む)をエクスポートし、新しいゾーンにインポートします。

  3. DNSKEY(KSK と ZSK の両方)のインポートが完了しない場合は、手動で追加してください。

    dig コマンドを使用して、ゾーンの Cloud DNS ネームサーバーに対し DNSKEY レコードを照会します。

    dig DNSKEY myzone.example.com. @ns-cloud-e1.googledomains.com.
    
  4. 新しいゾーンの DNSSEC 署名を有効にし、新しい KSK の DS レコードをレジストラに追加します。

    レジストラが複数の DS レコードをサポートできない場合は、ステップ 6 でこの作業を完了します。

  5. (オプション)新しいゾーンの新しい DNSKEY を Cloud DNS にインポートします。

    この目的で手順 3 のコマンドに類似した dig コマンドを使用できますが、Cloud DNS からエクスポートした DNSKEY はスキップします。

  6. 新しい DNS オペレーターを使用するには、レジストラのネームサーバー レコードを更新します。

    レジストラで DS レコードの置換だけを実行できる場合は、この時点で置換します。

他の DNS オペレーターに、DNSSEC 署名ゾーンを移行するためのプロセス(Dyn など)がある場合は、手順 1 の実行後にこの手順と並行して実行する必要があります。

他の DNS オペレーターで必要な手順をすべて完了したら、次の操作を行います。

  1. DNSSEC 状態を Off に更新するか、Cloud DNS でゾーンを削除して DNSSEC を無効にします。

  2. レジストラから Cloud DNS ゾーンの DS レコードを削除します

次のステップ

  • 特定の DNSSEC 構成に関する情報を取得するには、高度な DNSSEC の使用をご覧ください。
  • マネージド ゾーンの作成、更新、一覧表示、削除については、ゾーンの管理をご覧ください。
  • Cloud DNS の使用時に発生する可能性のある一般的な問題の解決策については、トラブルシューティングをご覧ください。
  • Cloud DNS の概要については、Cloud DNS の概要をご覧ください。