Azure では仮想ネットワーク (VNet) 内に配置されたリソースの名前解決を行う方法として、以下の 4 つの方法が用意されています。
- Azure が提供する名前解決
-
プライベート DNS ゾーンによる名前解決
-
カスタム DNS サーバーによる名前解決
-
DNS Private Resolver による名前解決
本稿では、「Azure が提供する名前解決」の動作についてAzure 仮想マシン (VM) に注目して確認します。
同じ VNet に配置された VM を名前解決する
次の構成を用意して、同じ VNet に配置された VM の名前解決動作を確認します。
Windows VM からの名前解決とその設定を確認する
Windows VM
win-vm-1
から正引き/逆引きでの名前解決動作を確認してみます。正引きの名前解決
正引き (前方参照) の名前解決を行うと、Azure 提供 DNS
168.63.129.16
が参照され各 VM のホスト名に対応する IP アドレスを応答します。- ホスト名で要求すると自動的に DNS サフィックス
*.internal.cloudapp.net
が付与されて名前解決が行われています。 - この前方参照ゾーン
*.internal.cloudapp.net
は特にこちらでは構成しておらず MS によって自動作成され管理されています。
逆引きの名前解決
逆引きの名前解決を行うと、こちらも Azure 提供 DNS
168.63.129.16
が参照され各 VM の IP アドレスに対応するホスト名を応答します。- IP アドレスで要求すると対応する逆引きレコード
x.x.x.x.in-addr.arpa
が参照されて名前解決が行われています。 - この逆引きレコード
x.x.x.x.in-addr.arpa
は特にこちらでは構成しておらず MS によって自動作成され管理されています。
DNS 参照設定の確認
Windows 上で DNS 参照設定がどのように構成されているかを確認します。
まずは、NIC の設定がどのように構成されているか確認します。
- IP アドレスや DNS 設定は DHCP から自動的に配布されたものを利用する設定になっています。
- DNS サフィックスは明示的に設定されていません。
続いて、 NIC に実際に反映された設定を確認します。
- IP アドレスや DNS 設定は Azure 提供 DHCP
168.63.129.16
から配布されており、自動的に設定されています。 - DNS サフィックスも NIC の
Connection-specific DNS Suffix
に MS 管理のゾーン*.internal.cloudapp.net
が DHCP から配布されています。 Windows IP Configuration
のDNS Suffix Search List
にConnection-specific DNS Suffix
の値が反映されています。
Linux VM からの名前解決とその設定を確認する
Linux VM
lin-vm-1
から正引き/逆引きでの名前解決を確認してみます。正引きの名前解決
正引き(前方参照)の名前解決を行うと、スタブリゾルバ
127.0.0.53#53
が参照され各 VM のホスト名に対応する IP アドレスを応答します。- ホスト名で要求すると自動的に DNS サフィックス
*.internal.cloudapp.net
が付与されて名前解決が行われています。 - この前方参照ゾーン
*.internal.cloudapp.net
は特にこちらでは構成しておらず MS によって自動作成され管理されています。
逆引きの名前解決
逆引きの名前解決を行うと、こちらもスタブリゾルバ
127.0.0.53#53
が参照され各 VM の IP アドレスに対応するホスト名を応答します。- IP アドレスで要求すると対応する逆引き参照ゾーン
x.x.x.x.in-addr.arpa
が参照されて名前解決が行われています。 - この逆引き参照ゾーン
x.x.x.x.in-addr.arpa
は特にこちらでは構成しておらず MS によって自動作成され管理されています。
DNS 参照設定の確認
Linux (Ubuntu 24.04 LTS) 上で DNS 参照設定がどのように構成されているかを確認します。
まずは、NIC の設定がどのように構成されているか確認します。
- IP アドレスや DNS 設定は、DHCP から自動的に配布されたものを利用する設定になっています。
- DNS サフィックスは明示的に設定されていません。
続いて、 NIC に実際に反映された設定を確認します。
- IP アドレスや DNS 設定は Azure 提供 DHCP
168.63.129.16
から配布されており、自動的に設定されています。 - DNS サフィックスも NIC の
DNS Domain
に MS 管理のゾーン*.internal.cloudapp.net
が DHCP から配布されています。 /etc/resolv.conf
のsearch
にDNS Domain
の値が反映されています。
DNS レコードの更新動作を確認する
新しい VM を作成する
新しい VM を作成した際に DNS レコードが自動的に登録されるかを確認します。
win-subnet
に新しい Windows VMwin-vm-2
を作成するlin-subnet
に新しい Linux VMlin-vm-2
を作成する
Windows VM win-vm-2
のレコード
- 正引き/逆引きともに自動的にレコードが追加されます。
Linux VM lin-vm-2
のレコード
- 正引き/逆引きともに自動的にレコードが追加されます。
IP アドレスを変更する
既存の VM の IP アドレスを変更した際に、DNS レコードが自動的に更新されるかを確認します。
- Windows VM
win-vm-2
の IP アドレスを10.1.0.5
から10.1.0.15
に変更する - Linux VM
lin-vm-2
の IP アドレスを10.1.1.5
から10.1.1.15
に変更する
Windows VM win-vm-2
のレコード
- 正引き/逆引きともに自動的にレコードが更新されます。
Linux VM lin-vm-2
のレコード
- 正引き/逆引きともに自動的にレコードが更新されます。
ホスト名を変更する
既存の VM のホスト名を変更した際に、DNS レコードが自動的に更新されるかを確認します。
- Windows VM
win-vm-2
のホスト名をwin-vm-2
からwin-vm-2x
に変更する - Linux VM
lin-vm-2
のホスト名をlin-vm-2
からlin-vm-2x
に変更する
Windows VM win-vm-2
のレコード
- 正引き/逆引きともに自動的にレコードが更新されます。(要再起動)
Linux VM lin-vm-2
のレコード
- 正引き/逆引きともに自動的にレコードが更新されます。(要再起動)
仮想マシンを停止する
既存の VM を停止した際に DNS レコードがどうなるかを確認します。
- Windows VM
win-vm-2
を停止する - Linux VM
lin-vm-2
を停止する
Windows VM win-vm-2
のレコード
- 正引き/逆引きともに名前解決ができなくなります。
Linux VM lin-vm-2
のレコード
- 正引き/逆引きともに名前解決ができなくなります。
異なる VNet に配置された VM を名前解決する
次の構成を用意して、異なる VNet に配置された VM の名前解決動作を確認します。
VNet vnet-1 の VM から名前解決する
VNet
vnet-1
の Windows VM win-vm-1
から VNet vnet-1
の名前解決を確認します。- 同じ VNet の VM は正引き/逆引きともに名前解決できます。
VNet
vnet-1
の Windows VM win-vm-1
から VNet vnet-2
の名前解決を確認します。- 異なる VNet の VM は正引き/逆引きともに名前解決できません。
VNet vnet-2 の VM から名前解決する
VNet
vnet-2
の Windows VM win-vm-2
から VNet vnet-2
の名前解決を確認します。- 同じ VNet の VM は正引き/逆引きともに名前解決できます。
VNet
vnet-2
の Windows VM win-vm-2
から VNet vnet-1
の名前解決を確認します。- 異なる VNet の VM は正引き/逆引きともに名前解決できません。
FQDN を指定して名前解決する
VNet 毎に DNS ゾーンが異なることで、ホスト名 (サフィックスなし) での名前解決ができない可能性があるため、FQDN を指定して名前解決してみます。
VNet
vnet-1
の VM win-vm-1
から VNet vnet-2
の VM を FQDN で名前解決してみます。- FQDN 指定でも異なる VNet の VM は名前解決できません。
VNet
vnet-2
の VM win-vm-2
から VNet vnet-1
の VM を FQDN で名前解決してみます。- FQDN 指定でも異なる VNet の VM は名前解決できません。
カスタム DNS サーバーを中継して名前解決を試みる
これまでの確認により、DNS 参照のスコープが VNet であり、異なる VNet 間での名前解決はできないことがわかりました。ここからは蛇足となりますが、異なる VNet に配置した DNS サーバーを中継することで名前解決ができるかを確認します。
VNet vnet-2
の Windows VM を DNS サーバーにして VNet vnet-1
の VM から名前解決する
次のような構成で、VNet を跨いで名前を参照できるか確認します。
VNet
vnet-1
の Windows VM win-vm-1
から VNet vnet-2
の VM の名前解決を行います。- ホスト名 (DNS サフィックスなし) /FQDN ともに名前解決できません。
VNet vnet-2
の Windows VM を DNS サーバーにして VNet vnet-1
の VM から名前解決する
(DNS フォワーダーあり)
次に、すべてのリクエストを Azure 既定の DNS
168.63.129.16
に転送するように DNS サーバーを構成します。続いて、逆引きの名前解決についても確認します。
- DNS サーバー自身の IP アドレスは逆引きに失敗します。
- DNS サーバー以外の VM は、逆引きの名前解決ができます。
恐らく DNS サーバー自身の IP アドレスはフォワードせずに、自身のもつ逆引きゾーンで解決しようとして、ゾーンがないためエラーになる動きをしているように思えますが、本稿の本質ではないためここまでの確認とします。
まとめ
本稿では、Azure が提供する名前解決により、VM の名前解決がどのように行われるかを確認しました。
追加の構成や管理を行うことなく、正引き/逆引きともに名前解決することができ DNS レコードの更新も自動的に行われるため、とても便利で手軽ですが、VNet を跨いで名前解決を行うことができないことや VM 停止時には DNS レコードが参照できないなどの制約があることから、利用可能なシナリオが限定されることがわかりました。
特に、エンタープライズシナリオにおいて一般的な Hub & Spoke 型のネットワークトポロジーにおいては、DNS リゾルバを Hub VNet に配置して集中管理することが一般的ですが、このとき Azure が提供する名前解決では DNS リゾルバが存在する Hub VNet の VM しか名前解決できないことがネックになってくると思います。
Azure が提供する名前解決の特徴や考慮事項は次の公式ドキュメントにもまとめられています。
今回は以上です。次回は、プライベート DNS ゾーンによる VM の名前解決動作を確認してみたいと思います。