HEMS (Home Energy Management System)がポート遮断発生で通信ができなくなってしまうので、HEMSへの不要なパケットを EdgeRouter-X を使ってフィルタリングした。記録に残しておく。
背景
Panasonic の古い (生産終了になっている)HEMS である ECOマネシステム(電気・ガス・水計測タイプ)を使っていて、電気使用量などをWebブラウザで見ることができるが、APIでのアクセスなどはできない。経済産業省のHEMS補助対象機器になってECHONET Liteのインタフェースを(形式的には)持つようになったが、ECOマネシステムでは電気使用量などは取得できず、役にたたない。そこで、Home AssistantからWeb表示のページをスクレイピングして電気使用量などを取得しようと考えた。
そこで、実験用のHome Assistantのサーバーを作り、ネットワークに接続して試していたが、ECOマネシステムにアクセスできなくなることが頻繁に発生した。
ECOマネシステムのモニターで調べると、「ポート遮断発生」となって、通信できなくなっているようだった。家の新築後に接続デバイスを増やしていた時も「ポート遮断発生」となり、パケットキャプチャのログを取ってパナソニックに尋ねたことがあったが、ポート遮断の条件などを教えてもらえず原因はわからなかった。多数のデバイスがつながっている無線LANを有線LANとは別のセグメントにするようにしたところ、ポート遮断は発生しなくなっていたが、有線LANのセグメントへの機器も増えたためか、最近ポート遮断が発生するようになった。
有線LANのセグメントのいくつかの機器の電源を落としてしばらくするとECOマネシステムにアクセスできるようになるので、ECOマネにパケットが集中して届くと遮断されているように思われる。その閾値など具体的な条件はわからないが、不要なパケットをフィルタリングすればポート遮断は発生しない可能性があるので、フィルタリングを行うことにした。
調査と対策
まず、ECOマネシステムのポートのケーブルに届いているパケットのログを WireSharkで取った。調べてみるとマルチキャストパケットが多い、[マルチメディア]ポートALL ギガ に設置されている スイッチングハブ WTJ8501801 には、IGMP Snooping の機能がなく、マルチキャストパケットがすべてのポートに分配されている。このために、マルチキャストのfloodが発生し、低い閾値のポート遮断条件によって、ECOマネシステムのポート遮断が発生していると考えられる。
家のスイッチングハブをIGMP Snooping 機能があるものに交換するのが簡単であるが、現在3台のスイッチングハブ WTJ8501801が使われていて、後継機種のスイッチングハブ WTJ8501K もIGMP Snooping 機能がないようである。[マルチメディア]ポートALL ギガのユニットにはかなり多くの機器とケーブルが収められておりスペースに余裕がないため、他の機種のネットワークスイッチに交換するとユニットに収めるには工夫が必要になる。中期的にはネットワークスイッチを交換したいが、とりあえず、ECOマネシステムのポート遮断を解消するために、ネットワークスイッチはそのままで、マルチキャストパケットのフィルタリングをする。
そこで、Wiresharkのログを基に、マルチキャストパケットでECOマネが必要とするものとしないものを調べた。IPv4のみを使っているので、IPv6は対象外であり、すべてフィルタリングで廃棄する。
ECOマネは、SSDP (Simple Service Discovery Protocol) discovery によってサービスとして検出されていることがわかった。SSDPは マルチキャストアドレス 239.255.255.250 を使っているので、このマルチキャストはフィルタリングしてはいけないことがわかった。
Wiresharkのログに比較的多いもので、不要と思われるものをまとめると以下のようであった。
Protocol/Application | IP Address | Port | |
mDNS | UDP | 224.0.0.251 | |
LLMNR | UDP | 224.0.0.252 | |
Logicool Flow | UDP | 59867, 59868, 59870 | |
Media Plex Server | UDP | 32412, 32414 | |
Ubiquity | UDP | 10001 | |
QNAP Qfinder | UDP | 8097 | |
IGMP | IGMP |
mDNSや LLMNR はなくてかまわないはず。もっと言えば、静的IPアドレスをECOマネシステムには割り当てているので、マルチキャストは基本的に SSDP以外はフィルタリングしてかまわないはず。
家の環境に特有であるが、Logicool (Logitech) Flowや Media Plex Server, Unifi, QNAP Qfinder の通信はECOマネには関係がないので不要である。
ECOマネは自分からマルチキャスト通信は行わず、http での通信しか外部とはしないので、IGMP も不要である。
フィルタリングとミラーリング
古いものであるが、家に余っていた EdgeRouter-X を使って不要パケットのフィルタリングとパケットキャプチャのためのポートミラーリングをすることにした。EdgeRouter-X は、フィルタリングもポートミラーリングも簡単に指定できる。
設定をして接続して試したらECOマネシステムがポート遮断することはなくなったようである。様子をみていきたい。
感想
ECOマネシステムがポート遮断など無駄なことをしてくれなければよいものをなぜポート遮断しようとしたのであろうか?また、ポート遮断をするトラフィック量の閾値が低すぎて手元の環境では困る。ECOマネシステムの負荷を考慮して遮断することにしたのかもしれないが、IoT機器をつなぐネットワークでは使えない感じ。そもそも2013年頃に生産終了なので、やむを得ないと言えばそうなのだが。