050 plus がwifiで接続出来ない件について調査2(まだ未解決)

050 plus のポート関連について調査(未解決)の続き。
結局問題は解決していない。公式サポートは「サポート対象外の機種では使えないからご了承を」的なテンプレ回答で、どうしよもうない。

とりあえず調べてみたことをまとめてみる。
結論としては、Androidのセキュアソケットライブラリの問題の可能性が非常に高いと思われる。となると、簡単には修正出来ない。望みは絶たれたような感じだ。

前提条件として、うちのルーターはNEC IX2015で、複数の固定IPアドレスが振られているIP Unnumbered接続だ。
そして、HTCのAndroid端末をNAPT下のローカルアドレスのネットワークに無線LANで接続している。
この状態で050 Plusを起動すると、ルーターのログを見る限り、kar-f2fcp.050plus.com:5061と192.168.1.208(端末のIP)NATのエントリは作成される。その後きっかり10秒後にNATエントリが削除されている。何回実験しても10秒後に削除される。つまり何かがタイムアウトしているようだ。

ルーターのログでは限界があるので、Android SDKのエミュレータ(Android2.3.3)に050plusをインストールし、wiresharkで流れるパケットをキャプチャする。その結果がこれだ。

050Plus接続失敗時のパケットキャプチャ

ここで192.168.1.113は、エミュレータの動作しているPCのローカルIPだ。
これを見ると、確かに「SYN」「SYN,ACK」「ACK」によりTCP接続が確立している。しかし、Androidからは10秒間なにも送信されず、接続確立から10秒後、先方から「FIN,ACK」が送信されてきている。恐らく、これは050plusのサーバーがTLSセッション確立のタイムアウトを通告してきているということなのだろう。この直後、AndroidがClient Helloを送信しているが、後の祭りである。

本来は「SYN」「SYN,ACK」「ACK」の後にクライアントがClient Helloを送信し、サーバーからServer Helloが送り返されTLSセッションの確立が行われる。それにもかかわらず、wifi接続中のAndroidは何故かClient Helloを送信しないのだ。

一応、NAPTやローカルIPが原因の可能性も考えて、HTCのAndroid端末にグローバルIPを設定してみた。当該IPはパケットフィルタの例外に設定し、050Plusに接続しようとした。しかし、接続エラー9911が発生し、接続出来なかった。したがって、IPやNAT、パケットフィルタの問題ではないっぽい。謎すぎる。

やはり、セキュアソケットライブラリの問題ではないかと思えてくる。
サポート対象の機種と、サポート対象外の機種の違いって実はここらへんにあるのかもしれない。
とはいうものの、SDKのエミュレータでもちゃんと動かないというのは謎だなあ。

追記
解決しました→050 plus のポート関連について調査3(解決編)

「050 plus がwifiで接続出来ない件について調査2(まだ未解決)」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です