どうも、フリーランスエンジニアのMakotoです。
今回は、Azureが提供するDNSのサービスについて解説します。その名の通り、ドメイン名の名前解決を提供する基本的なサービスですが、いくつか用途が分かれており混乱しやすいサービスでもあります。
今回も図解を交えてわかりやすく解説しますので、ぜひ最後までお読みください。
それではいってみましょう!
DNSの仕組み
Azureのサービスを解説する前にDNSの仕組みをおさらいしておきましょう。そもそもDNSの用語は紛らわしくてわかりづらいので、ここをきちんと理解していないと混乱の元になります。
まず、DNSはDomain Name Systemの略で、IPアドレスの文字列を人間が覚えやすい名前で管理するための仕組みです。インターネットの根幹を支える重要な仕組みですね。
DNSサーバがIPアドレスと名前(ドメイン)の紐づけを電話帳のように管理しているのですが、このDNSサーバには大きく2つの役割に分かれています。
- 権威サーバ(コンテンツサーバ)
- フルリゾルバ(DNSキャッシュサーバ)
権威サーバ(コンテンツサーバ)
一般的にDNSサーバといえばこの権威サーバを指します。IPアドレスとドメイン名の関連付け1行1行をレコードセットとして管理していて、他のサーバに問い合わせることなく応答するサーバです。
権威サーバは自分が管理する範囲(ゾーン)をルートを頂点に分担しており、範囲外の問い合わせがあれば委任先の権威サーバの情報を応答することで成り立っています。
みたいな。
この階層化と委任の仕組みによって、階層構造をたどっていけば知りたいドメイン名のIPアドレスを知ることができるようになっています。
上の図では、このブログのドメイン名を例示しています。
az-start.comにアクセスした場合、ルートから順にたどって最終的にこのブログのサーバを運営しているXServerの権威サーバからIPアドレスを応答してもらう流れです。
繰り返しになりますが、権威サーバは答えを知っていればそれを応答し、知らなければ委任先を教える役割です。問い合わせしてくるのは次に解説する「フルリゾルバ」です。
フルリゾルバ(DNSキャッシュサーバ)
フルリゾルバは、クライアント(ブラウザ)からの要求を受け取って、権威サーバに聞きまわってくれる秘書のような役割のサーバです。
みたいな。(気の弱そうな秘書)
一度調べたIPアドレスは決められた時間だけ蓄積(キャッシュ)しておいて、同じドメイン名に対する権威サーバへの問い合わせを省略できるようになっています。このため、フルリゾルバのことを「DNSキャッシュサーバ」と呼ぶこともあります。
このフルリゾルバのアドレスは、一般的にはインターネットサービスプロバイダから提供されるIPアドレスとなりますが、例えば、Googleの提供するパブリックDNSである「8.8.8.8」のサーバもフルリゾルバのひとつになります。
Windowsだと以下の画面で設定するDNSサーバのことです。自動取得の場合はプロバイダのDNSサーバが利用されます。
DNSの仕組みを改めて学習したい方は以下の参考書がわかりやすくてオススメです!私はこの2冊で理解を深めました。
Azureが提供するDNSサービス
さて、前置きが長くなりましたが、Azureが提供するDNSサービスについて順番に見ていきましょう。権威サーバなのか、フルリゾルバなのか、その違いを意識しながら読み進めてください。
Azure DNS
Azure DNSは、Azureが提供するパブリックな権威サーバです。インターネットにWebサービスを公開する場合などに利用します。
Azureのグローバルネットワーク上に分散してサーバが配置されており、IP Anycastと呼ばれる仕組みによりユーザーに最も近いDNSサーバが応答する仕組みとなっています。
また、Azure DNSのSLAは100%となっており、高い信頼性も特徴のひとつです(ダウンしないというわけではありません)
ユーザーが保持しているドメイン名をAzureで管理する場合にAzure DNS(DNSゾーン)を作成・委任することになりますが、AzureのApp Service ドメインからドメインを購入した場合は自動的のDNSゾーンも作成されます。
図で表すと冒頭のXServerのネームサーバがAzure DNSに置き換わるイメージです。
AWSのRoute 53にあるようなDNSベースのトラフィックルーティングやフェールオーバーの機能はAzure Traffic Managerで提供されています。
Azure プライベートDNS
Azure プライベートDNSは、Azureの仮想ネットワーク(VNet)内で動作する権威サーバです。
先のAzure DNSと混同しないように注意してください。こっちは「プライベート」が付いているのでVNet内専用です。
インターネット上ではなく閉じたネットワークの中で利用するものなので、独自のカスタムドメイン名を利用することができます。(DNSプロバイダーからドメインを購入する必要はありません)
インターネットに公開する必要がなく、企業ネットワークの中だけで社内向けサービスを公開する場合などに利用します。
Azure プライベートDNSは仮想ネットワークにリンク(関連付け)して利用します(ドメイン名は同じもので例示しています)
そう思ったあなたはなかなか鋭いです。後述します。
また、Azure プライベートDNSには仮想マシンのホスト名のAレコードを自動的に登録/削除する機能があり、多数の仮想マシンを管理する場合の手間を軽減してくれます。
以下は実際に仮想マシン2台を別々のサブネットに作成して試した画面です。自動登録済みのところが「True」ではなくて「真」になっている。。
既定のDNSリゾルバ(168.63.129.16)
Azureの仮想ネットワーク内で動作するフルリゾルバです。正式な名前はよくわかりませんが、Azureサポートの記事で「既定のDNSリゾルバ」と記載されていたのでこの名前で記載します。
この既定のDNSリゾルバは 168.63.129.16 の仮想パブリックIPアドレス固定で提供されており、すべてのリージョンで共通です。
Azure プライベートDNSの説明時には図示しませんでしたが、仮想ネットワークを利用する場合にデフォルトで提供されるフルリゾルバです。
仮想マシンが名前解決を必要とする場合、デフォルトでは168.63.129.16に名前解決を要求します。WindowsのipconfigやLinuxのresolv.confでDNSサーバがAzureのものになっていることを確認できます。
Windows Server
Linux
少し込み入った話になりますが、先にご紹介した「Azure プライベートDNS」はこの既定のDNSリゾルバからの名前解決要求しか受け付けないなど、Azureのサービスを利用する上で前提となっている場合がありますので、独自のDNSサーバをフルリゾルバに設定したい場合は注意が必要です。
まとめ
今回はDNSの仕組みとAzureが提供するDNSのサービスについて解説しました。それぞれのサービスを用途ごとにまとめると次の表のような形になります。
サービス名 | 用途 | 備考 |
---|---|---|
Azure DNS | インターネットで利用する権威サーバ | – |
Azure プライベートDNS | VNet内で利用する権威サーバ | VNetにリンクさせる |
既定のDNSリゾルバ | VNet内で動作するフルリゾルバ | 168.63.129.16固定 |
権威サーバとフルリゾルバの違いを理解した上で、インターネットで利用するのか仮想ネットワーク内で利用するのかをおさえておくのが良いでしょう。