look into ServersMan transactions

ServersMan の通信をしばらく Wireshark してみたけど、どこで IPv6 が使われてるのか分からなかった。(なお iPhone は NAT の裏)

流れとしては、
  1. www.freebit.com に接続
  2. /serversman/iphone/checkstatus.txt を GET して status のチェック
  3. snedit.dream.jp に接続して HTTPS でごにょごにょ (たぶんログイン処理)
  4. snel01.dti.ne.jp HTTPS で接続してごにょごにょ
  5. 途中から snel01.dti.ne.jp 側が port 9000 と 9001 (どちらも中身は SSL)の通信に移行
  6. その後は port 9000/9001 での処理が続く (サーバ側から定期的に keepalive も行なわれてる)
といった感じ。(port の使い分けは サーバ:9001 → iPhone、iPhone → サーバ:9000 の模様) ちなみに当たり前だけどここまでの通信はすべて IPv4。その後、たとえば http://serversman.net/(iPhone名)/ にアクセスすると、snel01.dti.ne.jp から iPhone にアクセスがあってコンテンツを返送してるようだ。(要するに snel01.dti.ne.jp と serversman.net が iPhone の proxy になってる感じ)

本日時点でサーバについてるアドレスは以下の通り。

snedit.dream.jp202.216.231.115
serversman.net202.216.231.116
snel01.dti.ne.jp202.216.231.117 / 2001:2e8:22:18::117

serversman.net には IPv6 アドレスがついてないんだから当たり前だけど、クライアントとの通信も IPv4。

snel01.dti.ne.jp には IPv6 アドレスがついてるから、もしかして iPhone と、(この proxy 風の)サーバとの間で SSL 内に tunnel が作られて、そこで IPv6 の通信をしてる、ってことなのかな…?一応、ServersMan で「情報」って項目を見ると 2001:2e8:500:29aa::/64 内のアドレスが付いてると表示されるが、外からは ping はできないし、何に使われてるかは不明。

もしかしたら iPhone が NAT の外にいると挙動が違うのだろうか?

余談
  1. こうやってパケットというかトランザクションを見てると、あらためて SSL って煩雑だと思う
  2. iPhone 上での WWW サーバは lighttpd 1.4.19 の模様
  3. ダンプする時は ip.len > 52 が便利。余計な ACK とか見なくて済む
  4. well-known port を使ってない場合は Analyze - Decode As が便利
  5. Wireshark の OSX native アプリケーションは出ないのかな…

posted by say · 2009年03月08日 16:50 · memo