Home Assistantのネットワーク:検出、DNS、ルーティングによって到達性が実現される仕組み

エヴァ・ウォンテクニカルライター であり ZimaSpaceの常駐ティンカーでもあります。 生涯のオタクであり、 ホームラボとオープンソースソフトウェアに情熱を持っています。彼女は複雑な技術的概念をわかりやすく、 実践的なガイドに翻訳することを専門としています。エヴァはセルフホスティングは楽しくあるべきで、怖がるものではないと信じています。彼女のチュートリアルを通じて、コミュニティが ハードウェアのセットアップを解明する手助けをしています。初めてのNAS構築からDockerコンテナの習得まで。

Home Assistantへの到達可能性は、検出または設定によってエンドポイントが特定され、DNSが利用可能なアドレスを解決し、ルーティングとポリシーによってパケットがそこへ届けられる場合にのみ成立します。

これらの機能は、「ネットワーク」という1つの概念にまとめてしまいがちです。しかし実際には、デバイスが検出に表示されてもサービスのポートがブロックされている場合や、ホスト名が正しく解決されてもトラフィックの戻り経路がない場合があります。経路をレイヤーとして扱うことで障害を可視化でき、1つのチェックが成功しただけで接続全体を保証してしまうのを防げます。

到達可能性は独立した条件の連鎖

Home Assistantとの通信を正常に行うには、識別子、アドレス、順方向の経路、許可されたサービス、戻り経路が必要です。検出は最初の手掛かりを提供できますが、DNS、ルーティング、ファイアウォールの状態、宛先プロセスはそれぞれ異なる条件を担います。必要なリンクのどれか1つが失敗すると、他のすべてが機能していてもエンドポイントには到達できません。

セグメント化されたHome Assistant環境では、各境界を意図的に越える必要があるため、この連鎖が明確になります。VLAN間のHome Assistantネットワークに関する現場報告では、マルチキャスト検出、VLAN間ファイアウォールルール、コンテナの公開を、1つのスイッチとして扱わずに分けて説明しています。

診断は、正確な送信元と宛先、プロトコル、ポート、アドレスファミリーを明確にすることから始めます。ダッシュボードのブラウザーがHome Assistantに到達する経路と、Home AssistantがIoTデバイスに到達する経路は異なります。実際のトランザクションの方向に沿って、返信も含めて連鎖を評価する必要があります。

検出が見つけるのは可視範囲内のサービスだけ

検出プロトコルは、すべてのアドレスをユーザーが入力しなくても、サービス名、種類、場所を通知します。Home Assistantの統合機能では、互換性のあるデバイスを見つけるために、マルチキャストDNSや同様のブロードキャストを使用することがあります。これらのパケットは通常、ローカルリンクの範囲に限定されるため、ルーターはサブネット間で通常のユニキャストトラフィックのように転送しません。

そのため、複数サブネットのネットワークで自動検出を境界越しに行うには、明示的な検出ブリッジが必要です。APNICの小規模ネットワークのアーキテクチャに関する議論では、サブネット間のmDNSサービス検出にはプロキシまたはリレーが必要であり、リンクローカルの通知とルーティングされるデータトラフィックは別物であると説明しています。

リフレクターによってサービスを見えるようにできても、そのサービスに到達できるようになるとは限りません。通知は通過してもTCPまたはUDPトラフィックがブロックされている場合や、受信側サブネットから利用できないアドレスを通知している場合があります。検出の成功が示すのは何が存在するかであり、セッション全体を確立できるかどうかではありません。

DNSは名前を対応付けるが、パケット経路は作らない

DNSはホスト名を1つ以上のアドレスに変換します。変化する番号を覚える必要がなくなり、ローカルクライアントとリモートクライアントに異なる応答を返すこともできます。正しい応答が返ったことから分かるのは、リゾルバーがデータを提供したという事実だけです。選択されたアドレスに到達できること、待ち受けていること、通信が許可されていることまでは保証されません。

プライベート名前解決システムは、この分離を明確に示します。TailscaleのプライベートDNSの動作に関する説明では、名前とアドレスの対応付けおよびスプリットDNSを扱っています。一方、ルーティングは別の機能であり、選択されたプライベートエンドポイントまでトラフィックを運ぶ必要があります。

障害が発生している同じクライアントとネットワークから応答を確認してください。モバイルデータ通信中のスマートフォンは、Wi-Fi接続された壁掛けタブレットとは異なるリゾルバーを使い、異なるアドレスを受け取ることがあります。また、IPv4とIPv6は別々に確認してください。優先されたアドレスが利用できない場合、正常な接続でも遅延したり失敗したりする可能性があります。

ルーティングとファイアウォールポリシーがパケットの通過を決める

ルーティングは解決されたアドレスに向かう次のホップを選択し、ファイアウォールポリシーはトラフィックを許可するかどうかを決定します。ルーターが両方のサブネットを認識していてもサービスのポートを拒否することがあり、予想される戻り状態を維持せずに送信トラフィックだけを許可することもあります。到達可能性には、整合性のある順方向と返信方向の経路が必要です。

リモートからのプライベートアクセスでは、名前解決と転送の違いが明確になります。サブネットルーティングに関する実用的な説明では、遠隔のクライアントが通常のLANデバイスに到達する前に、広告された経路とIPフォワーディングが必要であると説明しています。オーバーレイノードがすでに名前とIDを持っていても同様です。

VLAN全体を開放するのではなく、実際のフローに基づく最小権限ルールを使用してください。必要な送信元、宛先、プロトコル、ポートを許可し、返信が有効な経路を通ることを確認します。ステートフルファイアウォールは多くの戻りトラフィックを簡素化しますが、非対称な経路や重複するサブネットによって一方向だけの到達可能性が生じることもあります。

コンテナネットワークによってHome Assistantから見える範囲が変わる

コンテナはホストネットワークを共有しない限り、独自のネットワーク名前空間を持ちます。ブリッジネットワークでは、Home Assistantと物理LANの間にアドレス変換、仮想インターフェース、公開ポートが追加されます。これらの境界によってマルチキャストがフィルタリングされたり、ピアが利用できない内部アドレスが通知されたりすることがあります。

この影響は、通常のWebアクセスは機能する一方で、ブロードキャストに依存する統合機能が失敗する実環境で現れます。ブリッジネットワークにおける検出の制限に関する運用報告では、コンテナ自体にはアクセスできるにもかかわらず、Apple TV統合がブロードキャストを検出できない状況が説明されています。

ホストネットワークは変換とマルチキャストの境界を減らしますが、プロセスがホストのインターフェースに直接さらされる範囲を広げます。Macvlanまたは明示的なリレーを使えば、分離を維持しながら検出の動作を変えられます。パケット経路を文書化できるモデルを選び、どの方式も一律に安全だと考えず、必要な統合機能をテストしてください。

検出に成功してもセッションは失敗することがある

最も典型的な失敗の境界は、デバイスが名前で表示されるのにHome Assistantでは利用できない状態です。通知に古いアドレスが含まれている、解決されたアドレスが誤ったインターフェースを指している、サービスがlocalhostでのみ待ち受けている、またはファイアウォールが通知されたポートを拒否している可能性があります。セッションが失敗していても、検出自体は役割を終えています。

MatterとThreadの環境では、複数の境界が共存する様子が分かります。VLAN間でのHome Assistant検出の実装では、ルーティング、ファイアウォール、別サブネットからのコミッショニング、ボーダールーターを組み合わせています。これは、1回のマルチキャスト観測の成功だけでは、その後のユニキャスト通信を保証できない理由を示しています。

逆の失敗も起こります。手動設定では検出通知がサブネットを越えなくてもデバイスに到達できる場合があります。この結果が証明するのは、ルーティングされたサービス経路は機能しているが、検出は機能していないということです。リフレクターでブロックされたポートを修復しようとしたり、ファイアウォールの変更で誤ったDNS応答を修復しようとしたりしないよう、これらの結果を分けて扱ってください。

5段階のパケット経路テストを実行する

失敗している通信を開始する、正確なHome Assistantホストまたはクライアントからテストしてください。1つ目は、検出されたサービスまたは設定済みのターゲットを取得します。2つ目は、ホスト名を解決して、返されたすべてのアドレスを記録します。3つ目は、そのアドレスに対して選択された経路を確認します。4つ目は、サービスのポートをテストします。5つ目は、返信とアプリケーションのハンドシェイクを確認します。

各レイヤーを個別に観測すると、パケット経路の証拠はより強固になります。Home Assistantコンテナネットワークの手順では、マルチキャストとブロードキャストのトラフィックのためにホストモードが選ばれることが多い理由を説明しており、名前空間に関する障害を比較する具体的な基準になります。

単に「到達不能」と書くのではなく、検出、名前解決、経路、ポリシー、ハンドシェイクについて、それぞれ成功または失敗を記録します。結果を、ZimaSpaceのホストネットワークとブリッジネットワークの比較ガイドと照合してください。最初に失敗したレイヤーを変更したら、5段階すべてを再実行します。経路を修復すると、次の境界が明らかになることがあるためです。

テック&AIハブ

もっと読む

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.