Fallback to internet on Private DNS Zones を試してみた
はじめに
2024/11/19のAzureアップデートで、Private DNS ZonesのFallback to internetがGAしました。
過去にハマった事がある事象が解決できる機能だったので、試してみました!
Fallback to internet on Private DNS Zonesとは
Private DNS Zoneで名前解決した結果がNXDOMAIN(ゾーンにリソースレコードが存在しない)だった場合に、その問合せをインターネットに再帰する機能です。
2024/11現在はパブリックプレビューとして使用できます。
Makabeさんもポストされていますが、AzureのPaaSを複数VNETに引き込む場合に課題となることがあり、これを解消できる機能です。
試してみる
どのような場合に、この機能が嬉しいのか実際に試してみます。
通常のPrivate Endpointでの名前解決
まずは、ストレージアカウントのBLOBに接続するためのPrivate Endpointを作成し、Private DNS ZoneでPrivate EndpointのIPアドレスで名前解決される構成を作ります。
Virtual Machines(vm001)からBLOB(azpoc001)のエンドポイントをdigしてみます。
$ dig azpoc001.blob.core.windows.net
; <<>> DiG 9.18.28-0ubuntu0.24.04.1-Ubuntu <<>> azpoc001.blob.core.windows.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4185
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;azpoc001.blob.core.windows.net.INA
;; ANSWER SECTION:
azpoc001.blob.core.windows.net.60 INCNAMEazpoc001.privatelink.blob.core.windows.net.
azpoc001.privatelink.blob.core.windows.net. 10 IN A 192.168.0.5
Private EndpointのプライベートIPアドレス(192.168.0.5)で名前解決されます。
通常のPrivate Endpointの動作です。
通常のService Endpointでの名前解決
次に、新しいサブシステムが追加された事にしてVNET(vnet002)とVirtual Machines(vm002)を追加します。
VNET(vnet002)から、先ほどと同じBLOB(azpoc001)に対してService Endpointで接続します。
新しく追加したVirtual Machines(vm002)からBLOB(azpoc001)のエンドポイントをdigしてみます。
$ dig azpoc001.blob.core.windows.net
; <<>> DiG 9.18.28-0ubuntu0.24.04.1-Ubuntu <<>> azpoc001.blob.core.windows.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63695
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;azpoc001.blob.core.windows.net.INA
;; ANSWER SECTION:
azpoc001.blob.core.windows.net.60 INCNAMEazpoc001.privatelink.blob.core.windows.net.
azpoc001.privatelink.blob.core.windows.net. 60 IN CNAMEblob.sjc20prdstr20a.store.core.windows.net.
blob.sjc20prdstr20a.store.core.windows.net. 59 IN A 20.60.80.43
パブリックエンドポイントのパブリックIPアドレス(20.60.80.43)で名前解決されます。
こちらも通常のService Endpointの動作ですね。
Private Endpoint利用時に名前解決できないパターン
新しいストレージアカウント(azpoc002)を追加し、Private Endpointも新しく追加したVNET(vnet002)に設置してみます。
Virtual Machines(vm002)から新しく追加したBLOB(azpoc002)のエンドポイントをdigしてみます。
$ dig azpoc002.blob.core.windows.net
; <<>> DiG 9.18.28-0ubuntu0.24.04.1-Ubuntu <<>> azpoc002.blob.core.windows.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50398
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;azpoc002.blob.core.windows.net.INA
;; ANSWER SECTION:
azpoc002.blob.core.windows.net.60 INCNAMEazpoc002.privatelink.blob.core.windows.net.
azpoc002.privatelink.blob.core.windows.net. 10 IN A 192.168.101.5
Private EndpointのプライベートIPアドレス(192.168.101.5)で名前解決されます。ここまでは問題ありませんね。
続けて、Virtual Machines(vm002)からBLOB(azpoc001)のエンドポイントをdigしてみます。
~$ dig azpoc001.blob.core.windows.net
; <<>> DiG 9.18.28-0ubuntu0.24.04.1-Ubuntu <<>> azpoc001.blob.core.windows.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 64989
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;azpoc001.blob.core.windows.net.INA
;; ANSWER SECTION:
azpoc001.blob.core.windows.net.60 INCNAMEazpoc001.privatelink.blob.core.windows.net.
;; AUTHORITY SECTION:
privatelink.blob.core.windows.net. 10 IN SOAazureprivatedns.net. azureprivatedns-host.microsoft.com. 1 3600 300 2419200 10
前回同様、パブリックエンドポイントのパブリックIPアドレスで名前解決して欲しいところでしたが、
こちらはNXDOMAIN(ゾーンにリソースレコードが存在しない)となりました。
理由はVNET(vnet002)にリンクされたPrivate DNS Zone(privatelink.blob.core.windows.net)にはazpoc002のAレコードしか登録されていないため、azpoc001を名前解決できずNXDOMAINとなっています。
vnet01からBLOB(azpoc002)の名前解決をする際にも同様の事象となります。
Fallback to internet on Private DNS Zonesを有効化して解決
ここで、新機能のFallback to internet on Private DNS Zonesを使います。
Azure PortalでVNET(vnet002)にリンクしているPrivate DNS Zoneを開き、「仮想ネットワークリンク」を選択します。
仮想ネットワークリンクの一覧に「Fallback to Internet」列が表示されており、「Disabled」であることが確認できます。
![]() |
---|
右の鉛筆アイコンをクリックし、仮想ネットワーク リンクの編集画面を開きます。
![]() |
---|
「Enable fallback to internet」のチェックボックスをオンにして保存します。
![]() |
---|
Fallback to internet on Private DNS Zonesが有効化されたので、
再びVirtual Machines(vm002)からBLOB(azpoc001)のエンドポイントをdigしてみます。
$ dig azpoc001.blob.core.windows.net
; <<>> DiG 9.18.28-0ubuntu0.24.04.1-Ubuntu <<>> azpoc001.blob.core.windows.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28568
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;azpoc001.blob.core.windows.net.INA
;; ANSWER SECTION:
azpoc001.blob.core.windows.net.60 INCNAMEazpoc001.privatelink.blob.core.windows.net.
azpoc001.privatelink.blob.core.windows.net. 60 IN CNAMEblob.sjc20prdstr20a.store.core.windows.net.
blob.sjc20prdstr20a.store.core.windows.net. 57 IN A 20.60.80.43
NXDOMAINが解消し、パブリックエンドポイントのパブリックIPアドレスで名前解決されるようになりました!
VNETにリンクされているPrivateEndpoint用のPrivate DNS Zoneに該当レコードがなく名前解決結果がNXDOMAINとなったため、その問合せがインターネットに再帰され、無事名前解決に成功しています!
最後に
Microsoft Ignite 2024期間中に発表された地味だけど、刺さる人には刺さる良いアップデートでした!今後のアップデートも楽しみです!
Discussion