08 November 2012

(Android Wifi) DHCPリース時間が無限大の場合再接続を繰り返す

Androidの無線LANが約1分毎に再接続を繰り返すので原因を探ってみた。

■ 検証環境

・Android 2.3機器
  Xperia ray
  Ideapad A1
・NEC Aterm WR8600N (ブロードバンドルータ)
・BUFFALO WHR-AM54G54 + DD-WRT (ブロードバンドルータ)

■ ルータのログ


2012-11-08 07:38:21 dhcps - 0.ntc: address assigned ,192.168.1.105 ,84:00:d2:6b:08:21 ,LAN
2012-11-08 07:40:46 dhcps - 0.ntc: address assigned ,192.168.1.105 ,84:00:d2:6b:08:21 ,LAN
2012-11-08 07:43:11 dhcps - 0.ntc: address assigned ,192.168.1.105 ,84:00:d2:6b:08:21 ,LAN
2012-11-08 07:45:36 dhcps - 0.ntc: address assigned ,192.168.1.105 ,84:00:d2:6b:08:21 ,LAN
2012-11-08 07:48:01 dhcps - 0.ntc: address assigned ,192.168.1.105 ,84:00:d2:6b:08:21 ,LAN
2012-11-08 07:50:26 dhcps - 0.ntc: address assigned ,192.168.1.105 ,84:00:d2:6b:08:21 ,LAN
2012-11-08 07:52:51 dhcps - 0.ntc: address assigned ,192.168.1.105 ,84:00:d2:6b:08:21 ,LAN
2012-11-08 07:55:16 dhcps - 0.ntc: address assigned ,192.168.1.105 ,84:00:d2:6b:08:21 ,LAN
2012-11-08 07:57:41 dhcps - 0.ntc: address assigned ,192.168.1.105 ,84:00:d2:6b:08:21 ,LAN
2012-11-08 08:00:06 dhcps - 0.ntc: address assigned ,192.168.1.105 ,84:00:d2:6b:08:21 ,LAN
2012-11-08 08:02:31 dhcps - 0.ntc: address assigned ,192.168.1.105 ,84:00:d2:6b:08:21 ,LAN
2012-11-08 08:04:56 dhcps - 0.ntc: address assigned ,192.168.1.105 ,84:00:d2:6b:08:21 ,LAN
2012-11-08 08:07:21 dhcps - 0.ntc: address assigned ,192.168.1.105 ,84:00:d2:6b:08:21 ,LAN

■ 問題が起こる条件

NEC Aterm WR8600Nで、DHCPによるIPアドレス付与をMACで固定するモードを使った場合に起こる。

DD-WRTの場合は、MACアドレスによる固定有無では影響を受けない(エラーは起こらない)。

■ 原因追求

Wiresharkを使ってパケット・キャプチャしてみると、NECのルータではMACアドレスの固定の有無で、DHCPのアドレス リース期間が1日と無限大という違いがあるようだ

20121108-dhcpsetup.jpg
Aterm WR8600NでのMACアドレス固定の設定画面


パケットキャプチャ結果

20121108-capture-1day.jpg
Aterm WR8600NでMACアドレス固定を利用しない場合は、DHCPによるIPアドレス リース期間は1日間。


20121108-capture-infinite.jpg
Aterm WR8600NでMACアドレス固定を利用した場合は、DHCPによるIPアドレス リース期間は無限大。

無限大の場合、Android端末側で30秒〜2分程度毎に再接続を繰り返す。iOSやWIndows PC、Linuxの場合はこのようなことは無いので、「相性問題」というところだろうか…

NECのルータにはDHCPのリース期間を強制的に変更する設定画面が存在しているが、MACアドレス固定を行うとこれが働かないようだ。これは、バグ? それとも仕様?