IoT家電を揃えて遊んでいたところ、ロボット掃除機であるECOVACS社のDEEBOT OZMO 920がスマートフォンアプリ(ECOVACS HOME)で操作できなくなっていることに気がついた。
公式サイト画像より
結論から言えば、ルーターのIPv6ファイアウォールでWAN側からのPING応答を拒否していると動作しない(アプリとロボット掃除機が接続できない)ということだ。
ロボット掃除機をファクトリーリセットしたりアプリを再インストールしたりしたが、WiFi接続のチェック後「CANNOT CONNECTED INTERNET ! 」と叫ばれる。
初期設定は英語で音量最大、加えて(英語版の)音声は強い語調であるため接続の試行中のイラは増大し続けた。このロボット掃除機はアプリに登録した後でないと日本語に変更できない。個人的に日本語音声は能力の低い子ががんばってる感のある声に聞こえ、かなり好感が持てる。
原因を考えていて思い当たったのは、契約プロバイダ変更をしていたことである。変更後の後日、申し込んでいた「IPv4 over IPv6(v6プラス)接続への変更※1」が開通したとの知らせを受け、ルーターの設定を変えていたのだった。その時は「v6プラス接続に必要な設定をルーターにしただけ」と思い込んでいたので、原因の特定までに時間がかかってしまった。
意外だったのは、このロボット掃除機がIPv6が使えるとき、IPv6で通信していたということである。※2
自宅のルーターはBuffalo社のWSR-2533DHP3であり、IPv6通信にはいくつか設定がある。
IPv6通信においてどれが接続可能な設定なのかはプロバイダの契約によって異なるだろうが、ほとんどは「NDプロキシ」か「IPv6ブリッジ(パススルー)」のどちらかを選択して接続することになると思われる。
「IPv6ブリッジ」はIPv6に対してはルーターが仕事をしないということである。IPv6ではグローバルIPアドレスが機器ごとに設定されるため、ルーターがNAT変換(WANとLANのネットワークアドレス変換)をする必要がなく、上位のルーターにルーティング処理を移譲することになる。
「NDプロキシ」はパケットを監視し、ND(Neighbor Discovery、 IPv4でいうところのARP)プロトコルのパケットをルーターで中継する。中継する過程でファイアウォールを定義・設定できるようになることからセキュリティへの寄与が可能になる。
「IPv6ブリッジ」では通信経路が簡易化され、通信がうまくいかないという状況が起こりにくくなるものの、外部からのパケットを素通りさせるためセキュリティに問題があると考える人もいる。※3
そしてNDプロキシを設定している場合のみ、BuffaloのルーターではIPv6ファイアウォールの設定が有効になる。(IPv6ブリッジ設定でもファイアウォール設定画面(IPv6)は操作できるものの、何も効いていない)
このうちIPv6の上から3番目の「Internet側からのPINGに応答しない」がONになっているとECOVACSのロボット掃除機DEEBOTは操作できなくなる。(ロボット掃除機側の実装の仕組みは判らないので詳細は何とも……)
※初回接続(登録)時(もしくは電池切れ等によるオフライン時)に限っては「NDプロキシ」にしていると接続できないので「IPv6ブリッジ」に一旦設定しておくこと。以降は上記「PING応答」さえ許可すれば操作可能となる。
インターネットに繋がっていないとスマホからはなにもできないという仕様は改めてほしいところだ。回線の障害があっても、電気があってWiFiにつながっていれば一部の機能だけでも有効にしてほしいものである。
IoT機器のうち、どの機能がインターネット必須なのかは調べておいた方がよいだろう。スマートホーム化している人のブログなどで、すべてをIFTTT互換で揃えたためにインターネット不通時に何もできなくなったという記事があり、考えさせられるものがあった。
まぁ今回のロボット掃除機は本体にボタンがあるので、インターネットに繋がっていなくても掃除自体は実行できる。そのため最低限は備えているともいえるか。
最後に
ロボット掃除機DEEBOT OZOMO 920は日本語音声が気に入っていることを含め、「マッピング機能」、「水拭き機能」を持ちながら、手ごろな価格で販売されている良い商品である。
水拭き機能はフローリング面積がどれくらいあるかで要否を検討することになるだろうが、マッピング機能はロボット掃除機にはなくてはならない機能だろう。マッピング機能がないとロボット掃除機はランダムに移動したり、電池が切れるまで掃除を続けたりという醜態を晒すことになる。
マッピング機能がないと掃除の完了を判定できないので、長時間にわたって掃除機の駆動音を聞く羽目になる。なので機能がない機種を購入した多くの人は不在時に掃除を予約しておくのだと思っているが、外出を自粛したり、リモートワークが普及した昨今では、家にいるときに掃除機を動かしたい状況が増えてきている。
マッピング機能がある場合、きちんと効率よく掃除して回る。掃除を見ていて完了予定に予測がつくため、いつまで掃除中の音がづづくのか?というイライラが少なくなる。(当環境では計20畳程度を20分で掃除完了)
公式Youtube動画より
また進入禁止エリアの設定ができるので、ロボット掃除機が不向きなエリアを簡単に避けることができる。
フローリングが多い、階段や廊下(ドア)による障害が少ないという環境であればロボット掃除機を買うのはおすすめだ。床にコードや物があると掃除に不都合が出るので、普段から部屋をきれいに整頓する癖がつくようになる。
しいて欠点をあげるならアレクサなどスマートスピーカーとの連携に改善の余地がある。現状ではカスタム定義から掃除を開始できない。(自分の好きな文章で設定できず、固定の文章しか認識しない)せっかくロボット掃除機に名前を付ける機能があるのにそれが活かせていないのだ。
Youtubeなど動画レビューで日本語音声を確認できるので、声が気に入ったのなら買いだろう。(重要)
※1
IPv4 over IPv6 はIPv4のパケットをIPv6の経路(IPoE)で送受しようという仕組みである。なぜ別のプロトコルであるIPv6を使うのかといえば、IPv4の経路(PPPoE)は輻輳(通信渋滞) が発生しやすいい仕組みになっているので、バイパスしてIPv4の経路を使わないことで通信渋滞を避けることが目的。
IPv4は基本的にPPPoE接続でしかインターネット接続できない。PPPoE接続はプロバイダと回線事業者の間に網終端装置というプロバイダとの接続装置を介して接続している。
その装置は現在の仕組み(NTT法とか?)ではユーザー数が増えないと機器増設・増強ができないとなっており、ネットワークトラフィック量では調整されない。インターネットで広帯域を必要とする動画サービスの利用が多くなった近年では、その網終端装置で輻輳が発生していまっている。
それを解決する手段として網終端装置を必要としないIPv6(の標準であるIPoE)通信方式にIPv4の通信をカプセル化して突っ込むというものが誕生した。
しかし、そこに割り振られるIPv4アドレスは複数ユーザーと共用になるため、外部からアクセスする際に使えるポートが一部の範囲だけに制限されてしまうという課題もある。(ポート番号の範囲を共有ユーザで分割)
※2
IPv6は機器ごとにグローバルIPアドレスが割り振られ、プライベートIPという概念がない。ルーターの設定によってはFWを無効にしているとWAN(インターネット)側からIPを指定してLAN内の機器のようにアクセスすることができてしまうような仕組みになっている。
IPv6ではアドレスの範囲が大きい&機器ごとに別であるため、IPを特定するということが難しいので、各回線事業者の貸出ルーターや市販ルーターでも初期状態でIPv6に対する外部(インターネット)からのアクセスを許可していることが多い。
IPv4の知識のままIPv6機器のセキュリティ設定を実施すると危険な設定を構築する可能性がある。とはいえ外から操作できる家電IoT機器でもきちんとIPv6に対応していってるんだなぁという感慨があった。
※3
NDプロキシそのものセキュリティの規格ではなく(rc4389 )、中継機能のパケット監視実装を流用してファイアウォールが設定できることからセキュリティ設定として認知されている場合がある。一般的なルーターで提供されているファイアウォール機能などは、ないよりマシという程度である。
というのは最近ではゼロトラストセキュリティという言葉を聞くようになったように、どこかでフィルタしていれば安全という考え方は古いとされており、LAN・WAN関係なく通信・サービスを提供する場合は認証などの仕組みをきちんと設定する必要があるという考え方が標準になりつつある。
例としてはWindowsのファイル共有機能などは2017年のアップデートにおいて匿名(パスワードなし)アクセスができないという設定が標準となった。
しかし、サービスの設定中や通信がうまくいかないときの検証においては一時的にセキュリティをOFFにすることが考えられるので、そのようなときの時間稼ぎの一助にはなると思われる。
ブリッジ・NDプロキシどちらにしろNATは行わず、WANとLANは同一ネットワークアドレスを用いている。NATはIPv4の負の遺産と捉えられているようで、これがあるとオンラインゲーム機のマッチングが失敗する、オンラインWeb会議に参加できないというようなことが発生する。
IPv4(NAT)で端末間同士の通信を実現するには、外部から見えるグローバルIPのポートをプライベートIPのポートに紐づける必要があるが、それができない環境が存在し、サービス提供者は別途コストをかけて中継サーバーとなるSTUN・TURNなどの仕組みを構築する必要があった。(過去形ではなく今もIPv4のためのサポートを続ける必要があるので苦労している)