iijmio meeting 10 端末の動作確認(後編)

29
© 2016 Internet Initiative Japan Inc. 1 株式会社インターネットイニシアティブ 大内 宗徳 IIJmio mtg 10 端末の動作確認方法の紹介(後半)

Upload: techlog-internet-initiative-japan-inc

Post on 14-Apr-2017

18.298 views

Category:

Internet


0 download

TRANSCRIPT

Page 1: IIJmio meeting 10 端末の動作確認(後編)

© 2016 Internet Initiative Japan Inc. 1

株式会社インターネットイニシアティブ

大内 宗徳

IIJmio mtg 10

端末の動作確認方法の紹介(後半)

Page 2: IIJmio meeting 10 端末の動作確認(後編)

© 2016 Internet Initiative Japan Inc. 2

はじめに

• 後半では、標準的な動作確認で問題が見つかった端末の調査方法ついて紹介します。

• スピーカー• 大内 宗徳• IIJのモバイルサービスに関わる技術や製品調査、研究開発、機器動作検証を担当

• IIJmio meeting 5,6,7,8 でトークセッションを担当

Page 3: IIJmio meeting 10 端末の動作確認(後編)

© 2016 Internet Initiative Japan Inc. 3

端末の動作確認方法の紹介(後半)

1. 端末の調査方法について1-1. 端末調査手法について1-2. IIJで利用する端末検証ツール

2. 端末の動作確認方法の実例2-1. MVNOでのGPS利用の調査2-2. データ通信が不安定問題の調査2-3. (おまけ)

3. まとめ

Page 4: IIJmio meeting 10 端末の動作確認(後編)

© 2016 Internet Initiative Japan Inc. 4

端末の動作確認方法の紹介(後半)

1. 端末の調査方法について1-1. 端末調査手法について1-2. IIJで利用する端末検証ツール

2. 端末の動作確認方法の実例2-1. MVNOでのGPS利用の調査2-2. データ通信が不安定問題の調査2-3. (おまけ)

3. まとめ

Page 5: IIJmio meeting 10 端末の動作確認(後編)

© 2016 Internet Initiative Japan Inc. 5

1. 端末調査手法について

• IIJmioのモバイル通信サービスが利用できる、出来ないという観点で調査を行います。

• 調査手法としてはおおまかに2つに大別1. ブラックボックステスト2. 端末実装の詳細調査

1. 端末内部のファイルや設定値の解析2. ソースコード解析3. 外部とのデータ通信解析4. モバイルの制御信号解析

Page 6: IIJmio meeting 10 端末の動作確認(後編)

© 2016 Internet Initiative Japan Inc. 6

1. 端末調査手法について

1. ブラックボックステスト• 松崎が行っているテストがこれに相当• 実装方法が不明である状態で行うテスト• 条件を変えて結果が想定(仕様)通りかを確認(例1)条件: IIJmio音声SIM、データSIM(他社SIM)結果: データ通信が可能か

APNサーチ問題の発生の有無LTEをすぐに掴めるか

(例2)条件: APNプロトコル = IPv4, IPv4IPv6結果: IPv4, IPv6での通信が可能か

安定接続が可能か

Page 7: IIJmio meeting 10 端末の動作確認(後編)

© 2016 Internet Initiative Japan Inc. 7

1. 端末調査手法について

2. 端末実装の詳細調査• 端末が期待通りに動作しない場合に、原因や回避策を調査をするために行う

1. 端末内部のファイルや設定値の解析• 端末が内部的に持つ通信設定を確認する• 端末内のログファイル、設定ファイル、設定値を調査

• 設定の意味はWeb検索で調べる等(例)

• iOSのキャリア設定ファイル• Androidの各種設定ファイル• (Android) adb shell getprop, adb shell catlog

Page 8: IIJmio meeting 10 端末の動作確認(後編)

© 2016 Internet Initiative Japan Inc. 8

1. 端末調査手法について

2. 端末実装の詳細調査2. ソースコード解析

• 端末の通信に関わる実装を直接確認して問題がないか調査

• Androidのみ(例)

• Android Open Source Projectで公開されているソースコードを調査

• チップベンダーのAndroid向け実装の調査(Web検索で見つかるリーク情報?)

• Linuxのkernel実装調査

Page 9: IIJmio meeting 10 端末の動作確認(後編)

© 2016 Internet Initiative Japan Inc. 9

1. 端末調査手法について

2. 端末実装の詳細調査3.外部とのデータ通信解析

• 通信サービスに関係する重要な通信はSSL化されていることが多いため、SSL化を解除して中身を解析

(例) iOS端末のApple社のサーバとの通信解析

Page 10: IIJmio meeting 10 端末の動作確認(後編)

© 2016 Internet Initiative Japan Inc. 10

1. 端末調査手法について

2. 端末実装の詳細調査4.モバイルの制御信号解析

• 圏外になったり、LTEが掴みにくいなど、安定利用出来ない場合に行う調査

• 端末と基地局とのモバイルの制御情報を調べる• 端末がQualcomm社のチップを利用し、かつ、制御情報を抜き出せる場合のみ

Application Processor

モバイル制御部分

アプリケーションOS(Android/iOS)

制御情報

IPパケットRF

Baseband Processor

(Qualcomm)

制御情報

Page 11: IIJmio meeting 10 端末の動作確認(後編)

© 2016 Internet Initiative Japan Inc. 11

端末の動作確認方法の紹介(後半)

1. 端末の調査方法について1-1. 端末調査手法について1-2. IIJで利用する端末検証ツール

2. 端末の動作確認方法の実例2-1. MVNOでのGPS利用の調査2-2. データ通信が不安定問題の調査2-3. (おまけ)

3. まとめ

Page 12: IIJmio meeting 10 端末の動作確認(後編)

© 2016 Internet Initiative Japan Inc. 12

IIJで利用する端末検証ツール

1. ブラックボックステスト• 前半の松崎の発表を参照

2. 端末実装の詳細調査1. 端末内部のファイルや設定値の解析

• Android SDK (adbコマンド)• plutil.pl (iOSキャリア設定ファイル変換)• 端末の特権取得ツール• Web検索

2. ソースコード解析• Web検索, grep

3. 外部とのデータ通信解析• mitmproxy

4. モバイルの制御信号解析• 端末の特権取得ツール• Meritech社 Sigma-ML/LA/PA

Page 13: IIJmio meeting 10 端末の動作確認(後編)

© 2016 Internet Initiative Japan Inc. 13

端末の動作確認方法の紹介(後半)

1. 端末の調査方法について1-1. 端末調査手法について1-2. IIJで利用する端末検証ツール

2. 端末の動作確認方法の実例2-1. MVNOでのGPS利用の調査2-2. データ通信が不安定問題の調査2-3. (おまけ)

3. まとめ

Page 14: IIJmio meeting 10 端末の動作確認(後編)

© 2016 Internet Initiative Japan Inc. 14

2. 端末の動作確認方法の実例

2-1. MVNOでのGPS利用の調査• MVNOでGPSが動作しない?問題の調査

IIJmio meeting 5http://techlog.iij.ad.jp/archives/1293

• キャリアのAndroid 白ROM端末でのGPSで位置情報取得が遅い問題についての調査結論: GPS Status & Toolbox アプリを使えば

改善する場合がある。• iOS端末についても調査結論: 問題発生せず

• 下記手法をフル活用して調査1. 端末内部のファイルや設定値の解析2. ソースコード解析3. 外部とのデータ通信解析

Page 15: IIJmio meeting 10 端末の動作確認(後編)

© 2016 Internet Initiative Japan Inc. 15

2. 端末の動作確認方法の実例

2-2.データ通信が不安定問題の調査1. MVNOでAndroid(5.x以降)を利用した場合に、圏外や3Gに落ちて安定した通信ができない問題

IIJmio meeting 7http://techlog.iij.ad.jp/archives/1501結論: iijmio以外のAPN設定を全て削除する

2. MVNOでiOS端末を利用した場合に、LTEにすぐに切り替わらない問題

IIJmio meeting 8http://techlog.iij.ad.jp/archives/1578結論: 音声・SMS SIM利用の推奨

最新のAPN構成プロファイルの利用

• モバイルの制御信号解析の手法をフル活用

Page 16: IIJmio meeting 10 端末の動作確認(後編)

© 2016 Internet Initiative Japan Inc. 16

端末の動作確認方法の紹介(後半)

1. 端末の調査方法について1-1. 端末調査手法について1-2. IIJで利用する端末検証ツール

2. 端末の動作確認方法の実例2-1. MVNOでのGPS利用の調査2-2. データ通信が不安定問題の調査2-3. (おまけ)

3. まとめ

Page 17: IIJmio meeting 10 端末の動作確認(後編)

© 2016 Internet Initiative Japan Inc. 17

2. 端末の動作確認方法の実例

• 2-3. (おまけ)• 時間不足のため、追加トピックを1つしか紹介できません。

• どちらがよいでしょうか?

1. AndroidのIPv6テザリングについて• 最近のSIMフリー端末では実装されているが、

Google Nexusでは利用できないのでその背景の調査

2. Apple SIMについて• IIJmioとは一切の関連はなく、純粋に興味本位で調べました

Page 18: IIJmio meeting 10 端末の動作確認(後編)

© 2016 Internet Initiative Japan Inc. 18

2. 端末の動作確認方法の実例

2-3. AndroidのIPv6テザリングについて• 最近のAndroid SIMフリー端末はIPv6テザリングに対応!• ただし不完全な実装-> IPv6 DNSサーバアドレスがとれない

(例) Arrows M02, ZenFone 2 Laser など• 一方で、GoogleのNexusシリーズは未対応

• 別件の問題の調査中に判明

• 下記手法を活用して調査1. 端末内部のファイルや設定値の解析2. ソースコード解析

Page 19: IIJmio meeting 10 端末の動作確認(後編)

© 2016 Internet Initiative Japan Inc. 19

モバイルネットワーク(IIJmio)

2. 端末の動作確認方法の実例

2-3. AndroidのIPv6テザリングについて• テザリング動作の概要

IP: 100.64.0.2/32GW: none (IIJmio向ける)DNS:100.64.X.Y

100.64.0.0/10

IP: 192.168.43.100/24GW: 192.168.43.1DNS:192.168.43.1

IP: 2001:db8:1:1::2/64GW: fe80::a:bDNS:2001:db8::X

IP: 2001:db8:1:1::100/64GW: fe80::x:yDNS:2001:db8::X

IPv4の場合(NATが必要)

IPv6の場合(NATを使わない)

PC

テザリング有効な端末

Page 20: IIJmio meeting 10 端末の動作確認(後編)

© 2016 Internet Initiative Japan Inc. 20

2. 端末の動作確認方法の実例

2-3. AndroidのIPv6テザリングについて• テザリングを実現するために端末に必要な機能

必要な機能、情報 IPv4の実現方法 IPv6の実現方法 SIMフリー Nexus

アドレス変換機能 NAT 不要/ND Proxy(*1) △(*4) △(*4)

IPアドレス割当 DHCPサーバ RA(*2) ○(*5) ×

デフォルトGW通知 DHCPサーバ RA(*2) ○(*5) ×

DNSサーバ通知 DHCPサーバ+DNS proxyサーバ

DHCPv6サーバ(*3)

×(*6) ×

(*1) Neighbor Discovery Proxy。NATは不要だが、同一ネットワークをテザリング側に延長するにはIPv6制御パケット(ARP相当)の代理応答が必要に。

(*2) Router Advertisement。ICMPv6を利用してアドレス情報(上位64ビット)を渡す。DNSサーバ情報をDHCPv6で渡すかのフラグ(Oフラグ)も含む。

(*3) DNSサーバの取得方法として当初はDHCPv6のみ。しかし、RAを利用する方法も提案(RDNSS)されが、まだ主流ではない (Windowsでは実装されてない)

(*4) LinuxではND Proxyの一部の機能(NS/NA)しか実装されていない。(*5) チップメーカー側で独自の実装をしていると推測。(*6) ある端末でこの実装を持つものもあった。

Page 21: IIJmio meeting 10 端末の動作確認(後編)

© 2016 Internet Initiative Japan Inc. 21

2. 端末の動作確認方法の実例

2-3. AndroidのIPv6テザリングについて• 参考文献• Androidソースのコミットログ

• LinuxのND Proxyの実装の取り込みhttps://android.googlesource.com/kernel/msm/+/6949dd43d713685dbbc362d28fd6a34b88c13789https://android.googlesource.com/kernel/msm/+/acb8a1fe48c558893d5b6ec532c0482b8ce2df6f

• AOSPのテザリングのon/offの制御(netd)• IPv6テザリングに関する実装なしhttps://android.googlesource.com/platform/system/netd/+/master/server/TetherController.cpp

• Qualcomm端末向け(?)のnetd実装• RA処理デーモン立ち上げ、v6 forwarding有効化、ND Proxy有効化http://mysvn.zhu.im/Android-repos/qualcomm-android/system/netd/TetherController.cpp

• IPv6 neighbour proxy | GeekLab• LinuxのND Proxyの実装について

http://www.geeklab.info/2013/05/ipv6-neighbour-proxy/• IPv6テザリングが端末で利用可能かの確認

1. テザリング有効時に起動されるデーモンの確認adb shell の ps でradishが起動されていることを確認。radio 5769 307 4944 388 ffffffff 89746390 S /system/bin/radish <= これ上記のTetherController.cppで起動されるRA処理を担当するデーモンです。

2.v6のproxy_ndpとfowardingの有効化の確認adb shell で テザリング有効時は下記の値に書き換わって、無効時は 0 であることを確認1|root@ASUS_Z00E_2:/ # cat /proc/sys/net/ipv6/conf/all/proxy_ndpcat /proc/sys/net/ipv6/conf/all/proxy_ndp2root@ASUS_Z00E_2:/ # cat /proc/sys/net/ipv6/conf/all/forwardingcat /proc/sys/net/ipv6/conf/all/forwarding

2

Page 22: IIJmio meeting 10 端末の動作確認(後編)

© 2016 Internet Initiative Japan Inc. 22

2. 端末の動作確認方法の実例

2-3. Apple SIMについて• 1 SIMに複数のSIM情報を格納できるApple

SIMの実装がどうなっているのか調べました。• 1 SIMでauとGigSkyを同時契約して確認

• 1-4の手法を駆使して解析1. 端末内部のファイルや設定値の解析2. 外部とのデータ通信解析3. モバイルの制御信号解析4. SIM解析ツールを利用

Page 23: IIJmio meeting 10 端末の動作確認(後編)

© 2016 Internet Initiative Japan Inc. 23

2. 端末の動作確認方法の実例

2-3. Apple SIMの挙動について4. SIM解析ツールの利用について

• Comprion社• File Tree Express Pro + カードリーダー

• SIMのファイル内容をダンプ+解析表示• Mini Move!

• SIMと端末間のプロトコルを解析

Application Processor

モバイル制御部分

アプリケーションOS(Android/iOS)

RFBaseband Processor

(Qualcomm)

制御情報

Mini Move!

Page 24: IIJmio meeting 10 端末の動作確認(後編)

© 2016 Internet Initiative Japan Inc. 24

2. 端末の動作確認方法の実例

2-3. Apple SIMの挙動について• 未契約状態のSIM

• 見かけ上は何もデータのないSIM• CSNは FileID=3F00.2F02 に格納• SIMと端末間で何かやり取りをすると、AT&T (IMSI:310380…)のSIMに変化• 日本だとソフトバンク経由でのローミング接続する

• SIMが直接、端末のIMEIを取得、SMS送信、キャリア情報(MCC,MNC)を取得など行っている(詳細不明)

• キャリアと契約するとSIM情報をサーバからダウンロードしているように見える

• サーバとの通信内容にGで始まるSIMベンダーの文字列が

Page 25: IIJmio meeting 10 端末の動作確認(後編)

© 2016 Internet Initiative Japan Inc. 25

2. 端末の動作確認方法の実例

2-3. Apple SIMの挙動について• 契約状態のSIM

• 複数キャリアの同時契約や切り替えが可能• 切り替わりに1分前後かかる

• キャリア毎にICCIDやIMSIなどを別々にもっている

Page 26: IIJmio meeting 10 端末の動作確認(後編)

© 2016 Internet Initiative Japan Inc. 26

2. 端末の動作確認方法の実例

2-3. Apple SIMの挙動について• auプリペイド契約

• IMSI:44051…を利用(au VoLTE SIM同等)• Apple SIM対応iPad以外はSIMを認識しない

• Apple SIM内のSIM情報を読める状態にするおまじないが必要

最初3つのAPDUコマンドがおまじない残り2つがICCIDを読みだしている

Page 27: IIJmio meeting 10 端末の動作確認(後編)

© 2016 Internet Initiative Japan Inc. 27

2. 端末の動作確認方法の実例

2-3. Apple SIMの挙動について• GigSkyプリペイド契約

• IMSI:23801…が見える• Tele Denmark (TDC A/S)というキャリア• GigSkyのIMSIでない。なぜ?• 日本ではNTTドコモ経由でローミング接続

• iPadでのキャリア表示はGigSky• au契約と異なり、SIMを他の端末に挿しても利用可

• キャリア表示はdocomo、キャリア設定はTDC• 3Gでの接続のみ

Page 28: IIJmio meeting 10 端末の動作確認(後編)

© 2016 Internet Initiative Japan Inc. 28

端末の動作確認方法の紹介(後半)

1. 端末の調査方法について1-1. 端末調査手法について1-2. IIJで利用する端末検証ツール

2. 端末の動作確認方法の実例2-1. MVNOでのGPS利用の調査2-2. データ通信が不安定問題の調査2-3. (おまけ)

3. まとめ

Page 29: IIJmio meeting 10 端末の動作確認(後編)

© 2016 Internet Initiative Japan Inc. 29

まとめ

• 前半(松崎)パート• IIJmioの端末の動作確認方法について解説• iOS端末動作検証の苦労点• 過去の検証時の印象的なトピック

• 後半(大内)パート• 問題のある端末の詳細な動作確認方法や利用ツールについて解説

• 端末の動作確認方法の実例の紹介

• 今後について• SIMフリー端末の制御信号に関わる接続問題の報告が多いため、高度な解析が可能な基地局シミュレータの導入も視野に