このガイドに沿って Internal DNS を使い始めます。
-
Gateway resolver ポリシー と Internal DNS にアクセスできる Enterprise アカウントがあることを確認します。
-
Gateway resolver への接続方法 の違いを確認します。
-
認証に API トークンを使う場合は、次の権限があることを確認します。
API トークンの設定
Permissions
- Account - DNS Views - Edit
- Zone - DNS - Edit
- Account - Account Settings - Edit
- Zone - DNS Settings - Edit
- Zone - Zone - Edit
Account Resources
- Include - (Your account)
Zone Resources
-
Include - Specific zones
Internal DNS 用のトークンを作成するときは、「All zones」ではなく、特定の内部ゾーンにスコープすることを推奨します。最小権限の原則に沿った運用です。あとから新しい内部ゾーンを作った場合は、トークンのスコープにそれらを追加する必要があります。ゾーン種別の自動スコープ(例: 「all internal zones」)は、今後のリリースで対応予定です。
-
Cloudflare ダッシュボードで、Internal DNS ページを開きます。
Internal DNS を開く ↗ -
Create an internal zone を選択します。
-
内部ゾーンに名前を付けます。
内部ゾーンの設定条件
- 内部ゾーンには、パブリックゾーンで Cloudflare がサポートするのと同じ DNS レコードタイプ を含められます。
- 内部ゾーンは、同じアカウント内のパブリックゾーンと同じ名前にできます。
- 各内部ゾーンは、複数の ビュー にリンクできます。1
- 1 つのアカウント内に、同じ名前の内部ゾーンを複数置けます。ただし、同じ名前の内部ゾーンを同じビューにリンクすることはできません。
- 内部ゾーンには、トップレベルドメイン(TLD)の制限はありません。公開登録されていない TLD(例:
xyz.local)でも、TLD そのもの(local)でも、ルート(.)でも、内部ゾーンを作成できます。
1 Gateway resolver ポリシーが参照する、内部 DNS ゾーンの論理グループです。特定のクエリをどのように解決するかを定義します。
- 希望する方法で、内部ゾーンに DNS レコードを追加します。
- フォーマット済みの BIND ファイルを インポート します。
- Add a record を選択し、追加したいレコードタイプの下で Create を選びます。詳細は DNS レコードタイプ を参照してください。
- 追加したい内部ゾーンごとに、この手順を繰り返します。
- Create Zone エンドポイントを使い、内部ゾーン を作成します。アカウント ID を指定し、
typeをinternalに設定します。
内部ゾーンの設定条件
- 内部ゾーンには、パブリックゾーンで Cloudflare がサポートするのと同じ DNS レコードタイプ を含められます。
- 内部ゾーンは、同じアカウント内のパブリックゾーンと同じ名前にできます。
- 各内部ゾーンは、複数の ビュー にリンクできます。1
- 1 つのアカウント内に、同じ名前の内部ゾーンを複数置けます。ただし、同じ名前の内部ゾーンを同じビューにリンクすることはできません。
- 内部ゾーンには、トップレベルドメイン(TLD)の制限はありません。公開登録されていない TLD(例:
xyz.local)でも、TLD そのもの(local)でも、ルート(.)でも、内部ゾーンを作成できます。
1 Gateway resolver ポリシーが参照する、内部 DNS ゾーンの論理グループです。特定のクエリをどのように解決するかを定義します。
例
Required API token permissions
At least one of the following token permissions is required:Zone Zone EditZone DNS Edit
curl "https://api.cloudflare.com/client/v4/zones" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"account": {
"id": "<ACCOUNT_ID>"
},
"name": "<ZONE_NAME>",
"type": "internal"
}'- 希望する方法で、内部ゾーンに DNS レコードを追加します。
- フォーマット済みの BIND ファイルを インポート します。手順は DNS レコードの操作 を参照してください。
/batchなど、ほかの API エンドポイントで DNS レコードを管理します。詳細は レコードの一括変更 を参照してください。
- 追加したい内部ゾーンごとに、この手順を繰り返します。
内部 DNS クエリの解決 の途中で、一致する内部ゾーン内に内部レコードが見つからない場合、Cloudflare はその内部ゾーンが別の内部ゾーンを参照しているかを確認します。参照は連鎖してたどられ、最大 5 件まで続きます。
詳細は 参照ゾーン を参照してください。
-
Cloudflare ダッシュボードで、Internal DNS ページを開きます。
Internal DNS を開く ↗ -
ゾーンを選択します。
-
選択したゾーン内で Reference zone を開きます。
-
Add reference zone を選択します。
-
参照として使いたいゾーンを探し、その行で Select を選びます。
- Update DNS settings エンドポイントを使い、内部ゾーンから別の内部ゾーンへの参照を追加します。
--jsonでは、reference_zone_idパラメーターを持つinternal_dnsオブジェクトを指定します。
次の例では、内部ゾーン A(ID 8a904aeb565c42cfa207d98f6edea2f3)が内部ゾーン B(ID 8e64c6fb4b514f3faf64de81efc11e51)を参照しています。
Required API token permissions
At least one of the following token permissions is required:Zone DNS Settings WriteDNS Write
curl "https://api.cloudflare.com/client/v4/zones/8a904aeb565c42cfa207d98f6edea2f3/dns_settings" \
--request PATCH \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"internal_dns": {
"reference_zone_id": "8e64c6fb4b514f3faf64de81efc11e51"
}
}'resolver ポリシーには DNS ビュー が必要なため、内部ゾーンへリクエストをルーティングするには、少なくとも 1 つのビューが必要です。
-
Cloudflare ダッシュボードで、Internal DNS ページを開きます。
Internal DNS を開く ↗ -
Internal DNS Views を開きます。
-
Create a view を選択します。
-
ビューにわかりやすい名前を付けます。
DNS ビューの設定条件
- DNS ビューは空でもよく、内部ゾーン がリンクされていなくてもかまいません。
- DNS ビューに公開 DNS ゾーンは含められません。1
- 各内部 DNS ゾーン名は、同じ DNS ビュー内で一意である必要があります。
- 各 DNS ビュー名は、同じ Cloudflare アカウント内で一意である必要があります。
1 公開 DNS レコードを含み、公開リゾルバーから到達できる DNS ゾーンです。
- Manage zones を選択し、ビューにゾーンを追加します。Gateway resolver からこのビューへ送られるクエリの解決に使う内部ゾーンを選びます。
- Save を選択して確定します。
- Create Internal DNS View エンドポイントを使います。作成するビューごとに、そのビューにまとめる内部ゾーンをすべて列挙します。
DNS ビューの設定条件
- DNS ビューは空でもよく、内部ゾーン がリンクされていなくてもかまいません。
- DNS ビューに公開 DNS ゾーンは含められません。1
- 各内部 DNS ゾーン名は、同じ DNS ビュー内で一意である必要があります。
- 各 DNS ビュー名は、同じ Cloudflare アカウント内で一意である必要があります。
1 公開 DNS レコードを含み、公開リゾルバーから到達できる DNS ゾーンです。
resolver ポリシーの設定時に内部 DNS ビューを選ぶほか、Fallback through public DNS オプションも有効にできます。
- Cloudflare One ↗ で、Traffic policies > Firewall policies > Resolver policies を開きます。
- Add a policy を選択し、名前と説明を入力します。
- ルーティングしたいトラフィックの式を作成します。セレクター、演算子、値については、Gateway resolver ポリシー を参照してください。
- Use Internal DNS を選択します。式に一致するクエリの送信先となるビューを選びます。
- (任意)用途に合わせて Fallback through public DNS を調整します。
- Off: Gateway DNS resolver は、応答をそのままクライアントに返します。
- On: 内部ゾーンからの応答が REFUSED、NXDOMAIN、または CNAME タイプの応答である場合、Gateway DNS resolver はクエリを Cloudflare 1.1.1.1 の公開リゾルバーへ送り、公開 DNS での解決を試みます。
- Create policy を選択して確定します。
Zero Trust > Gateway > Rules 配下の API エンドポイントを使い、resolver ポリシーを設定します。セレクター、演算子、値については、Gateway を参照してください。
ルール設定オブジェクトで resolve_dns_internally を定義し、view_id と fallback オプションを指定します。fallback オプションの動作は次のとおりです。
none: Gateway DNS resolver は、応答をそのままクライアントに返します。public_dns: 内部ゾーンからの応答が REFUSED、NXDOMAIN、または CNAME タイプの応答である場合、Gateway DNS resolver はクエリを Cloudflare 1.1.1.1 の公開リゾルバーへ送り、公開 DNS での解決を試みます。
Gateway resolver ポリシーを追加すると、対象の内部ビューの Resolver policies referencing this view に表示されます。
Internal DNS のリソースは、Cloudflare Terraform provider ↗ でも管理できます。パターンは公開 DNS ゾーンと同じです。違いは、cloudflare_zone リソースで type = "internal" を設定することだけです。
日常の管理にはゾーンスコープの API トークンを使い、新しいゾーンの作成にはアカウントレベルのトークンを使います。トークンが特定ゾーンにスコープされている場合は、新しい内部ゾーンを追加したときに更新してください。動作する完全な例は、Terraform provider のドキュメント ↗ を参照してください。