モバイル版ChromeのSPDYプロキシはIPv6に対応

モバイル版のChrome正式にSPDYに対応しました。

たまたま実験してて気づいてたのですが、SPDYプロキシはIPv6に対応しているようです。

実験

グローバルなIPv6が振られているMac上でサーバアプリを起動して、IPv6でアクセスできるようにします。今回はNode.jsを使ったサーバアプリを起動しておきます。また、アクセスしてきたIPアドレスをログで表示できるようにしておきます。

IPv6でアクセスできるようにするには、Node.jsでlistenを下記のように書いておきます。

server.listen(3000, '::');

PC版Chromeでアクセス

IPv6指定でアクセスすると、このように接続されます。これはまあ普通です。

f:id:tomo_watanabe:20140120125629p:plain

Node.jsのログでIPアドレスを確認してみます。同じマシンからアクセスしてるので同じIPv6アドレスです。

f:id:tomo_watanabe:20140120130136p:plain

AndroidChromeでアクセス

AndroidChromeでSPDYをON(帯域幅の管理→データ使用量を節約)でアクセスしてみます。

f:id:tomo_watanabe:20140120130720p:plain

同じようにアクセスできました。この時のアクセスログを見てみると

f:id:tomo_watanabe:20140120130845p:plain

謎のIPv6アドレスからアクセスが来ていますね。これを調べてみます。

f:id:tomo_watanabe:20140120162437p:plain

どう見てもGoogleさんです。本当にry

ちなみにSPDYをOFF(データ使用量を節約しない)に設定すると

f:id:tomo_watanabe:20140120131721p:plain

このようにアドレス解決できません(今まではこうだった)

追試

IPv6アクセスの確認サイトである「The KAME project」にアクセスしてみます。 このサイトのIPv6アドレスは「2001:200:dff:fff1:216:3eff:feb1:44d7」です。

モバイル版ChromeでSPDY ONで「http://www.kame.net/」へアクセス(IPv4)と「http://[2001:200:dff:fff1:216:3eff:feb1:44d7]」(IPv6)へそれぞれアクセスしてみてください

亀が泳いでいればIPv6でアクセスしていることになります。IPv6アドレスでアクセスした場合には亀が泳いでいるのが確認できると思います。

f:id:tomo_watanabe:20140120133300p:plain

まとめ

Android端末で僕が契約しているdocomo XiのLTEでは端末にはIPv6は割り当てられず、IPv4アドレスしか振られません。なので普通にURLを入れるとIPv4でのアクセスになります。しかしIPv6アドレスを直打ちすることで、SPDYプロキシがIPv6へのアクセスを可能にしていることがわかりました。

ただし、PCからのアクセスだとWebScoketで接続できますが、SPDY経由だとxhr-pollingになるのでWebSocketのプロキシには対応していないようです...

追記:httpsアクセスはSPDYプロキシは通ってないようですね(まぁそうか)