複数インタフェースのサーバでHomebridgeがうまく動かないときの対処
TL;DR
config.json
の一番上の階層に、mdns
プロパティを作って、HomebridgeにつなげるiOSデバイスが居るネットワークに繋がっているインターフェースに割りあたっているIPアドレスを指定してやる。
{ "bridge": { "name": "Homebridge", "username": "CC:22:33:44:55:66", "port": 51826, "pin": "031-45-155" }, "mdns": { "interface": "192.168.50.123" ←ココ }, .... }
詳細
RaspberryPiで、VPNサーバとHomebridgeをセットアップしようとしたところ、eth0とwlan0を両方使うと、wlan0側のネットワークからHomebridgeが見えなくなる現象が発生した。
avahi-browse -a
でデバイスのアドバタイズがどうなっているのかを検索すると、Homebridgeのデバイスはeth0にしか流れていない。
どうやらデフォルトだと、先頭(?)のネットワークにしかmDNSのアドバタイズをしてくれないようで、eth0側にしか情報が流れていないらしい。
解決法
ソースを掘ると、配信はmulticast-dns
モジュールでやっている事がわかる。
multicast-dns
のコードを見ると、UDPのリスンはココでやっているので、interface
オプションにインターフェースを示すIPを与えればいいことがわかる。
ここにオプションを渡すための変更が、このコミットで行われていたので、それに従って、config.json
に設定を入れることで、うまく接続できるようになった。