-
Notifications
You must be signed in to change notification settings - Fork 10.1k
[iDNS] Internal DNS MVP UI release #22632
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 15 commits
2184893
4ed1fe6
d41b450
fb0724b
3bb666b
2ca66fd
cb3afe2
aa561fb
3ddc1ba
6aaaf90
49b728d
4364cd0
b0fd936
cc353db
5e036fb
023b209
ba9fd22
e60d3b5
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
This comment was marked as off-topic.
Sorry, something went wrong. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -9,15 +9,12 @@ import { TabItem, Tabs, Details, Example, Render } from "~/components"; | |
|
|
||
| Follow this guide to get started with Internal DNS. | ||
|
|
||
| Although there are some steps that can be achieved on the dashboard, currently the whole process can only be completed via API. | ||
|
|
||
| ## Before you begin | ||
|
|
||
| <Render file="internal-dns-beta-note" /> | ||
|
|
||
| - Make sure you have an Enterprise account with access to [Gateway resolver policies](/cloudflare-one/policies/gateway/resolver-policies/) and [Internal DNS](/dns/internal-dns/). | ||
| - Consider the different ways in which you can [connect to Gateway resolver](/dns/internal-dns/connectivity/). | ||
| - If you are not familiar with how to use Cloudflare API, refer to [Fundamentals](/fundamentals/api/get-started/). | ||
| - If you will be using an API token for authentication, make sure you have the following permissions: | ||
|
|
||
| <Details header="API token configuration"> | ||
|
|
@@ -41,28 +38,64 @@ Although there are some steps that can be achieved on the dashboard, currently t | |
|
|
||
| ## 1. Set up your internal DNS zone | ||
|
|
||
| <Render file="internal-zone-create" params={{ | ||
| <Tabs syncKey="dashPlusAPI"> <TabItem label="Dashboard"> | ||
|
|
||
| <Render file="internal-zone-create-dash" params={{ | ||
| conditional: "get-started-detail"}} | ||
| /> | ||
|
|
||
| </TabItem> <TabItem label="API"> | ||
|
|
||
| <Render file="internal-zone-create-api" params={{ | ||
| conditional: "get-started-detail"}} | ||
| /> | ||
|
|
||
| </TabItem> </Tabs> | ||
|
|
||
| ### (Optional) Reference a zone from another zone | ||
|
|
||
| 1. Use the [Update DNS settings](/api/resources/dns/subresources/settings/subresources/zone/methods/edit/) endpoint to add a reference from an internal zone to another internal zone. In `--data`, specify the `internal_dns` object with the parameter `reference_zone_id`. For details, refer to [reference zones](/dns/internal-dns/internal-zones/reference-zones/). | ||
| <Render file="internal-reference-zone-intro" params={{ | ||
| conditional: "get-started-link"}} | ||
| /> | ||
|
|
||
| <Tabs syncKey="dashPlusAPI"> <TabItem label="Dashboard"> | ||
|
|
||
| 1. Go to **Internal DNS** and select a zone. | ||
| 2. Within the selected zone, go to **Reference zone**. | ||
| 3. Select **Add reference zone**. | ||
| 4. Find the zone you want to use as reference and choose **Select** in the respective row. | ||
|
|
||
| </TabItem> <TabItem label="API"> | ||
|
|
||
| 1. Use the [Update DNS settings](/api/resources/dns/subresources/settings/subresources/zone/methods/edit/) endpoint to add a reference from an internal zone to another internal zone. In `--json`, specify the `internal_dns` object with the parameter `reference_zone_id`. | ||
|
|
||
| <Example> | ||
| <Render file="internal-reference-zone-api"/> | ||
| </ Example> | ||
|
|
||
| </TabItem> </Tabs> | ||
|
|
||
| ## 2. Link your internal zone to a view | ||
|
|
||
| Since the resolver policy will require a [DNS view](/dns/internal-dns/dns-views/), you must have at least one view to be able to route requests to internal zones. | ||
|
|
||
| <Tabs syncKey="dashPlusAPI"> <TabItem label="Dashboard"> | ||
|
|
||
| <Render file="internal-dns-view-create-dash" params={{ | ||
| conditional: "get-started-detail"}} | ||
| /> | ||
|
|
||
| </TabItem> <TabItem label="API"> | ||
|
|
||
| 1. Use the [Create Internal DNS View](/api/resources/dns/subresources/settings/subresources/account/subresources/views/methods/create/) endpoint. For each view you create, list all the internal zones that should be grouped under that view. | ||
|
|
||
| <Details header="DNS view configuration conditions"> | ||
| <Render file="internal-dns-view-conditions" /> | ||
| </Details> | ||
|
|
||
| </TabItem> </Tabs> | ||
|
Comment on lines
+41
to
+96
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If these tab groups are meant to be independent, assign a unique syncKey to each Tabs component to avoid synchronized tab switching across unrelated sections. |
||
|
|
||
|
|
||
| ## 3. Configure Gateway policies | ||
|
|
||
| :::note | ||
|
|
@@ -76,7 +109,7 @@ Besides selecting an internal DNS view when setting up your resolver policies, y | |
| 1. In [Zero Trust](https://one.dash.cloudflare.com/), go to **Gateway** > **Resolver policies**. | ||
| 2. Select **Add a policy** and enter a name and description. | ||
| 3. Create an expression for the traffic you wish to route. For guidance about selectors, operators, and values, refer to [Gateway](/cloudflare-one/policies/gateway/resolver-policies/#selectors). | ||
| 4. Select **Use DNS view**. In the dropdown, choose the view that queries matching the expression should be sent to. | ||
| 4. Select **Use Internal DNS**. In the dropdown, choose the view that queries matching the expression should be sent to. | ||
RebeccaTamachiro marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| 5. (Optional) Adjust the option to **fallback through public DNS** according to your use case. | ||
| - Off: Gateway DNS resolver returns the response as-is to the client. | ||
| - On: In case the response from the internal zone is REFUSED, NXDOMAIN, or a response with a CNAME type, Gateway DNS resolver sends the query to Cloudflare 1.1.1.1 public resolver and tries to resolve the query via public DNS. | ||
|
|
@@ -91,4 +124,6 @@ Use the rule settings object to define `resolve_dns_internally`, specifying `vie | |
| - `none`: Gateway DNS resolver returns the response as-is to the client. | ||
| - `public_dns`: In case the response from the internal zone is REFUSED, NXDOMAIN, or a response with a CNAME type, Gateway DNS resolver sends the query to Cloudflare 1.1.1.1 public resolver and tries to resolve the query via public DNS. | ||
|
|
||
| </TabItem> </Tabs> | ||
| </TabItem> </Tabs> | ||
|
|
||
| Once you add the Gateway resolver policy, it will be listed in the respective internal view under **Resolver policies referencing this view**. | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -21,7 +21,7 @@ Simplify private network management with Cloudflare DNS for your internal resour | |
|
|
||
| <Plan type="enterprise" /> | ||
|
|
||
| Manage DNS records that should only be accessible within your private network. Internal DNS [zones](/dns/internal-dns/internal-zones/) and [views](/dns/internal-dns/dns-views/) pair up with [Gateway resolver policies](/cloudflare-one/policies/gateway/resolver-policies/) so that you can control how a DNS query should be responded to according to the query context, such as its source IP. | ||
| Manage DNS records that should only be accessible within your private network. Internal DNS [zones](/dns/internal-dns/internal-zones/) and [views](/dns/internal-dns/dns-views/) pair up with [Gateway resolver policies](/cloudflare-one/policies/gateway/resolver-policies/) so that you can control how a DNS query should be responded to according to query context, such as query source IP. | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The revised sentence removes 'the' and 'its', making the sentence less clear. Consider reverting to: 'according to the query context, such as its source IP.' for improved readability. |
||
|
|
||
| <Render file="internal-dns-beta-note" /> | ||
|
|
||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -5,12 +5,12 @@ sidebar: | |
| order: 4 | ||
| --- | ||
|
|
||
| import { Example, Render } from "~/components"; | ||
| import { Example, Render, Tabs, TabItem } from "~/components"; | ||
|
|
||
| During an [internal DNS query resolution](/dns/internal-dns/#architecture-overview), if no internal record is found within a matching internal zone, Cloudflare will check if the matching internal zone is referencing another internal zone. Successive references can be followed with a maximum of five references in a chain. | ||
| <Render file="internal-reference-zone-intro"/> | ||
|
|
||
| :::note | ||
| A wildcard record (`*.example.local`) in the matching internal zone will take precedence over an exact match in a referenced zone. | ||
| A wildcard record (`*.example.local`) in the matching internal zone will take precedence over an exact match in a reference zone. | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Consider standardizing the use of 'reference zone' vs 'referenced zone' throughout the document for consistency and clarity. |
||
| ::: | ||
|
|
||
| ## Configuration conditions | ||
|
|
@@ -22,11 +22,24 @@ A wildcard record (`*.example.local`) in the matching internal zone will take pr | |
|
|
||
| ## Set up | ||
|
|
||
| To set up a reference zone, use the [Update DNS settings](/api/resources/dns/subresources/settings/subresources/zone/methods/edit/) endpoint. In `--data`, specify the `internal_dns` object with the parameter `reference_zone_id`. | ||
| <Tabs syncKey="dashPlusAPI"> <TabItem label="Dashboard"> | ||
|
|
||
| 1. Log in to the [Cloudflare dashboard](https://dash.cloudflare.com/login) and select an account. | ||
RebeccaTamachiro marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| 2. Go to **Internal DNS** and select a zone. | ||
| 3. Within the selected zone, go to **Reference zone**. | ||
| 4. Select **Add reference zone**. If your zone already has a reference zone set up, you must first remove it. As explained in the [configuration conditions](#configuration-conditions), each internal zone can only reference one other zone at a time. | ||
| 5. Find the zone you want to use as reference and choose **Select** in the respective row. | ||
|
|
||
| </TabItem> | ||
| <TabItem label="API"> | ||
|
|
||
| Use the [Update DNS settings](/api/resources/dns/subresources/settings/subresources/zone/methods/edit/) endpoint. In `--json`, specify the `internal_dns` object with the parameter `reference_zone_id`. | ||
|
|
||
| <Example> | ||
| <Render file="internal-reference-zone-api"/> | ||
|
|
||
| A third zone (C) could also point to zone B as a reference, but zone A cannot add another zone as a reference while also having zone B configured as its reference zone. | ||
|
|
||
| </ Example> | ||
| </ Example> | ||
|
|
||
| </TabItem> </Tabs> | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,21 @@ | ||
| --- | ||
| params: | ||
| - conditional? | ||
| --- | ||
|
|
||
| import { Details, Render } from "~/components"; | ||
|
|
||
| 1. Log in to the [Cloudflare dashboard](https://dash.cloudflare.com/login) and select an account. | ||
RebeccaTamachiro marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| 2. Go to **Internal DNS** > **Views**. | ||
| 3. Select **Create a view**. | ||
| 4. Give your view a descriptive name. | ||
|
|
||
| { props.conditional === "get-started-detail" && ( | ||
| <Details header="DNS view configuration conditions"> | ||
| <Render file="internal-dns-view-conditions" /> | ||
| </Details> | ||
| ) | ||
| } | ||
|
|
||
| 5. Select **Manage zones** to add zones to your view. Select the internal zones that should be used to resolve queries sent by Gateway resolver to this view | ||
RebeccaTamachiro marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| 6. Choose **Save** to confirm. | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| --- | ||
| params: | ||
| - conditional? | ||
| --- | ||
|
|
||
| During an [internal DNS query resolution](/dns/internal-dns/#architecture-overview), if no internal record is found within a matching internal zone, Cloudflare will check if the matching internal zone is referencing another internal zone. Successive references can be followed with a maximum of five references in a chain. | ||
|
|
||
|
|
||
| { props.conditional === "get-started-link" && ( | ||
| <p> | ||
| For details, refer to <a href="/dns/internal-dns/internal-zones/reference-zones/">reference zones</a>. | ||
| </p> | ||
| ) | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,26 @@ | ||
| --- | ||
| params: | ||
| - conditional? | ||
| --- | ||
|
|
||
| import { Details, Render } from "~/components"; | ||
|
|
||
| 1. Log in to the [Cloudflare dashboard](https://dash.cloudflare.com/login) and select an account. | ||
RebeccaTamachiro marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| 2. Go to **Internal DNS** and select **Create an internal zone**. | ||
| 3. Give your internal zone a name. | ||
|
|
||
| { props.conditional === "get-started-detail" && ( | ||
| <Details header="Internal zone configuration conditions"> | ||
| <Render file="internal-zones-conditions" /> | ||
| </Details> | ||
| ) | ||
| } | ||
|
|
||
| 4. Add DNS records to your internal zone using your preferred option: | ||
| - [Import](/dns/manage-dns-records/how-to/import-and-export/) a formatted BIND file. | ||
| - Select **Add a record** and choose **Create** under the record type you want to add. Refer to [DNS record types](/dns/manage-dns-records/reference/dns-record-types/) for details. | ||
| 5. Repeat this process for each internal zone you wish to add. | ||
|
|
||
| :::note | ||
| Creating multiple internal DNS records in batch is currently only supported via API. | ||
| ::: | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| name: Internal DNS | ||
|
|
||
| product: | ||
| title: Internal DNS | ||
| group: Application performance | ||
| url: /dns/internal-dns/ | ||
|
|
||
| meta: | ||
| description: Use Cloudflare DNS for your internal resources. |
Uh oh!
There was an error while loading. Please reload this page.