Bonjour Sleep ProxyとIP,Etherアドレス乗っ取り
- スリープ中で低消費電力状態のMacOSX共有資源に他の機器がアクセスできるようBonjour,ARPの返答を代理し, 必要ならばスリープ中の機器を活性化する機能.
- Wake on Demand機能で使用されている.
- http://support.apple.com/kb/HT3774?viewlocale=ja_JP&locale=ja_JP
- スリーププロキシ状態となったとき, Etherアドレスはスリープ状態の機器のものに変ったように見える.
- 代理しているものだけでなく自分自身の通信まで発信Etherアドレスをスリープ中の機器のものに変えてしまうことがある.
- Etherアドレスがかなり頻繁に変更されたように見える.
- 外部からはIP,Etherごと機器の乗っ取りが起ったように見えたり, スリープ中のはずのMacOSXが実際にはスリープしていなかったり, スリープから解除されているのに代行したままだとIP重複が起る.
- 問答集
- http://discussions.apple.com/thread.jspa?threadID=2160614&start=0&tstart=0
- http://lists.sans.org/pipermail/unisog/2009-September/028169.html
- Bonjourがマルチキャストでもあるので,他のMacOSXでプロキシサーバー機能が動いているものをルーター乗っ取りに荷担させることができるのではという指摘.
- DHCP機が休眠してプロキシに受け継がれたとき, IPアドレス変更されても大丈夫なのかという指摘.
- DHCPリース期限が来て解放されたはずのアドレスを代行した側が使用し続けていた例あり.
- AirPort, TimeCapsule等の無線LANサーバーのみではなく, MacOSXの標準機能に入っていると言う指摘.
- Internet sharingを機能させた場合にSleep Proxy Serverになるという指摘.
- インターネット共有とBonjour Sleep Proxy
- http://www.net.princeton.edu/mac/internet-sharing-x/
- インターネット共有はストームを発生させることがあるらしい(?).
- http://www.net.princeton.edu/mac/internet-sharing-x/
- /usr/sbin/mDNSResponderには, Sleep Proxyをコントロールする引数がある.
- -OfferSleepProxyService 数値という引数を与えるらしい.
- /System/Library/LaunchDaemons/com.apple.mDNSResponder.plistに書込む必要がある.
- http://www.opensource.apple.com/source/mDNSResponder/mDNSResponder-258.14/mDNSMacOSX/mDNSMacOSX.c のSetSPS関数.
- 電源がACかバッテリーか, インターネット共有でNATを行っているか, 製品がポータブル機器か, 重量, 製品がApple TVのようなスリープしない性質のものかなどを数値化することで決まるネットワーク上のスリーププロキシサーバー優先度らしい.
- http://www.opensource.apple.com/source/mDNSResponder/mDNSResponder-258.14/mDNSMacOSX/daemon.c
- 引数一覧
- http://arai.cocolog-nifty.com/topics/mac/index.html
- http://murachue.ddo.jp/web/diary.cgi?mode=past
- 参照
- http://en.wikipedia.org/wiki/Sleep_Proxy_Service
- http://files.multicastdns.org/draft-cheshire-dnsext-multicastdns.txt
- mDNSResponderのマニュアル. Sleep Proxy動作はsyslogにNoticeメッセージを送ると書かれている.
- mDNSResponderソースコード
- DNSサービスタイプ
- Bonjour
- AirMacもしくはTimeCapsuleではファームウェア 7.4.2 から搭載された.
- 「Snow Leopard がインストールされているすべての Mac では、システム環境設定の「省エネルギー」パネルで「ネットワークアクセスによってスリープを解除」が有効になっている場合、AirMac ベースステーションまたは Time Capsule 上で実行されている「Bonjour Sleep Proxy」サービスが自動的に検出され、スリープモードになる前に、各種サービスがプロキシに登録されます。」
- http://support.apple.com/kb/HT3774?viewlocale=ja_JP&locale=ja_JP
- 10.6.3に何らかの修正があった
- Bonjour の Wake on Demand を使用する際のスリープとスリープ解除の信頼性
- http://support.apple.com/kb/HT4014?viewlocale=ja_JP