前回の記事:IPv6の罠。: 約定期blog GS
今回、ルータを新調していろいろテストしてて、またIPv6問題が出たので詳しく調べてみた。
やっぱり、SHV32自体がIPv6無効化されてるので間違いないっぽい(公式に確認取ってないけど)。
■IPアドレス割り当て状況
MyIP(https://play.google.com/store/apps/details?id=radonsoft.net.myip)で確認してみる
KYL21(DIGNO S)
SHV32(AQUOS SERIE)
TBi11M(XOOM)
SHV32だけ、何故かリンクローカルアドレス(fe80::/64)になってる。
IPv4でいうところの169.254.0.0/16といえば「あ~...」ってなる人もいるはず。よくトラブルでDHCP割り当てが失敗したときに見かけるアドレス。
では、本当にグローバルアドレスが振られていないのかというと、Wi-Fiの詳細設定から確認すると確かに振られてるし、PCからpingを打つと届く。
■原因の推測
どうやら、OSレベルで手が入れられて、IPv6が部分的に殺されてるっぽい。
総務省|IPv6によるインターネット利用高度化に関する研究会|IPv6によるインターネットの利用高度化に関する研究会第25回会合議事概要
上記議事概要を「Android」で検索すると、国内キャリアから発売される端末でIPv6が無効化されてるような記述を発見。
おそらくフレッツ等のISP閉域網対策だと思うけど、そのせいで逆にグローバルIPv6環境だとトラブルが起きてる。
それでも、通常は
グローバル網のDNSで名前解決(AAAA、Aレコード取得)→端末がIPv6で通信しようとする→端末でブロック→すぐにIPv4にフォールバック→遅延が起きない→OK!
ってなるはずだけど、ConnectBotやIPSTの場合、最初の時点でAAAAレコードのみ取得してしまい、フォールバックできずにエラーになってるんだと思う。
Chromeも、ipv6.google.comなどのIPv6専用ホストだとエラーになるけど。www.kame.netとかv6pc.jpとかmcrn.jpとかのIPv6/IPv4両対応ホストだとv4のほうで接続できるし。
そもそも、閉域網対策でv6が殺されてなくても、何らかの理由でv6が繋がらない状況だと、上記のようなフォールバックに失敗するアプリはエラーになってしまうはず。
■結論
・SHV32固有というか、国内端末の問題(海外メーカーでも国内販売のはひっかかるかも)
・IPv6アドレス割り当て+IPv6有効ホストへの接続で発生
・アプリ側が適切にフォールバックしてないのが悪い
コメント