Technically Impossible

Lets look at the weak link in your statement. Anything "Technically Impossible" basically means we haven't figured out how yet.

iCloudでのConneciton Errorに対する解決案

web版iCloudを利用しようとしても、冒頭の画面が表示され、接続できないことがある。Appleのサービス提供に問題がなければ、原因はユーザー自身の環境にある。

Appleの公式回答*1では、sign inの問題については触れられているものの、その一歩手前の、接続にまつわる問題については触れられていない。
この問題について、よく提案される解決案*2が、次の対応だ。

  1. IPv4のネットワーク・インタフェイスのDNSとして、Google DNSを設定し、
  2. IPv6のネットワーク・インタフェイスをoffにする、

どちらも解決案の一つにはなり得るのだが、決定打ではない。それは問題の影響範囲だ。問題の原因がDNSの名前解決であるならば、PCにインストールされている全てのブラウザでiCloudが利用できなくなるだろう。しかし、あるブラウザでは問題がないのに、別のブラウザでだけ問題が発生する場合があるのだ。例えば、Chrome安定板ではiCloudが動作するのに、Chrome Canaryでは動作しない、といった具合だ。
IPv6においても同じことが言える。

このような時、Canary版自体の問題を疑うことだろう。これは一見、論理的には正しい対応ではあるのだが、この問題に関して言うと誤ったアプローチになり得る。なぜなら、原因はやはり名前解決にあるからだ。そこで問題のあるブラウザにだけ影響する原因を特定する必要がある。

この投稿では、この問題に対処するための解決案を提示する。端的には、iCloudが依存しているドメインについて、

  • 名前解決の見直し、
  • 接続阻害要因の特定

することだ。ただし以上の事情により、個別事案に共通した対応手順を示すことができない。まず問題の範囲を特定し、提示している解決案を考慮の上で、それぞれに必要な対応を実施してほしい。

前提知識 - web版iCloudが参照するドメイン

web版iCloudは、次のドメイン配下のリソースを参照する必要がある。注意したいのが「*」だ。つまり、それぞれのドメイン配下の、あらゆるサブ・ドメインが提供するリソースを参照する必要がある。


domain for connect

*.apple.com
*.apple-mapkit.com
*.cdn-apple.com
*.icloud.com
*.icloud.com.cn
*.icloud-content.com
*.icloud-content.com.cn



domain for font

*.apple.com
*.cdn-apple.com
*.icloud.com
*.icloud.com.cn



domain for form

*.apple.com
*.icloud.com
*.icloud.com.cn



domain for frame

*.apple.com
*.icloud.com
*.icloud.com.cn
*.icloud-content.com
*.icloud-content.com.cn
*.icloud-sandbox.com



domain for image

*.apple.com
*.apple-mapkit.com
*.cdn-apple.com
*.icloud.com
*.icloud.com.cn
*.icloud-content.com
*.icloud-content.com.cn



domain for media

*.apple.com
*.cdn-apple.com
*.icloud.com
*.icloud.com.cn
*.icloud-content.com
*.icloud-content.com.cn



domain for script

*.apple.com
*.apple-cloudkit.com
*.cdn-apple.com



domain for style

*.apple.com

今回は、iCloudの接続に問題があるので、「connect」のドメインに注目する。特に次のサブ・ドメインだ。

appleid.cdn-apple.com

以下の解決案では、このサブドメインが正常に名前解決できるようになることを意図している。

解決案

まず問題の範囲を特定する。先に述べたように、PC上の全てのブラウザでiCloudが利用できないのか、一部のブラウザで利用できないのか。

全てのブラウザで利用できない場合

  • hostsファイルの確認
  • DNSの確認
  • インターネット・セキュリティ・ソフトウェアの確認

特定のブラウザで利用できない場合

いずれの場合においても、ドメインの名前解決が正常に機能するかだけでなく、ブラック・リスト的にサブ・ドメインの参照を明示的に排除していないかも確認する必要がある。

hostsファイルの確認

名前解決においては、DNSよりもhostsファイルが優先される。仮にDNSが正常に名前解決できたとしても、hostsファイルに参照を妨げる設定があれば、参照すべきサブドメインに到達できないことがある。

特別な目的がない限り、「appleid.cdn-apple.com」のようなサブドメインは、DNSで名前解決されるべきだ。言い換えると、特別な目的がない限り、hostsファイルの記録に「appleid.cdn-apple.com」を含めるべきではない。もしあれば、該当行を削除するか、コメント化することだ。

DNSの確認

どのようなDNSを設定しているかに関わらず、特定のサブ・ドメインが正常に名前解決できない可能性はある。例えば、広告ブロックのようなセキュリティ対策付きのDNSサービスを利用する場合、特定のサブ・ドメインへの参照を妨げていることがある。

「appleid.cdn-apple.com」は正常に名前解決できているだろうか。できていなければ、名前解決可能なDNSを登録する必要がある。

インターネット・セキュリティ・ソフトウェアの確認

Firewall機能が、特定ドメインへの接続を妨げている可能性がある。「appleid.cdn-apple.com」への接続がブロックされてはいないだろうか。

簡単なのは、一度Firewallをオフにして、iCloudに接続してみることだ。もし接続できれば、再度Firewallをオンにして、「appleid.cdn-apple.com」に関連するポリシーを探し、削除する。

拡張機能の確認

ブラウザ拡張としてインストールした広告ブロックが、特定ドメインへの接続を妨げている可能性がある。「appleid.cdn-apple.com」への接続がブロックされてはいないだろうか。

簡単なのは、拡張機能を一つずつオフにして、iCloudに接続してみることだ。もし接続できれば、その拡張機能が原因だ。拡張機能を停止するか、削除する、あるいは開発者へ改善依頼するとよい。