Safari DNSラウンドロビンに対応していますか?
Safariで接続するサーバのサービス名(名前)解決をDNSで行っております。
その際、単一のサービス名に対し複数のAレコードを記述する、いわゆるDNSラウンドロビンでの
運用を想定しております。
この場合、Safariの動作として、DNSから複数のIPアドレスが返されても
それぞれ応答可能なサーバに対して接続する仕様でしょうか?
iPad Pro Wi-Fi, iOS 11.2.5
Apple の脅威の通知と金銭目当てのスパイウェアへの対策について
Apple の脅威の通知と金銭目当てのスパイウェアへの対策についてが公開されました。
Apple の脅威の通知と金銭目当てのスパイウェアへの対策についてが公開されました。
Safariで接続するサーバのサービス名(名前)解決をDNSで行っております。
その際、単一のサービス名に対し複数のAレコードを記述する、いわゆるDNSラウンドロビンでの
運用を想定しております。
この場合、Safariの動作として、DNSから複数のIPアドレスが返されても
それぞれ応答可能なサーバに対して接続する仕様でしょうか?
iPad Pro Wi-Fi, iOS 11.2.5
栄治272 による書き込み:
...
この場合、Safariの動作として、DNSから複数のIPアドレスが返されても
それぞれ応答可能なサーバに対して接続する仕様でしょうか?
私の調べた限りでは(少なくともEl Capitan以降では)「はい」ということになります。
基本的にSafari自体はアドレスへの変換を行わず、URLを指定するOSの機能を使用します。
そのOSの機能は、指定されたホストに対する問い合わせで複数のアドレスが得られたときは以下のような動作を行うようです。
# 話を簡単にするため、キャッシュ等は考慮していません。
ですので、渡されたアドレスの中に応答しないものがあれば、その応答時間は無限大となるので応答してきたホストから選択されることになり、「応答可能なサーバに対して接続」することになります。
これは、下のリンクにあるEl Capitanでの説明を私なりに解釈したものです。
大筋では間違ってはいないつもりですが、不安がある場合は原文(英語)を参照してください。
High Sierraでもまったく同じであるとは限りませんが、大きく異なることはないと思います。
[v6ops] Apple and IPv6 - Happy Eyeballs
補足1:DNSサーバ側の(予想される)動作
あるホストにA、B、Cの3個のアドレスを定義した場合
最初の問い合わせには、A、B、C を返す。
次の問い合わせには、B、C、A を返す。
その次の問い合わせには、C、A、B を返す。
補足2:検証例
hostコマンドでAppleのソフトウエア配布で使用されるサーバのアドレスを10秒あけて2回問い合わせています。
それぞれ2個のアドレスを得ていますが、最初は 〜.202と〜.207で、次は〜.201と〜202になっています。
$ host swcdn.apple.com ; sleep 10 ; host swcdn.apple.com
swcdn.apple.com is an alias for swcdn.apple.com.akadns.net.
swcdn.apple.com.akadns.net is an alias for swcdn.g.aaplimg.com.
swcdn.g.aaplimg.com has address 17.253.71.202
swcdn.g.aaplimg.com has address 17.253.69.207
swcdn.apple.com is an alias for swcdn.apple.com.akadns.net.
swcdn.apple.com.akadns.net is an alias for swcdn.g.aaplimg.com.
swcdn.g.aaplimg.com has address 17.253.71.201
swcdn.g.aaplimg.com has address 17.253.71.202
ここで行ったのは問い合わせ結果の表示だけですが、ソフトウェアアップデートが問題なく行えていることで動作検証になると考えます。
補足3:RFC 3484
https://www.ietf.org/rfc/rfc3484.txt
Default Address Selection for Internet Protocol version 6 (IPv6)
他のサイトの情報などによると、もともと複数のアドレスから一つを選択する基準は標準というものがなく、ホスト(OS)ごとに違っていたりした(例:最初に得たアドレスを無条件で選択、等)のをネットワーク的に近いホストを選択するようにしようのいうことのようです。
以上、ご参考まで。
そんな心配無用では?
DNSが返してくるアドレス以外にアクセスするブラウザなんてないのでは。ブラウザに限らずどんなネットワークアプリでも同じと思うけど。ただ、キャッシュは持ってますので、キャッシュからコンテンツを表示することはあるでしょう。しかしこれはSafariに限らずどのブラウザでも同じ。何度か更新すれば、DNSが指示するアドレスからコンテンツを更新します。
Safari DNSラウンドロビンに対応していますか?