クラウドDNSの設計|Public・Private DNSとハイブリッド名前解決を解説

当ページのリンクには広告が含まれています。
ネットワーク上級編 第39回/全70記事

この記事は、 「ネットワーク上級編|要件定義・設計・クラウド・自動化へ進む」 の第39回です。

第4章では、クラウドネットワークを構成するVPC・VNet、ルートテーブル、 ロードバランサー、NAT Gateway、VPN、専用線、複数クラウド接続などを学んできました。 今回は通信開始時の重要な入口となるクラウドDNSの設計を扱います。

NETWORK ADVANCED|第39回|CLOUD NETWORK

クラウドDNSの設計|Public・Private DNSとハイブリッド名前解決を理解する

クラウドDNSの設計では、DNSレコードを登録するだけでは不十分です。 「誰が・どこから・どの名前を解決するのか」を整理し、 Public DNS、Private DNS、オンプレミスDNS、DNS Resolverを組み合わせて 名前解決経路を設計する必要があります。

対象レベル Level 3〜4・上級
想定読了時間 約25分
身につく成果 クラウドDNS構成を要件から設計できる
前提知識 DNS・VPC/VNet・VPN
演習環境 ブラウザ・紙・Excel等

クラウド上のWebサーバーやデータベースが正常に稼働していても、 DNSによる名前解決ができなければ利用者からは 「システムへ接続できない」という障害に見えます。

クラウドDNSは単なる名前解決機能ではなく、 クラウド・オンプレミス・インターネットをつなぐ ネットワーク設計の一部として考える必要があります。

この記事を読み終えるとできること

  • Public DNSとPrivate DNSを使い分けられる
  • クラウドDNSの名前解決経路を説明できる
  • Split Horizon DNSの考え方を理解できる
  • オンプレミスとクラウドのDNS連携を設計できる
  • DNSフォワーディングの方向を整理できる
  • TTLを設計する理由を説明できる
  • DNS障害時の確認ポイントを整理できる
  • DNS設計内容を設計書へ落とし込める

クラウドDNSとは

最初に押さえるポイント

クラウドDNS設計とは、クラウド上で利用する名前について、 誰が・どこから・どのDNSを使って名前解決するのかを決めることです。

アプリケーションへ接続するとき、利用者がサーバーのIPアドレスを 直接入力することはほとんどありません。

通常は次のようなDNS名を利用します。

  • www.example.com
  • api.example.com
  • app.internal.example.com
  • db.internal.example.com

DNSがこれらの名前をIPアドレスなどへ変換することで、 クライアントは接続先を特定できます。

ルーティングやファイアウォールが正しくても、 DNS名前解決に失敗すればアプリケーションへ接続できません。

そのためクラウドDNSは、サーバー担当だけではなく ネットワーク設計者も理解しておく必要があります。

クラウドDNSの全体像

企業のクラウド環境では、インターネット向けDNSと 内部向けDNSを分ける構成が一般的です。

Public DNSとPrivate DNSを分離した基本構成

Internet 外部利用者 www.example.com
Public Public DNS 公開サービスを名前解決
Cloud Load Balancer Webサービス

社内利用者からPrivate DNSを利用する構成

On-Premises 社内PC app.internal.example.com
On-Premises 社内DNS 条件付き転送
Cloud DNS Resolver クラウドへ問い合わせ
Private Private DNS 内部サーバーを名前解決

DNS設計の最初の質問は 「誰が、どの名前を、どこから名前解決するのか」です。

Public DNSとPrivate DNS

Public DNS

インターネット上から名前解決するためのDNSです。

  • 公開Webサイト
  • 公開API
  • 外部向けロードバランサー
  • メールサービス
  • VPN接続先

Private DNS

社内やクラウド内部など、限定した範囲で名前解決するDNSです。

  • 内部アプリケーション
  • データベース
  • 監視サーバー
  • 管理サーバー
  • 内部API
DNS名 利用者 設計例
www.example.com インターネット利用者 Public DNS
api.example.com 外部サービス Public DNS
app.internal.example.com 社員・内部サーバー Private DNS
db.internal.example.com アプリケーションサーバー Private DNS

PublicとPrivateの判断では、 「インターネットから名前解決する必要があるか」 を最初に確認します。

Split Horizon DNSとは

Split Horizon DNSとは、同じDNS名でも 問い合わせ元によって異なる応答を返す考え方です。

たとえば、

app.example.com

という同じ名前を使用しながら、 外部利用者と内部利用者で異なる接続先を返します。

Split Horizon DNSのイメージ

外部利用者 app.example.com
Public DNS 203.0.113.10 を回答

社内利用者 app.example.com
Private DNS 10.10.10.10 を回答

同じ名前を使いながら、内部通信ではPrivate IP、 外部通信ではPublic側の接続先を使用するといった設計ができます。

オンプレミスとクラウドのDNSを連携する

クラウドDNS設計で難しくなるのが、 オンプレミスとクラウドを組み合わせたハイブリッド環境です。

たとえばオンプレミスでは、

corp.example.com

を管理し、クラウドでは、

cloud.example.com

を管理するとします。

このとき社内PCから app.cloud.example.com を利用するなら、社内DNSからクラウドDNSへ問い合わせを送る仕組みが必要です。

逆にクラウド上のサーバーから fileserver.corp.example.com を利用するなら、クラウドからオンプレミスDNSへ問い合わせる仕組みが必要です。

ハイブリッドDNSの全体像

On-Premises 社内DNS corp.example.com
VPN / Dedicated プライベート接続 DNS通信経路
Cloud DNS Resolver 問い合わせを中継
Private Cloud DNS cloud.example.com

DNSフォワーディングを設計する

DNSフォワーディングとは、 特定の名前空間に対する問い合わせを別のDNSへ転送する仕組みです。

オンプレミスからクラウドへ

社内PC ↓ On-Premises DNS ↓ cloud.example.com はクラウドへ転送 ↓ Cloud DNS Resolver ↓ Private DNS ↓ app.cloud.example.com

クラウドからオンプレミスへ

Cloud VM ↓ Cloud DNS Resolver ↓ corp.example.com はオンプレミスへ転送 ↓ VPN / 専用線 ↓ On-Premises DNS ↓ fileserver.corp.example.com

条件付きフォワーディング

すべてのDNS問い合わせを同じDNSへ送る必要はありません。

名前空間ごとに問い合わせ先を決めることで、 必要なDNSだけを適切な場所へ転送します。

対象ドメイン 問い合わせ元 転送先
corp.example.com Cloud On-Premises DNS
cloud.example.com On-Premises Cloud DNS Resolver
その他 各クライアント 通常のDNS名前解決

DNSループを防ぐ

ハイブリッドDNSでは、フォワーディング先を誤ると DNS問い合わせが双方を行き来する構成になることがあります。

Cloud DNS ↓ corp.example.com を On-Premises DNS へ転送 ↓ On-Premises DNS ↓ 解決できないため Cloud DNS へ転送 ↓ Cloud DNS ↓ 繰り返し

DNSフォワーディングを設計するときは、 各名前空間について「最終的にどのDNSが管理するか」を明確にします。

名前空間 管理主体
example.com Public DNS
corp.example.com On-Premises DNS
cloud.example.com Cloud Private DNS

複数VPC・VNet・アカウント環境のDNS

大規模なクラウド環境では、 1つのVPCや1つのアカウントだけで構成されるとは限りません。

Cloud Organization ├─ Account A │ └─ VPC-A │ ├─ Account B │ └─ VPC-B │ └─ Account C └─ VPC-C

各ネットワークに独立したDNSを作ると、 次のような問題が発生する可能性があります。

  • 同じDNSレコードを複数箇所で管理する
  • 名前空間が重複する
  • 設定差分が発生する
  • 障害調査時の確認場所が増える
  • DNS管理権限が分散する

そのため、環境によってはDNS Resolverなどを 共通ネットワークサービスとして集約します。

DNSを共通サービス化するイメージ

VPC-A 業務A
Central DNS 共通名前解決基盤
VPC-B / VPC-C その他業務

ただし、すべてを中央集約するのが正解とは限りません。 障害影響範囲、組織分離、運用権限などを考えて設計します。

TTLを設計する

DNSレコードにはTTL(Time To Live)があります。

TTLは、DNS Resolverなどが回答結果を どれくらいの時間キャッシュできるかを示す値です。

TTLを短くする

メリット

  • DNS変更を比較的早く反映できる
  • 切り替え作業を行いやすい

注意点

  • DNS問い合わせ回数が増える
  • キャッシュ効果が小さくなる

TTLを長くする

メリット

  • DNS問い合わせを減らせる
  • キャッシュを有効活用できる

注意点

  • DNS変更の反映に時間がかかる
  • 移行時に旧情報が残りやすい

移行前にTTLを下げる

移行数日前 ↓ TTLを短縮 ↓ 旧TTLのキャッシュが十分に失効 ↓ 切り替え当日 ↓ DNSレコードを変更 ↓ 通信確認 ↓ 安定後にTTLを通常値へ戻す

移行直前にTTLを変更しても、 すでにキャッシュされている旧TTLにはすぐ反映されない点に注意します。

DNSの可用性を考える

DNSは多くの通信の入口です。

アプリケーションサーバーが正常でも、 DNS名前解決に失敗すれば利用者からはサービス停止に見えます。

DNS障害の原因として、たとえば次のものがあります。

  • DNSレコードの誤削除
  • DNSゾーンの設定ミス
  • Resolverの設定ミス
  • フォワーディングルールの設定ミス
  • VPN・専用線障害
  • ルーティング障害
  • FirewallによるDNS通信遮断
  • 権限設定ミス

マネージドDNSを使っているから障害を考えなくてよい、 というわけではありません。

サービス基盤自体の可用性と、 自分たちが設計・設定するDNS構成の可用性を分けて考えます。

DNSとネットワーク経路はセットで設計する

オンプレミスDNSからクラウドDNS Resolverへ問い合わせる構成では、 DNS設定だけでは通信できません。

DNS問い合わせが通る実際のネットワーク経路

On-Prem DNS DNS Query
Firewall DNS通信を許可
VPN / 専用線 クラウドへ接続
Cloud Resolver Private DNSへ問い合わせ

DNS連携を設計するときは、少なくとも次を確認します。

  • DNS ResolverのIPアドレス
  • オンプレミスからResolverへのルーティング
  • 戻り経路
  • VPNまたは専用線の接続状態
  • Firewallの許可設定
  • UDP/TCP 53番ポートの到達性

DNS障害に見えても、 実際にはVPN・専用線・ルーティング・Firewallが原因の場合があります。

DNSのセキュリティ設計

1

内部DNSを不要に公開しない

内部サーバー名やPrivate IPアドレスを Public DNSへ不用意に登録しないようにします。

2

DNS変更権限を制限する

DNSレコードを変更できるユーザー・ロールを 必要最小限にします。

3

変更ログを残す

誰が・いつ・どのDNS設定を変更したのか 追跡できるようにします。

4

DNS問い合わせログを検討する

障害調査や異常通信調査のため、 DNS Query Logを利用できる構成を検討します。

DNSの監視・ログ設計

DNS監視では、単にDNSサービスが起動しているかだけでなく、 名前解決が実際に成功しているかを見る必要があります。

監視項目 確認目的
DNS問い合わせ成功 名前解決が正常か
SERVFAIL Resolverや転送先の異常を確認
NXDOMAIN 存在しない名前への問い合わせを確認
Query数 異常増加や障害兆候を確認
Resolver Endpoint ハイブリッドDNSの状態確認
DNS設定変更 誤変更・不正変更の検知
VPN・専用線 オンプレミスとのDNS経路確認

DNS設計書に残す内容

DNS設計書では、DNSレコードだけではなく 「どこから名前解決できるのか」まで記載します。

項目 設計例
DNS Zone cloud.example.com
種別 Private
管理場所 Cloud DNS
利用ネットワーク Production VPC
Record app.cloud.example.com
Type A
Value 10.10.10.20
TTL 300秒
利用者 Cloud VM・社内PC
On-Premisesからの利用 あり
Forwarding On-Premises → Cloud
変更担当 Network Team
監視 DNS Query Log

DNS設計で確認するヒアリング項目

名前空間

  • 現在使用しているドメインは何か
  • PublicとPrivateでどの名前を利用するか
  • オンプレミスDNSのゾーン構成はどうなっているか
  • 既存システムと名前空間が重複しないか

利用場所

  • インターネットから名前解決するか
  • クラウド内部だけで利用するか
  • オンプレミスから利用するか
  • 別VPC・VNet・アカウントから利用するか

ハイブリッド接続

  • オンプレミスDNSからクラウド名を解決するか
  • クラウドからオンプレミス名を解決するか
  • VPNまたは専用線が利用できるか
  • DNS Resolverまで通信可能か

運用

  • 誰がDNSレコードを管理するか
  • 変更申請・承認フローはあるか
  • ログをどれくらい保存するか
  • 障害発生時の担当部署はどこか

移行

  • 既存DNSから移行するか
  • DNS切り替え日時はいつか
  • TTLを事前変更する必要があるか
  • 切り戻し条件は何か

DNSサービス名から設計を始めるのではなく、 「何を名前解決する必要があるのか」から設計を始めます。

クラウドDNS設計でよくある失敗

NG Public DNSとPrivate DNSを混同する

内部向けサーバー名をPublic DNSへ登録すると、 本来公開する必要がない情報まで外部から参照できる可能性があります。

NG Private DNSを作ればオンプレミスから自動的に利用できると思う

オンプレミスからPrivate DNSを利用するには、 DNS Resolver、フォワーディング、VPN・専用線、 ルーティングなども含めて設計する必要があります。

NG クラウドとオンプレミスで同じゾーンを独立管理する

どちらのDNS情報が正しいのか分からなくなるため、 名前空間ごとの管理主体を明確にします。

NG 双方向フォワーディングでDNSループを発生させる

各ゾーンの管理主体と最終的な問い合わせ先を明確にします。

NG 移行直前にTTLを変更する

古いTTLでキャッシュ済みの情報が残っている可能性があるため、 TTL変更は移行計画へ事前に組み込みます。

NG DNS設定だけ確認してネットワーク経路を確認しない

DNS Resolverへの通信が届かなければ名前解決できません。 VPN・専用線・ルーティング・Firewallまで確認します。

OK 名前解決経路全体を設計する

DNS Zone、Resolver、Forwarding、ルーティング、 セキュリティ、TTL、監視まで一連の仕組みとして設計します。

クラウドDNS設計の判断順序

クラウドDNSを設計するときは、 次の順番で整理すると判断しやすくなります。

  1. 名前を整理する どのドメイン・サブドメインを使用するのか確認します。
  2. 利用者を整理する インターネット利用者、社員、サーバーなど誰が利用するのか確認します。
  3. 問い合わせ元を整理する インターネット、オンプレミス、クラウド、別アカウントなどを確認します。
  4. PublicかPrivateか決める 名前解決を公開する範囲を決めます。
  5. DNSの管理主体を決める 各名前空間をどのDNSが管理するのか明確にします。
  6. 他環境との連携を確認する オンプレミスや他VPC・VNetから名前解決する必要があるか確認します。
  7. フォワーディング方向を決める どの名前空間をどのDNSへ転送するか決めます。
  8. ネットワーク経路を確認する VPN、専用線、ルーティング、Firewallを確認します。
  9. TTL・監視・運用を決める 移行、ログ、変更権限、障害対応まで含めます。

DNSサービスを選ぶことが設計のスタートではありません。

名前解決要件を整理したあとで、 その要件を満たす構成を選択します。

顧客・上司への説明方法

設計レビューで、

「Private DNS ZoneとResolverを作ります」

だけでは、なぜ必要なのかが伝わりません。

次のように、技術と目的をセットで説明します。

社内システムのサーバー名はインターネットから名前解決できないよう、 Private DNSで管理します。

また、社内PCからクラウド上のサーバー名を利用できるように、 オンプレミスDNSとクラウドDNS Resolverを連携します。

これにより、利用者はIPアドレスを直接意識せず、 既存の社内DNSと同じようにクラウドシステムへアクセスできます。

設計レビューではさらに、

「Public DNS、Private DNS、オンプレミスDNSの役割を分離し、 各名前空間の管理主体と問い合わせ経路を明確にしています」

と説明できると、設計意図が伝わりやすくなります。

クラウドDNSで使われる英語表現

英語 意味
Public DNS Zone 公開DNSゾーン
Private DNS Zone プライベートDNSゾーン
DNS Resolver DNS名前解決を行う機能
Inbound Endpoint 外部からDNS問い合わせを受ける入口
Outbound Endpoint 外部DNSへ問い合わせる出口
Forwarding Rule DNS転送ルール
Conditional Forwarding 条件付きDNS転送
Authoritative DNS 権威DNS
Recursive Resolver 再帰問い合わせを行うResolver
Split Horizon DNS 問い合わせ元によって異なる回答を返す構成
Name Resolution 名前解決
DNS Query DNS問い合わせ
DNS Response DNS応答
TTL DNSキャッシュの有効時間

英語資料を調べるときの検索キーワード

  • hybrid DNS resolution
  • private DNS zone
  • DNS conditional forwarding
  • on-premises cloud DNS resolution
  • DNS resolver inbound outbound
  • split horizon DNS

理解度チェック

ここまでの内容を確認します。 解答を見る前に、自分で理由まで考えてください。

問題1.インターネットへ公開するWebサイトのDNSとして 適切なのはどれですか。

  1. Private DNSのみ
  2. Public DNS
  3. DHCP
  4. NAT Gateway
解答を見る
正解:B

インターネット上の利用者から名前解決させるため、 Public DNSを使用します。

問題2.クラウド内部だけで使用するデータベース名の管理に 適したDNSはどれですか。

  1. Public DNS
  2. Private DNS
  3. インターネットDNSのみ
  4. DNSは使用しない
解答を見る
正解:B

内部システムはPrivate DNSで管理することで、 名前解決可能な範囲を限定できます。

問題3.オンプレミスからクラウドのPrivate DNS名を 名前解決する場合に確認する項目を3つ以上挙げてください。

解答例を見る
  • DNS Resolver
  • DNS Forwarding
  • VPN・専用線
  • ルーティング
  • Firewall
  • DNSポートの到達性

問題4.Split Horizon DNSとは何ですか。

解答を見る

同じDNS名に対して、 問い合わせ元のネットワークなどに応じて 異なるDNS応答を返す構成です。

問題5.DNS切り替え前にTTLを確認する理由を説明してください。

解答を見る

Resolverなどへ旧DNS情報がキャッシュされるためです。 TTLが長い場合、DNSレコードを変更しても旧情報が一定時間利用される 可能性があります。

実践演習:ハイブリッドクラウドのDNSを設計する

次の企業ネットワークを想定して、 DNS設計を考えてください。

演習用ネットワーク

On-Premises 社内PC / DNS 社内ネットワーク
Hybrid VPN クラウド接続
Cloud DNS Resolver DNS問い合わせ中継
Private Private DNS クラウド内部名前解決

要件

  • www.example.com はインターネットから利用する
  • app.cloud.example.com は社内PCとクラウドVMだけから利用する
  • クラウドVMから fileserver.corp.example.com を名前解決する
  • インターネットから内部サーバー名は名前解決させない

課題1.PublicとPrivateを分類する

次の名前を、どのDNSで管理するか考えてください。

www.example.com →
app.cloud.example.com →
fileserver.corp.example.com →
課題1の解答を見る
  • www.example.com:Public DNS
  • app.cloud.example.com:Cloud Private DNS
  • fileserver.corp.example.com:On-Premises DNS

課題2.社内からクラウドへのDNS経路を書く

社内PCから app.cloud.example.com を名前解決する経路を書いてください。

社内PC → ______ → ______ → ______
課題2の解答を見る

社内PC → On-Premises DNS → 条件付きForwarding → Cloud DNS Resolver → Cloud Private DNS

課題3.クラウドからオンプレミスへのDNS経路を書く

Cloud VMから fileserver.corp.example.com を名前解決する経路を書いてください。

Cloud VM → ______ → ______ → ______
課題3の解答を見る

Cloud VM → Cloud DNS Resolver → Outbound Forwarding → VPN → On-Premises DNS

課題4.障害時の確認ポイントを考える

社内PCからクラウド内部の名前だけ解決できなくなりました。 確認すべき項目を5つ以上挙げてください。

1.
2.
3.
4.
5.
課題4の解答例を見る
  • Private DNSレコードが存在するか
  • DNS Forwarding Ruleが正しいか
  • DNS Resolverが正常か
  • VPNが正常か
  • Resolverまでのルーティングが正しいか
  • 戻り経路があるか
  • FirewallでDNS通信が許可されているか
  • 問い合わせログがResolverまで到達しているか
  • 古いDNSキャッシュが残っていないか

自分の言葉で説明する課題

設計レビューで、顧客から次の質問を受けました。

「クラウドにPrivate DNSを作るだけではなく、 なぜDNS Resolverまで必要なのですか?」

自分の言葉で説明を書いてみましょう。
説明例を見る

Private DNSはクラウド内部の名前を管理する仕組みですが、 オンプレミスなど別のネットワークから利用する場合は、 DNS問い合わせをクラウド側へ届ける仕組みが必要です。

そのため、DNS Resolverやフォワーディング、 VPN・専用線、ルーティングまで含めて 名前解決経路を設計します。

まとめ

  • クラウドDNS設計では、 「誰が・どこから・どの名前を解決するか」を最初に整理する
  • インターネット向けの名前にはPublic DNSを使用する
  • 内部システムにはPrivate DNSを使用する
  • 同じ名前を内部・外部で使い分ける場合は Split Horizon DNSを検討する
  • ハイブリッド環境ではDNS Resolverと DNSフォワーディングを設計する
  • DNSだけでなくVPN・専用線・ルーティング・Firewallまで確認する
  • 名前空間ごとに管理主体を明確にしてDNSループを防ぐ
  • 移行時はTTLとDNSキャッシュを考慮する
  • DNS変更権限、ログ、監視も設計対象に含める
  • 複数VPC・VNet・アカウントではDNSの共通化も検討する

「DNSレコードを登録できる」だけでは設計とは言えません。 名前空間、利用者、問い合わせ経路、ネットワーク経路、 可用性、運用まで説明できる状態を目指しましょう。

あわせて学びたい記事

18. DNS・DHCP設計

クラウドDNSの前提となる、企業ネットワークにおける DNS・DHCPの基本設計を復習できます。

DNS・DHCP設計を読む →

36. オンプレミスとクラウドをVPNで接続する

ハイブリッドDNSの通信経路となる オンプレミス・クラウド間VPNを学びます。

ハイブリッドクラウドVPNを読む →

37. 専用線接続の基本

DNS Resolverへの通信経路として利用されることもある、 クラウド専用線接続の考え方を学びます。

専用線接続の基本を読む →

38. 複数クラウド・複数アカウント接続

DNSを共通ネットワークサービスとして設計するときの 前提となる複数環境接続を学びます。

複数クラウド・複数アカウント接続を読む →

次の記事:40. クラウドネットワーク障害の切り分け

クラウドでは、 ルートテーブル、セキュリティ制御、NAT、VPN、専用線、 ロードバランサー、DNSなど複数の要素が通信に関係します。

次回は、 「クラウド上のサーバーへ接続できない」 という状況から、どこをどの順番で確認すればよいのかを整理します。

ネットワーク上級編 第39回/全70記事

上級編では、要件定義・基本設計・高度なネットワーク技術・ クラウド・セキュリティ・自動化・提案までを順番に学びます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次