Mac OS XにおけるIPv6 RA処理の問題の報告
問題の要約
Broadcomのハードウェア・ソフトウェアを搭載した一部のMacBook Proにおいて, Router Advertisement (RA) を受信した際, Mac OS XがインターフェイスからIPv6アドレスを 消去してしまうという問題が発生した. この問題が発生すると,IPv6アドレスが消去されてから 新しいアドレスを付与するまでIPv6による通信ができなくなる. さらに,EUI-64アドレスではなく,一時アドレスを使用している場合には, 一旦アドレスが消去されることにより, 元のアドレスとは異なるアドレスが再度付与されるため, RAを受け取る度にSSHなどのTCPセッションが切断され, タイムアウトまで当該のアプリケーションがハングしてしまうことがある.
影響を受けるファームウェア
4種類のMacBook Proで本現象の発生有無を確認した. 確認に協力してくれた方々に感謝します.
- 影響を受ける環境
- AirPort: Broadcom BCM43xx 1.0 (5.10.131.16.1) [Mac OS X 10.6.4 (10F569)]
- 影響を受けない環境
- AirPort: Broadcom BCM43xx 1.0 (5.10.91.27)
- AirPort: Atheros 5416: 2.0.19.10
- Ethernet ports
- 他の環境では検証していない
問題の詳細
EUI-64アドレス消去に関する問題
影響を受ける環境では,IPv6 RAを受信した直後,無線インターフェイスの IPv6アドレスが消去され,Duplicate Address Detection (DAD) などの処理を行い, 再度同じアドレスが付与される. この処理が完了するまで,無線インターフェイスのIPv6アドレスは 消去・使用できない状態 (TENTATIVE) となるため,一時的に通信ができなくなる. EUI-64アドレスはMACアドレス(ハードウェアアドレス)に基づき 付与されており,同一のアドレスが再度付与されるため, 一時的なパケットロスは発生するもののTCPセッションは保持されるため, 認識できない程度の問題であるかもしれない.
一時アドレス消去に関する問題
このページで紹介したように, Mac OS X ではプライバシー保護のために一時アドレスを有効にできる (正式にサポートされているわけではないと思われる). しかし,一時アドレスを有効にした場合, このアドレス消去の問題は大きな問題となる. このバグにより,RAを受信する度に一時アドレスが消去され, その後,元のアドレスとは異なるアドレスが再度付与される. アドレスが変更されてしまうため, TCPを含め,全てのセッションが切断されてしまう. 例えば,SSHはRAを受信する度にタイムアウトまでハングアップしてしまう.
問題の回避(軽減)方法
一時アドレスを使用しないことにより, この問題による影響を軽減することが可能である. 上述したように,パケットロスは発生してしまうが, EUI-64アドレスはインターフェイスに一意であるため, アドレス付与後,セッションが復旧するためである.
まとめ
このバグはAppleのバグレポートに報告済みであり, ソフトウェアアップデートによりこの問題が解決されることを願う.
あとがき
バグ修正版のアップデート
このバグは アップデートHT4250 により解決した. このアップデートは 2011年11月11日(日本時間)から提供されており, 早急なアップデートを Broadcom BCM43xx 1.0 (5.10.131.16.1)ファームウェアを使用している IPv6ユーザに推奨する.
なお,新しいバージョンのファームウェアは, Broadcom BCM43xx 1.0 (5.10.131.36.1) [Mac OS X 10.6.5 (10H574)] であった.