Azure プライベート DNS ゾーン ってなに??  

2024年12月13日掲載

AZ-900合格体験記

こんにちは、クラウドエンジニアの須藤です。 

ソフトバンクアドベントカレンダー2024、13日目の記事です。

この記事では、Microsoft の Azure の中のサービスの 1つである Azure プライベート DNS ゾーン について紹介したいと思います。業務で Azure のネットワークを扱う機会がありましたので、ネットワーク経験がまったくない初心者の私が Azure のネットワークを触ってみた結果やナレッジを残す目的でこのブログを執筆しました

「普通の DNS と何が違うの?」、「実際の画面を見てみたい!」という方に向けて書いた記事なので、参考にしていただければ幸いです。

目次

この記事では
  • ネットワーク初心者目線でAzure プライベート DNS ゾーンについて紹介します
  • Azure プライベート DNS ゾーンを使用して名前解決を実際に行ってみます

Azure プライベート DNS ゾーン ってなに??

 Azure を扱った方の中にはこの名前を聞いたことがあるという方はいらっしゃるかもしれません。これは名前の通りプライベートな DNS サービスのことです。

ネットワークの経験がない方や初心者であれば、DNS って結局何のこと?となるかと思います。DNS (Domain Name System) とは、ドメイン名と IP アドレスを紐づけてインターネットを人間が利用しやすいようにするシステムのことを指します。

DNSの詳細な説明についてはここでは省きます。

本題の Azure プライベート DNS ゾーン とは Azure の仮想ネットワーク (Vnet) 上の専用の DNS サービスです。DNS サーバーをユーザー側で準備しなくても、Azure 側が Vnet 内専用のフルマネージドな DNS サービスを提供してくれます。

Azure プライベート DNS ゾーンの中身は?

それでは、実際にサービスの中身を見てみましょう。以下がAzure Portal から見た Azure プライベート DNS ゾーンの中身になります。

このようにレコードセットの中にレコードが含まれる形となります。

privatelink.openai.azure.com という “ゾーン” に “2024techblog-aoai0” というサブドメインでAレコードが登録されており、これを合わせたネームスペース“2024techblog-aoai0.privatelink.openai.azure.com” の 値がプライベート IP アドレス “10.100.0.4” を指しているというDNS の構成になっています。

今回は名前解決を実際に行うために、Azure プライベート DNS ゾーンを使用した以下のような構成を組んでみました。

想定としては、同じ Vnet 内に属している Azure VM から Azure VM と同じ Vnet 内にデプロイしてある Azure Open AI のプライベートエンドポイントに対して名前解決を行おうと思います。インターネットを経由してリソースにアクセスさせたくなく、閉域 (Azure のネットワーク経由) からのみアクセス (名前解決) させたい場合にプライベートエンドポイントを構成して、その際にプライベート DNS ゾーンも作成して、閉域内での名前解決に利用する用途があります。

今回わざわざ Azure Open AI のプライベートエンドポイントを作成して、名前解決を行おうとしている理由は、今までの説明でありました通り、Azure プライベート DNS ゾーンを使用した名前解決を行いたいからです。プライベートエンドポイントは Azure のサービスにプライベートで接続できるためのネットワークインターフェイスのことです。プライベートエンドポイント作成時にプライベート DNS が構成できます。Azure Open AI はパブリックからでも通信を行うことはできますが、Azure プライベート DNS ゾーンは仮想ネットワーク上のみ適用される DNS サービスです。よって、Azure の仮想ネットワーク上の Azure VM から同じ仮想ネットワーク内にプライベートエンドポイントがデプロイされている Azure Open AI に対して名前解決を行います。

Azure プライベート DNS ゾーンを使用するための準備

まずは、Azure Open AI のリソースを作成します。その際に先ほど説明したように、プライベート DNS ゾーンを参照するために、プライベートな入口からのみ呼べるモデルを構築しようと思います。プライベートエンドポイントと同時に Azure プライベート DNS ゾーンを構成します。DNS が構成されますが、実際の画面は以下の通りです。

画面右側に「プライベート DNS 統合」が確認できます。ここでプライベートエンドポイント作成と同時に、プライベートDNS へのレコード追加を Azure 側で行ってくれます。Azure Open AI 作成後に実際に作成されたプライベート DNS の構成は以下のようになります。

以上のような DNS の構成になります。IP アドレス (プライベート) は 10.100.0.4、ドメインは「2024techblog-aoai」と記載があります。

ドメイン解決をしようとしてみたが…?

それでは、Azure VM から同じ Vnet 内にデプロイされている Azure Open AI のプライベートエンドポイントに対して名前解決を行ってみようと思います。

まずは Vnet にデプロイされている Azure VM へログインします。パブリック IP アドレスを用いてリモートデスクトップ接続でログインしました。

この Azure VM からコマンドプロンプトを使って、Azure Open AI のモデルへリクエストを送ってみようと思います。

あれ?Azure Open AI のモデルから返答が来ませんね。

“Public access is disabled. Please configure private endpoint.” とエラーが出ています。パブリックからのアクセスができないというのは分かります。AOAI にプライベートエンドポイントを作成して、そこからしかアクセスできないようにしたのですから…

なぜこのようなことが起こるのか分からなかったので、調べてみると以下のようなことが分かりました。

プライベート DNS ゾーンの仮想ネットワークへのリンク

どうやらプライベート DNS ゾーンを作成するだけではダメらしく、作成したプライベート DNS ゾーンをどの仮想ネットワークで使うかをリンクさせなくてはいけないようです。

使用するプライベート DNS ゾーンを見てみると、たしかに仮想ネットワークがリンク付けされていません。なので、ここから使用する予定の仮想ネットワークをリンク付けしていこうと思います。

リンク付けを行いましたので、再度 Azure VM のコマンドプロンプトから Azure Open AI のモデルに対して、curl コマンドを実行してみようと思いますが、まずは疎通ができているか確認してみたいので IP アドレスを使って確かめたいと思います。ドメイン名ではなく、IP アドレスを直に指定すれば DNS を使って名前解決を行う必要はないので、プライベート DNS ゾーンを仮想ネットワークにリンクを指定していなくても、Azure Open AI のモデルから回答を得ることができると思います。

やはり、IP アドレスを直に指定すればモデルから回答が得られましたね。つまり通信はできています。次に名前解決ができているか、ドメイン名を指定してモデルへリクエストを行ってみようと思います。

名前解決ができており、Azure Open AI のモデルからちゃんと回答が返って来ました!

実際に nslookup コマンドを使ってプラベート DNS ゾーンが仮想ネットワークリンクがされている場合とされていない場合について確認してみましょう。

されている場合

されていない場合

たしかにプライベート DNS ゾーンが仮想ネットワークにリンクされている場合は名前解決がされていますが、されていない時はうまく名前解決がされておらず、プライベートエンドポイントのプライベート IP アドレスは返って来ません。

ちょっとした備忘録のための知識

168.63.129.16 って…何??

DNS の名前解決を行うために、168.63.129.16 のサーバーに問い合わせを行っていますが、私はこのような設定を入れた覚えがありません…それではこのサーバーの正体は何なのでしょうか??これは Microsoft が保有するパブリック IP アドレスであり、Azure の内部で利用可能な DNS フルリゾルバーです。このアドレスはパブリックのインターネットには公開されておらず、Azure のリソース以外からは接続できないようになっているようです。このアドレス 168.63.129.16 は Vnet の DNS の設定で参照が可能です (Azure VM の NIC の DNS の設定でも参照する DNS の設定が可能) 。

DNS サーバーの設定で、上の画像が Vnet の DNS の設定で、下の画像が Azure VM に紐づいている NIC の DNS の設定です。今回の Azure VM の DNS の参照先は「仮想ネットワークから継承する」を選択しているので、仮想ネットワークが参照する DNS サーバーになります。そして仮想ネットワークが参照する DNS サーバーは「既定 (Azure 提供)」が選択されていますが、これがまさに 168.63.129.16 のことです。このサーバー (168.63.129.16) が Vnet にリンクされている Azure プライベート DNS ゾーンの名前解決も行ってくれています。

プライベート DNS を VNet にリンクしていない場合、レコードを参照できないので、プライベートエンドポイントの プライベート IP アドレスに名前解決を行えず、代わりにインターネット経由で再帰問い合わせを行ってしまい、結果として対象のリソースのパブリックエンドポイントの IP アドレスやドメイン名が応答されてしまっている状態がさきほどの名前解決ができていない事象になります。

まとめ

今回は、Azure のサービスの1つである Azure プライベート DNS ゾーンの説明や実際の使い方について紹介しました。

レコードを作成するだけでは機能せず、仮想ネットワークにリンクさせることが必要ですので、使うときに DNS の名前解決ができていない時にはこの設定ができているかをご確認ください。

また、168.63.129.16 の IP アドレスが Azure の内部でデフォルトで利用可能な DNS サーバーであることも今回の検証を通じて自分自身にとっても勉強になりました。次は Azure の仮想ネットワーク上の VM からではなく、オンプレの VM からプライベート DNS ゾーンを参照して、名前解決を行う方法についてご紹介しようと思います。「普通の DNS と何が違うの?」、「実際の画面を見てみたい!」という方に少しでも参考になれば幸いです。

それでは、ソフトバンクアドベントカレンダー2024、14日目もおたのしみに!

関連サービス

Microsoft Azureは、Microsoftが提供するパブリッククラウドプラットフォームです。コンピューティングからデータ保存、アプリケーションなどのリソースを、必要な時に必要な量だけ従量課金で利用することができます。

おすすめの記事

条件に該当するページがございません