DNSSEC 構成の管理

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

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

既存の一般公開マネージド ゾーンで DNSSEC を有効にする

既存の一般公開マネージド ゾーンで DNSSEC を有効にするには、次の手順を行います。

Console

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

    Cloud DNS に移動

  2. DNSSEC を有効にするゾーン名をクリックします。

  3. [ゾーンの詳細] ページで、[編集] をクリックします。

  4. [DNS ゾーンの編集] ページで [DNSSEC] をクリックします。

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

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

ゾーンに選択した DNSSEC の状態が、[Cloud DNS] ページの [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 を有効にするには、次の手順を行います。

Console

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

    Cloud DNS に移動

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

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

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

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

  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 レコードを削除します

次のステップ