2009-08
19
21:15:00
Mac版OperaでISPによってはGoogleなどへの接続がエラーになる件


実は最近プロバイダーとしてBB@Exciteを使用し出しています。
これまでは長らくDTIを使っていたのですがフレッツ光にしてから?やけにYouTubeなどの接続が遅く再生までに一分程度の動画でも五分以上待たされる始末。
試しにプロバイダーをBB@Exciteに替える(うちはブロードバンドルーターで接続しているので、複数のプロバイダーを簡単に切り替えられるのです)と待ち時間は10秒ぐらいになりました(^_^)v
10年使ってきましたけどこれはもうDTI解約だなーと思っていたんですが、つい最近問題を発見。
何故かMac miniのOperaでだけGoogleドメインのサーバーへの接続が行えないのです。例えばGMailも全滅。
Googleが軒並み使えないネット生活というのはかなり辛いです・・・。
しかし確認してみると同じMac miniでもSafariやFirefoxでは問題なし。またWindowsマシンのOperaでも問題ありません。
つまりMacのOperaが少なくとも関係している問題らしい。
僕はMacでもWindowsでもOpera10 Beta3を使用していたのでそのせいかな?とも思っていたんですがいろいろ検索してみるとどうやらMac版のOperaではIPv6関係のDNSに問題があることが以前から話題になっていたみたい。因みに9.6系でもある問題のようですね。
【帰ってきた】Opera【9.5】
googleサーバのほとんどすべてがみれなくなりました


上記を読むと「プロバイダーによってはGoogleがIPv6アドレスをDNSに提供しているのでIPv6アドレスを解決してしまい、IPv6アドレスへ接続しに行くがフレッツではIPv6で通信できないのでエラーになる」とされています。
実際Mac OSXでIPv6を無効にしたら直った人もいるようですが、全く改善しない人もいる模様。
またGoogleだけの問題ではなくて、例えばwww.au.kddi.comなどでも発生するようです。
しかし上記で納得できないのは、現状ではほとんどのプロバイダーのDNSでIPv6名前解決はサポートし出しているはずなので(IPv6でのアクセスはほぼ使えないんですが、DNSでの名前解決だけは準備が進められてきています)、多くのサイトで問題なく動作している、また他のブラウザやWindowsでは問題ないというのはちょっと腑に落ちません。
僕も試しにIPv6をOSX設定で無効にしてみたんですが、全く変化なしでした。
しかしプロバイダー接続をDTIに戻してみると正常に接続できるようになりました。またBB@ExciteのままでもIPアドレスを直接指定すると正常に繋がります。
こうした状況からするとほぼOperaとDNS名前解決での何らかの問題であることは間違いなさそうだったので、正常ケース(DTIに接続した場合)と異常ケース(BB@Excite)とでバケットをキャプチャして比較してみました。それが以下のスクリーンショットです。
■異常ケース(BB@Excite)
Opera-Error1.png
Opera-Error2.png
■正常ケース(DTI)
Opera-OK1.png
Opera-OK2.png
Opera-OK3.png
Opera-OK4.png
因みにブロードバンドルーター経由なので相手先のDNSサーバーが192.168.0.1というローカルアドレスになっていますが、DNSサーバーからの応答がプロバイダーのDNS直接だった場合でもほぼ同じことはdigコマンドで確認済みです。
こうして見ると、まず異常ケースではいきなりAAAA(クアッドA: IPv6のIPアドレス)レコード要求だけ始めています。そしてAnswerレコードに目的となるwww.google.comのIPv6アドレスを発見してしまいそこへ接続しようとしてエラーになっているようです。
これが今回の障害の根本原因のようですね。なるほど、ネット情報の通りのようです。
しかし実はこの時MacではIPv6設定は無効にしています。そして何故プロバイダーによっては正常な場合もあるかが問題です。
正常ケースの場合、同じくAAAAレコード解決要求のみ行っていますが、応答にはAAAAレコードは含まれず、CNAMEの解決先となるl.google.comドメインのSOAレコードのみ返しています。
ここでOperaははっと我に返ったように次にAレコードの要求を行います。そしてAレコード、つまりIPv4アドレスを入手して正常にアクセスできているようです。
少し補足すると、まず正常時にSOAレコードを返すのはDNS的にはまっとうな応答です。つまり解決先は別のサブドメインだったのでそのDNS情報のみを返しているわけです。
通常はその後そのサブドメインのDNSへ接続して、必要があればまた次のDNSへ・・と繰り返して最終的な目的の名前解決を行います。いわゆるDNSのリカーシブ動作ですね。
しかしそのDNSサーバーが他のドメインであろうともその情報を知っていたらまとめて返しても構いません。つまりショートカットですね。これが異常時(BB@Excite)の動作です。ただし完全に名前を返すことを通常求められるプロバイダー提供のDNSサーバーとしては、こちらの方が好ましいとも言えます。
こうしてみると問題の根本は

  1. OperaがIPv6アドレスしか解決しようとしてくれない
  2. 同じくOperaがローカルOSでIPv6を無効にしていることを検知してくれない
  3. 最初の名前解決にIPが含まれないと(リカーシブな動作を行わず、DNSサーバーにフルリゾルバとしての役割のみ期待しているから?)それを失敗と見なしてIPv4名前解決でリトライして、へたにそれでうまく行く場合もあるので問題の顕在化を阻害している

というところに絞られそうです。
ただこれだとOSでIPv6を無効にするとうまく行った、という報告の理由がよく分からないんですが。
因みにSafariでは最初にAレコードとAAAAレコードを両方名前解決しているので、その後OSでIPv6が有効か無効かやネットワークアダプタにIPv6が振られているかなどの状況を元に切り替えている?ようです。
まずはOperaのバグと言っていいかと思うんですが、これを回避するには本当はOpera本体でのIPv6機能を無効にできるといいと思うんですが、現時点ではその方法が発見できませんでした。。。
当面の回避策としては、プロキシサーバーを使うか、あるいは10であればOpera Turboを使用する方法もあります。
日常的に利用できるプロキシサーバーを知らないのでOpera Turboで試してとりあえずBB@Exciteでも正常にアクセスできるようになりました。でも全サイトで適用されて画像が圧縮されるので汚くなってしまうので、何だか嫌だなー。うむ。
結局はOperaが直ってくれるのが一番ですし根本原因を掴んだ気がするので、後でバグレポート上げておきます。

Mac版OperaでISPによってはGoogleなどへの接続がエラーになる件」への3件のフィードバック

  1. Windows 7上でoperaを使っていますが、ここ1年ほど同じ問題に悩まされてきました。プロバイダはbb.exciteです。
    ひょっとして、と思い、ネットワーク設定でIPv6をオフにしたところ、みごとに問題が解決しました。ありがとうございます。
    (10.50 β です)。ご報告まで

    1. Mac版での話ではありましたが、以前試した際にはWindows版では問題なかったように見えたのですが環境にも依るのでしょうかね。お役に立てて良かったです。
      でもIPv4枯渇とかいよいよい騒いでいる時に、この不安定さではちょっと困りますよねー、共存ぐらい考えてくれないと。

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)