Azure Windows VMに複数のカスタムDNSサーバを指定した場合の挙動を確認
モチベ
- 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によって異なる
少しずつ理解してきました。
Discussion