33.10. 外部 DNS の使用時に DNS レコードを組織的に更新する手順

外部の DNS を使用する場合は、Identity Management はトポロジーで変更がなされても、自動的に DNS レコードが更新されることはありません。以下では、外部 DNS で管理する DNS レコードを組織的に更新する方法について説明します。こうすることで、手動による DNS 更新の必要性が低減されます。
基本的な概要については、「Identity Management での外部 DNS の更新」 を参照してください。
手順と例については、以下を参照してください。

33.10.1. Identity Management での外部 DNS の更新

DNS レコードを更新すると、古い DNS レコードまたは無効な DNS レコードが削除され、新しいレコードが追加されます。
トポロジーで変更が合った場合は、DNS レコードを更新する必要があります。たとえば、以下のような場合です。
  • レプリカをインストールまたはアンインストールした後
  • Identity Management サーバーで CA、DNS、KRA、または Active Directory の信頼をインストールした後

33.10.2. GUI: 外部 DNS レコードの更新

  1. 更新する必要のあるレコードを表示します。ipa dns-update-system-records --dry-run コマンドを使用します。
    $ ipa dns-update-system-records --dry-run
     IPA DNS records:
       _kerberos-master._tcp.example.com. 86400 IN SRV 0 100 88 ipa.example.com.
       _kerberos-master._udp.example.com. 86400 IN SRV 0 100 88 ipa.example.com.
    [... output truncated ...]
  2. 外部の DNS GUI を使用してレコードを更新します。

33.10.3. コマンドライン: nsupdate を使用した外部 DNS レコード更新

本項では、nsupdate ユーティリティを使用して外部 DNS レコードを手動で更新する方法を説明します。このセクションのコマンドは、スクリプトで使用して処理を自動化できます。

nsupdate 向けに DNS レコードのあるファイルを生成

  1. ipa dns-update-system-records --dry-run コマンドに --out オプションを付けて実行します。このオプションは、生成するファイルのパスを指定します。
    $ ipa dns-update-system-records --dry-run --out dns_records_file.nsupdate
     IPA DNS records:
       _kerberos-master._tcp.example.com. 86400 IN SRV 0 100 88 ipa.example.com.
       _kerberos-master._udp.example.com. 86400 IN SRV 0 100 88 ipa.example.com.
    [... output truncated ...]
    生成されたファイルには、nsupdate ユーティリティーで使用可能な形式の必須の DNS レコードが含まれます。
  2. 生成されるレコードは以下に依存します。
    • レコードが更新されるゾーンの自動検出
    • そのゾーンの権威サーバーの自動検出
    通常とは異なる DNS 設定を使用してる場合、またはゾーン委任がない場合は、nsupdate は適切なゾーンやサーバーを検出できないことがあります。その場合は、生成されるファイルの最初に以下のオプションを追加してください。
    • server で、nsupdate がレコードを送信する権威 DNS サーバーのサーバー名もしくはポートを指定します。
    • zone で、nsupdate がレコードを見つけるゾーンのゾーン名を指定します。
    例:
    $ cat dns_records_file.nsupdate
    zone example.com.
    server 192.0.2.1
    ; IPA DNS records
    update delete _kerberos-master._tcp.example.com. SRV
    update add _kerberos-master._tcp.example.com. 86400 IN SRV 0 100 88 ipa.example.com.
    [... output truncated ...]

ネームサーバーへの動的 DNS 更新リクエストの送信

nsupdate を使用してリクエストを送信する際には、以下のメカニズムを使用してリクエストのセキュリティーを確保してください。
Transaction Signature (TSIG) プロトコル
TSIG を使用すると、nsupdate で共有キーを利用することができます。詳細は 手順33.1「TSIG を使用した nsupdate リクエストの送信」 を参照してください。
GSS algorithm for TSIG (GSS-TSIG)
GSS-TSIG では、GSS-API インターフェイスを使用して秘密 TSIG キーを取得します。GSS-TSIG は TSIG プロトコルの拡張機能です。詳細は 手順33.2「GSS-TSIG を使用した nsupdate リクエストの送信」 を参照してください。

手順33.1 TSIG を使用した nsupdate リクエストの送信

  1. 以下の前提条件を満たしていることを確認します。
    • DNS サーバーは TSIG に設定される必要があります。以下のサーバー設定のサンプルを参照してください。BINDPowerDNS
    • DNS サーバーとそのクライアントの両方に共有キーがある必要があります。
  2. nsupdate を実行し、以下のいずれかのオプションで共有秘密を提供します。
    • -k では、TSIG 認証キーを提供します。
      $ nsupdate -k tsig_key.file dns_records_file.nsupdate
    • -y では、キーの名前と Base64 でエンコードされた共有秘密から署名を生成します。
      $ nsupdate -y algorithm:keyname:secret dns_records_file.nsupdate

手順33.2 GSS-TSIG を使用した nsupdate リクエストの送信

  1. 以下の前提条件を満たしていることを確認します。
    • お使いの DNS サーバーが GSS-TSIG 向けに設定されている必要があります。サーバー設定の例については、BINDPowerDNSWindows DNS を参照してください。

    注記

    この手順では、Kerberos V5 プロトコルが GSS-API のテクノロジーとして使用されることを前提としています。
  2. DNS 更新リクエストを送信するには、レコードの更新が可能なプリンシパルと認証を行い、nsupdate-g オプションを追加して実行し、GSS-TSIG モードを有効にします。
    $ kinit principal_allowed_to_update_records@REALM
    $ nsupdate -g dns_records_file.nsupdate

関連資料

  • nsupdate(8) man ページ
  • TSIG プロトコルについては、RFC 2845
  • GSS-TSIG アルゴリズムについては、RFC 3645