東方の海

サブカル考察など。

こんにちは。受験生の皆さまはセンター試験お疲れ様です。

さて、このたび、一部ネットワークにおいてGoogleサービス(検索、ドライブ、Gmail、Youtube)とTwitter画像サービスについて、ずっと通信に障害が生じている状況のため、状況の改善を試みました。

生じている問題は以下の通り。
・Googleサービス(検索、ドライブ、Gmail、Youtube)との接続に時間がかかるもしくは失敗する。
・特に、Googleドライブとの接続が不安定であり、リアルタイム編集はほぼ常に「再接続しています...」に類する状態である。
・Twitterで本文は取得できるが画像や動画等のメディアの取得に時間がかかるもしくは失敗する。

以上の問題に関して見出された原因は以下。
・パソコンもAndroidスマートフォンもIPv6が優先となっており、切り替え待機時間は20秒ほどである。
・Google社とTwitter社が、日本の特定のプロバイダーからのIPv6アクセスを拒否している(NG情報すら返答しない)。
・最初にIPv6でpingを送るがpongがこないので、20秒ほど待機してからIPv4でpingを送り正常通信が可能となる。
・そのため待機時間分の遅延が発生し、該当サービスとの正常な通信が不可能である。

Google社とTwitter社が、日本の特定のプロバイダーからのIPv6アクセスを拒否している経緯については、以下のページが参考になります。
「日本では壊れたIPv6が広まっている」とGoogle、IPv6接続お断りの方針 -INTERNET Watch
この現象は、2012年頃からずっと続いています。拒否の理由は、NTT東西のネットワーク網が形式上IPv6を送信できるのに実質は使用不可であり、フォールバック(IPv6で待機してタイムアウトしてからIPv4に切り替えて通信を行う)が発生していたからである(つまりネットワークが不具合を抱えていたともいえる)。これを契機にNTT東西をはじめ多くの日本のプロバイダーが「IPv6無効化リスト入り」し、いまだにIPv6に正式対応していないためにその後も現在までリスト入りが解除されていないのです。

対処法
以下のリンクを参考にしました。
IPv4をIPv6より優先させる - Nishiakashi’s Blog
IPv6の設定は、有効・無効どっちが良いの?
「IPv6無効設定」はもう古い?IPv6を有効にしたままIPv4の優先順位を上げる設定
IPv4 を IPv6 より優先にする
もりもりゲームブログ IPv4のIPアドレスの優先順位を、IPv6よりも高く変更する方法
方法は、「IPv6を無効化する」「IPv4の優先度をIPv6やその他のプロトコルよりも最高にする」の2通りありましたが、後者を選ぶことにしました。

IPv6を無効化する方法(実行は責任を負いません、自己責任で判断してください)
「コントロールパネル」>「ネットワークとインターネット」>「ネットワークと共有センター」or「ネットワークの状態とタスクの表示」>「アダプターの設定の変更」>該当するネットワークのアイコンで右クリック>「プロパティ」
「ネットワーク」タブ>「インターネット プロトコル バージョン 6 (TCP/IPv6)」をチェック解除
OKを押してPCを再起動

IPv4を優先する方法
従来:Windowsキー>「アクセサリ」か「システムツール」のフォルダにある「コマンドプロンプト」を見つける
Windows10:Windowsキー>「cmd」と入力>「コマンドプロンプト」が検索結果に表示される
>右クリック>管理者権限で起動
netsh interface ipv6 show prefixpoliciesを実行
特に何もいじっていなければ、ふつう、
優先順位 ラベル プレフィックス
  50 0 ::1/128
  40 1 ::/0
  35 4 ffff:0:0/96
  30 2 2002::/16
   5 5 2001::/32
   3 13 fc00::/7
   1 11 fec0::/10
   1 12 3ffe::/16
   1 3 ::/96
と表示されるはず。IPv4は「35 4 ffff:0:0/96」なので、
netsh interface ipv6 set prefixpolicy ::ffff:0:0/96 55 4を実行
するだけで、再起動せずともOK。
設定を元に戻すには、
netsh interface ipv6 resetもしくはnetsh interface ipv6 set prefixpolicy ::ffff:0:0/96 35 4を実行
すれば元に戻るはずです。前者は初期化なので注意。

以上により、WindowsコンピューターではまずIPv4で通信されるようになって該当サービスにすぐ接続できるようになり、問題は解決しました。

Androidスマートフォンについて。以下、root化について触れますが、当ブログはroot化を推奨するわけではありません。また、当ブログはroot化にあたり生じた利益もしくは損害について一切責任を負いません。以上のことについて了解いただけない場合は、これ以降を読まないでください。

IPv4/IPv6の切り替えをするには基本的にはroot化をしてからUSBデバッグモードからのコマンド送信(もしくは無料の切り替えアプリのインストールと実行)が必要になるため、これについては諦めました。
ただ、「設定」>「無線とネットワーク」>「その他の設定」>「モバイルネットワーク」>「アクセスポイント名」>該当するAPNをクリック>「APNプロトコル」で、「IPv4」「IPv4/IPv6」を切り替えられる可能性があります。ただし、日本の携帯電話キャリアから発行されるスマートフォンをはじめ多くの端末ではここはグレーアウトしていて選択できないと考えられます(上記の諦めた方法においてroot化が必要なのはこれを書き換えるためです)。これはSIMではなく端末側で選択できなくしているだけであり、実際はもちろん両方のプロトコルに対応しています。

以上、レポートでした。簡潔に言うと、「IPv6だとサービス側が拒否しちゃうので基本的にIPv4で通信するように設定しよう」ということです。Windowsコンピューターは全て可能、Androidスマートフォンはroot化時のみ可能、iPhoneは不明です。
なお、IPv6に正式対応してリスト入り解除されたときには、この設定は不要となるどころかIPv6でないためにデメリットが大きくなる可能性があるので、そのときは設定を元に戻すことをおすすめします。

日本のプロバイダーは早くIPv6に正式対応してほしいですね、そして日本の携帯電話キャリアとスマートフォンメーカーはわざとIPv4優先できないようにしているのをやめてほしいです(IPv4優先対応を商売戦略としているわけでもなし、実質的に国益を損なっているだけの可能性があります、もちろん一部当事者の商売戦略とするなら実質義務化されたSIMロック解除と同様に競争の阻害要因となる可能性がありますが)。

追記(2016年2月14日)
2/14頃、再びネット接続に不穏な動きを感じたためコマンドプロンプトでnetsh interface ipv6 show prefixpoliciesを見てみたところ、
  55 4 ffff:0:0/96
以外が表示されなくなってしまっていた。おそらくgroup policy client破損の影響だろう。まったく困ったものだ。リセットをかけてIPv6を再有効にしてみても同様で、いまだ直らず。
Windowsのシステム修復機能を試してみよう
を参考にしてシステム修復を試みたところ、4ファイルだけ修復不可能でした。そのうちまたWindows10をWindows8からの無償アップグレード期間が終了する直前にクリーンインストールする必要があるかもしれないですね。
ただ、今回の件に関しては解決法が見つかりました。prefixpoliciesが読み込めないのではなく削除されているのだとすれば、変更ではなく追加すればいいのではないか!?と思って追加したら追加できました。
インターフェイス IPv6 のための Netsh コマンド
を参考に、
  netsh interface IPv6 add prefixpolicy ::1/128 50 1
  netsh interface IPv6 add prefixpolicy ::/0 40 1
  netsh interface IPv6 add prefixpolicy 2002::/16 30 2
  netsh interface IPv6 add prefixpolicy ::/96 20 3
  netsh interface IPv6 add prefixpolicy 2001::/32 5 5
を実行し、netsh interface ipv6 show prefixpoliciesを実行したところ、無事にIPv4を優先したときの状態に戻っていることが確認できました!これで通信も大丈夫なはず。また何かあったら追記します。

今回の件を受けて、Windowsのシステムファイルやレジストリは手動で直接いじるようなことをしていなくてもすぐに破損するという認識を持ちました。これはどうしようもないので、システムデータは気付いたら修復するしかないとしても、ユーザーデータは消えたら復活できないので、バックアップはこまめにとっておきたいですね。

追記(2016年3月23日)
母艦のWindows10でもいつの間にか55 4 ffff:0:0/96以外が表示されなくなってしまっていた。どうやら、特定のWindowsアップデートをインストールすると勝手にこうなってしまう可能性が高いです。このため、Googleサービスへの接続が突然遅くなったと感じたら、疑ってnetsh interface ipv6 show prefixpoliciesで確かめてみるとよいでしょう。このような不具合はどうにかしてほしいですね……。
スポンサーサイト
2016.01.20 23:24 | コンピューター | トラックバック(-) | コメント(0) |