Gateway リゾルバーポリシーを使うと、さまざまな条件にもとづいて DNS クエリをカスタム DNS リゾルバーへ振り分けられます。このチュートリアルでは、リージョン別のプライベート DNS サーバーを設定し、ユーザーの地理的位置にもとづいて最も近い内部リソースへ誘導する方法を示します。
内部ネットワークが複数拠点にまたがり、DNS でプライベートネットワークリソースへのアクセスを管理している組織で特に有効です。
このチュートリアルを終えると、ユーザーの所在地にもとづいて DNS クエリをリージョン別のプライベート DNS サーバーへ自動で振り分ける Gateway リゾルバーポリシーを設定できます。内部リソースへの最適なパフォーマンスとアクセスを提供します。
例として、米国(US)と欧州(EU)のリージョンサーバーをプライベート DNS サーバーに使います。
開始する前に、次を用意します。
- Enterprise の Zero Trust アカウント
- 複数リージョンにデプロイしたプライベート DNS サーバー(例: US、EU、APAC)
- プライベート DNS サーバーを Cloudflare に接続する Cloudflare Tunnel
- 解決が必要な内部ドメイン(例:
internal.example.com)
まず、Cloudflare Tunnel を使い、リージョン別のプライベート DNS サーバーを Cloudflare に接続します。
プライベート DNS サーバーがある各リージョンで、トンネルを作成 します。各トンネルに、DNS サーバーの プライベート IP アドレスを追加 します。たとえば、US リージョンは 10.0.1.53/32、EU リージョンは 10.1.1.53/32 です。
すべてのリージョン DNS サーバーで、この手順を繰り返します。
プライベート DNS サーバーを Cloudflare に接続したら、Gateway リゾルバーポリシーを設定し、ユーザーの所在地にもとづいて適切なリージョン DNS サーバーへ DNS クエリを振り分けます。
プライベート DNS サーバーがある各リージョンで、次の手順を行います。
-
Traffic policies > Resolver policies を開きます。
-
Add a policy を選びます。
-
リージョンにもとづいてポリシーに名前を付けます(例:
US Internal DNS)。 -
内部ドメインとそのリージョンのユーザーに一致する式を作成します。たとえば、米国のユーザーに一致させる場合:
セレクター 演算子 値 論理 Domain in internal.example.comAnd Source Country IP Geolocation in United States -
Select DNS resolver で Configure custom DNS resolvers を選びます。
-
リージョン DNS サーバーのプライベート IP アドレスを入力します(例: US は
10.0.1.53、EU は10.1.1.53)。 -
ドロップダウンメニューで
<IP-address> - Privateを選びます。 -
(任意)Add DNS resolver を選び、セカンダリ IP アドレスを入力してバックアップ DNS リゾルバーを追加します。
-
Create policy を選びます。
-
プライベート DNS サーバーがある各リージョンで、手順 1〜9 を繰り返します。たとえば、EU リージョンのユーザーに一致するポリシーを作成する場合:
| セレクター | 演算子 | 値 | 論理 |
|---|---|---|---|
| Domain | in | internal.example.com |
And |
| Source Country IP Geolocation | in | Austria、Belgium、France、Germany、Netherlands |
専用 DNS サーバーがないリージョンのユーザー向け、またはトラフィックに一致するポリシーがない場合のキャッチオールポリシーを作成します。
-
Traffic policies > Resolver policies を開きます。
-
Add a policy を選びます。
-
ポリシーに名前を付けます(例:
Internal DNS Fallback)。 -
内部ドメインに一致する式を作成します。
セレクター 演算子 値 Domain in internal.example.com -
Select DNS resolver で Configure custom DNS resolvers を選びます。
-
プライマリ DNS サーバーのプライベート IP アドレスを入力します。
-
Create policy を選びます。
Gateway は 優先順位 にもとづいてリゾルバーポリシーを適用します。ポリシーは、具体的なものからあいまいなものへ並べます。
- Traffic policies > Resolver policies を開きます。
- ドラッグハンドルでポリシーを並べ替えます。
- リージョンカバレッジ付きのリゾルバーポリシーを先に
- フォールバック用のリゾルバーポリシーを最後に
Gateway は最初に一致したポリシーを適用します。トラフィックに一致するポリシーがない場合、Gateway はフォールバック用のリゾルバーポリシーを適用します。リージョンカバレッジ付きリゾルバーポリシー同士の順序は問いません。
設定をテストするには、プライベート DNS サーバーがある各リージョンのデバイスに Cloudflare One Client をデプロイし、内部ドメインへ DNS クエリを実行します。たとえば、US リージョンをテストする場合:
-
US リージョンのデバイスに Cloudflare One Client をデプロイ します。
-
そのデバイスでターミナルを開き、次を実行します。
nslookup internal.example.com -
DNS クエリが、内部リソースの想定 IP アドレスを返すことを確認します。応答には、US の DNS サーバーが
internal.example.comに対して返すよう設定した IP アドレスが表示されるはずです。 -
ほかのリージョンのデバイスからもテストを繰り返し、それぞれのリージョン DNS サーバーから応答を受けることを確認します。DNS サーバーの設定により、リージョンごとに異なる IP アドレスが返ることがあります。
- Insights > Logs > DNS query logs を開きます。
internal.example.comへのクエリでフィルタします。- Resolver IP フィールドを確認し、ユーザーの所在地にもとづいて正しいリージョン DNS サーバーへクエリが振り分けられていることを確認します。
- バックアップリゾルバーを使う: 各リージョンにセカンダリ DNS リゾルバーを設定し、可用性を高めます。
- DNS パフォーマンスを監視する: Gateway Analytics で DNS クエリのパフォーマンスを追跡し、リージョン振り分けの問題を見つけます。
- ネットワークポリシーを組み合わせる: リゾルバーポリシーと ネットワークポリシー を組み合わせ、ユーザー ID とデバイスポスチャにもとづいて内部リソースへのアクセスを制御します。
- 仮想ネットワークを検討する: リージョン間で IP アドレス空間が重複している場合は、仮想ネットワーク でトラフィックを分離します。
- フェイルオーバーをテストする: リージョン DNS サーバーが利用できなくなったときの動作を定期的にテストし、バックアップリゾルバーが想定どおり動くことを確認します。