IBM Cloud Docs
カスタム・リゾルバー転送ルールの追加

カスタム・リゾルバー転送ルールの追加

UI、CLI、またはAPIを使用して、解決のためにDNSクエリを転送する場所を設定するには、転送ルールを使用します。

転送ルールは、DNS 照会を特定の DNS リゾルバーに送信するためにセットアップできる構成です。 転送ルールを設定するには、必須パラメータ2つとオプションパラメータ2つを指定する必要があります。 オプションパラメータの少なくとも1つを設定する必要があります

  • ルールタイプ :現在、選択できるのはDNSゾーンのみです。

  • 一致: DNS 照会を転送する対象となる DNS ゾーン。

  • 転送先IPアドレス(オプション) :クエリを転送するDNSリゾルバのIPアドレス。 複数のアドレスが提供された場合、カスタムリゾルバは、リゾルバが応答するまで、 順序に基づいてホストを選択する逐次ポリシーを使用してリストを通過する。

    VPCネットワークの動作とVPCネットワークの設定は、VPCに配置されているカスタムリゾルバとのトラフィックにも影響します。 例えば、特定のDNSゾーンに一致するDNSクエリに対して、外部インターネット上のDNSリゾルバへの転送ルールを作成したい場合、カスタムリゾルバの外部接続を許可するパブリックゲートウェイを作成する必要があります。 VPCネットワークの詳細については、VPCのネットワークについて を参照してください。

  • オプション)ビュー :評価結果が true の場合に、指定の DNS リゾルバに DNS クエリを転送する式で構成されます。

ルールが構成され、カスタム・リゾルバーが有効になると、DNS 照会の要求はまずカスタム・リゾルバーに送信されます。

次に、カスタム・リゾルバーは、マッチング値と比較して構成されたルールに対する照会であるかを検査します。 DNSクエリに対するルールが存在する場合、カスタムリゾルバはDNSクエリを、構成されたルールで指定されたDNSリゾルバに転送する。 DNSクエリに一致するルールが存在_しない_場合、カスタムリゾルバはDNSクエリをデフォルトの転送ルールで指定されたDNSリゾルバに転送する。

カスタム・リゾルバーは、以下の 2 つのタイプの転送ルールをサポートします。

  • DNS ゾーン・ルール。これはゾーン名に適用されます。

  • デフォルト・ルールは、照会を DNS Services の DNS リゾルバー (161.26.0.7161.26.0.8) に転送するように構成されます。カスタム・リゾルバーごとに許可されるデフォルト・ルールは 1 つのみです。これは編集できますが、削除はできません。

    デフォルト・ルールを変更すると、仮想プライベート・エンドポイント、IKS クラスター、ROKS クラスター、または定義済みのプライベート DNS ゾーンがある VPC で DNS 照会を解決する際に問題が発生する可能性があります。

DNSの表示

DNS ビューでは、DNS リクエストがサーバーブロックに転送されるためには、 true と評価される式を定義します。 この機能を使用すると、お客様は設定した表現に基づいてリクエストの転送先を変更することができます。

現在、 DNS Services はソースIP関連の表現のみをサポートしています。 ビュー式の受け入れられる構文は、共通表現言語(CEL)に準拠していなければなりません。

次の例は、ビューが定義されたカスタムリゾルバ転送ルールを示しています。

{
  "description": "forwarding rule",
  "type": "zone",
  "match": "example.com",
  "forward_to": [
    "161.26.0.7"
  ],
  "views": [
    {
      "name": "view-example",
      "description": "view example",
      "expression": "ipInRange(source.ip, '10.240.0.0/24') || ipInRange(source.ip, '10.240.1.0/24')",
      "forward_to": [
        "10.240.2.6"
      ]
    }
  ]
}

この例で設定されているビューでは、DNSクエリのソースIPが 10.240.0.0/24 または 10.240.1.0/24 に属する場合、 example.com に対するDNSクエリが 10.240.2.6 に転送されます。 それ以外の場合はすべて、問い合わせは 161.26.0.7 に転送されます。

ビューは、 views 配列で設定された順序に基づいて優先順位が付けられます。

コンソールでのカスタムリゾルバ転送ルールの追加

コンソールで転送ルールを追加するには、以下の手順に従う:

  1. ブラウザーから、IBM Cloud コンソールを開き、アカウントにログインします。
  2. Navigation Menu Menuアイコンを 選択し、 Resource list > Networking > dns-cr-instanceをクリックします。
  3. カスタムリゾルバ 」タブに移動する。
  4. カスタム・リゾルバ」テーブルで、編集するカスタム・リゾルバの名前をクリックします。
  5. カスタムリゾルバの詳細ページで、 転送ルールタブを選択する。
  6. **「ルールの追加」**をクリックします。
  7. 一致するゾーンを入力します。
  8. オプションで、ルールの説明を入力します。
  9. 転送 IP アドレスをコンマで区切って (CIDR 形式で) 入力します。 DNSビューに転送IPアドレスが設定されている場合は、これはオプションです。
  10. 必要に応じて、 [DNS ビューの追加] をクリックして、優先順位、名前、オプションの説明、転送 IP アドレス、および式を使用して DNS ビューを構成します。 カスタムリゾルバプロファイルに基づくDNSビューの数を追加します。
  11. 「作成」 をクリックします。

CLIからのカスタムリゾルバ転送ルールの追加

CLIを使用してカスタム・リゾルバ転送ルールを作成するには、以下のコマンドを実行する:

ibmcloud dns custom-resolver-forwarding-rule-create RESOLVER_ID --type TYPE --match HOSTNAME [--dns-svcs IPs] [--description DESCRIPTION] [--view VIEW1 --view VIEW2 ...] [-i, --instance INSTANCE] [--output FORMAT]

ここで、

  • RESOLVER_ID は、カスタム・リゾルバーの ID です。
  • -t, --type は、転送ルールのタイプです。 有効な値は「zone」です。
  • -d, --description は、カスタム・リゾルバー転送ルールの説明テキストです。
  • -match は一致するゾーンです。
  • --dns-svcs は、転送先のアップストリーム DNS サーバーです。
  • --view は、DNS 要求をサーバー ブロックにルーティングするための式です。 nameexpression そして dns-svcs 必須です。 description オプションです。
  • -i, --instance は、インスタンスの名前または ID です。 設定しない場合、dns instance-target INSTANCE で指定したコンテキスト・インスタンスが代わりに使用されます。
  • --output は出力フォーマットを指定します。 現在のところ、 json が唯一の対応フォーマットである。

APIによるカスタムリゾルバ転送ルールの追加

API を使用してカスタム・リゾルバー転送ルールを作成するには、以下のステップを実行します。

  1. 正しい変数を使用して API 環境をセットアップします。

  2. API コマンドで使用する以下の値を変数に格納します。

    • instance_id。これは、サービス・インスタンスの固有 ID です。
    • resolver_id。これは、カスタム・リゾルバーの固有 ID です。
    • X-Correlation-ID。これは、要求を一意的に識別するストリングです。
  3. すべての変数が開始したら、カスタム・リゾルバー転送ルールを作成します。

    {
      "description": "forwarding rule",
      "type": "zone",
      "match": "example.com",
      "forward_to": [
        "161.26.0.7"
      ],
      "views": [
        {
          "name": "view name",
          "description": "view description",
          "forward_to": [
            "161.26.0.7"
          ],
          "expression": "ipInRange(source.ip,'10.11.12.0/24')"
        }
      ]
    }