🪟

Azure Windows VMに複数のカスタムDNSサーバを指定した場合の挙動を確認

2022/11/28に公開

モチベ

  • DNSサーバ指定できるけど、複数指定したらどうなる?順番に問い合わせる?何順?
  • 下記リンクを見ると、Azure Portal側の設定がゲストOSの構成値として流し込まれるようだ
  • VNETにVM立てて、適当にカスタムDNSサーバにIP入れてみてOSの構成みてみよう

リソース作成

  • Azure VMを作成

  • NSGでRDP許可

  • VNETにカスタムDNSサーバを適当に設定

    • 8.8.8.8: Google DNS
    • 168.63.129.16: Azure DNS
    • 10.x.x.x: 適当なVNET内のDNSサーバを想定(実際はない)
  • VMを再起動

ゲストOSのDNS構成の確認

とりあえず構成がどんな感じで流し込まれてるか確認

  • VMにRDP

  • ネットワーク設定を開く

  • 「Ethernet」->「Network」を選択

  • 「Properties」からDNSの現在の設定値としてVNETに設定したものが流し込まれていることが分かる

  • 「設定」からでは詳細設定ができないため「コントロールパネル」から「Network and Sharing Center」-> 「Ethernet」->「Properties」->「Internet Protocol Version 4(TCP/IPv4)」->「Properties」と進む

  • 自動取得になっているだけで設定されているわけではなさそう

よくわからなかったのでnslookupしてみる

  • nslookupすればDNSサーバわかるんじゃねということで何回かやってみる

    • 全て8.8.8.8に行った
  • 存在していないレコード(とりあえずプライベートIP)についても他のDNSサーバに問い合わせるわけではなく、Non-existent domainが返ってくる

  • Azure Portalで設定した順に問い合わせる感じになっていそう

  • で、優先度の高いDNSサーバが応答なしの場合に次のDNSサーバを参照するようなイメージかも

ということで、架空のDNSサーバに解決させてみる

  • 応答しない状態の再現のために、存在しないDNSサーバのIPを先に書いてみる

  • ポータル上では”先に書く”ということができず、アドレスの小さいものが必ず上に表示されてしまう

  • よって、8.8.8.8を削除する

  • 架空のサーバに解決させてみると、タイムアウトで終了した

  • 念のためブラウザでもアクセスしてみると、アクセスできた

    • nslookupはサーバを指定して問い合わせているだけかも

ということで、架空のDNSサーバのみにしてブラウザからアクセス

  • Azure DNSも消去

  • 想定通りgoogle.comに到達できない

  • Azure PortalからはDNSの優先度の設定ができるわけではないので、この辺の扱いがOS上でやる場合とイメージが違いそう

おわり

確認出来た挙動まとめはこんな感じ。

  • カスタムDNSサーバが複数ある場合、IPアドレスの若いものが既定の問い合わせ先になる
  • nslookupはそれだけだとその既定のDNSのIPにしか投げない
  • ブラウザ利用の場合は既定のDNSサーバが使えない場合に他のDNSサーバに投げる、おそらく若番順
  • そもそも複数のDNSサーバは同じレコードを解決できる必要がある
    • 参照しているサーバでNXDOMAINが返ってきたらそこで終わってしまうので、トラブルのもとになる
  • あとこの辺の既定動作はOSによって異なる

少しずつ理解してきました。

GitHubで編集を提案

Discussion