IOMMUの分離はホームサーバーのパススルーを安全にします。これはパススルーされたPCIeデバイスと物理システムメモリの間にハードウェアの変換と許可の境界を設けるためです。VMはデバイスを直接操作できますが、デバイスはそのVMのドメインにマッピングされたメモリページにのみアクセスすべきです。
これにより、侵害されたゲストドライバーや故障したデバイスがホストや他のVMのメモリにDMAを行うリスクが減少します。保護は正しいIOMMUグループ、PCIeトポロジー、割り込みリマッピング、デバイスリセット動作、ファームウェア、そしてグループを単に分離して見せるだけの回避策を避けることに依存します。
なぜパススルーは仮想I/Oと異なるのか?
VFIOはVMに直接デバイス制御を与えます。これはすべての操作をハイパーバイザーが制御するエミュレートまたはパラバーチャルデバイス経由で送る代わりの方法です。
この直接経路は仮想化のオーバーヘッドを減らし、GPU、NVMeドライブ、ネットワークアダプター、アクセラレータカードに必要なハードウェア機能を露出させます。また、より多くのデバイス動作をゲストの制御下に置きます。
したがって、セキュリティ境界はゲストがホストCPU命令を実行できないことだけに依存できません。バスマスター機能を持つデバイスは独立してメモリトランザクションを開始できるため、そのDMAアドレス空間はゲストのCPUアドレス空間と同様に厳密に制限されなければなりません。
IOMMUはどのようにしてデバイスのDMAを制限するのか?
IOMMUドメインはデバイスのメモリアクセスを制限します。これはデバイスが見えるI/Oアドレスを、そのデバイス用に選択されたページテーブルを通じて変換することで実現されます。
VFIOがデバイスをVMに割り当てるとき、有効なマッピングはそのVMが所有するメモリに対応している必要があります。マッピング範囲外のDMA要求は、任意のホストRAMに到達するのではなくブロックされます。
これは未仲介パススルーに対する中心的な安全性向上です。デバイスはホストの物理アドレスを直接選択せず、IOMMUがリクエスターの識別、マッピング、アクセス許可を確認してからトランザクションを許可します。
なぜIOMMUグループが割り当て境界なのか?
相互に分離できないPCIe機能は同じグループに配置され、1つのグループ内のすべてのデバイスは分離を共有します。
グラフィックスカードは1つのデバイスパッケージ内にディスプレイ、オーディオ、USB、シリアルバス機能を露出することがあります。これらの関連機能はリセット動作やピア通信を許すトポロジーを共有するため、一緒に移動する必要があることが多いです。
ホストドライバーが同じ安全でないグループ内のエンドポイントを使い続け、別のエンドポイントがゲストに割り当てられている場合、ソフトウェアによる分離はハードウェアの実際のルーティング境界と一致しないかもしれません。したがって、グループの所属は1つのPCI機能のラベルよりも重要です。
PCIeブリッジとACSは分離にどのように影響しますか?
アクセス制御サービスは上流ポートがピアツーピアトラフィックを分離経路にリダイレクトするのを助けます。ACSオーバーライドは基盤となるトポロジーがデバイスを確実に分離できない場合に分離保証を弱めます。
ソフトウェアのオーバーライドは小さなグループを提示してパススルー設定を可能にするかもしれませんが、ブリッジやスイッチに欠けているルーティングの強制を追加するわけではありません。デバイスはIOMMUが観察またはブロックできない経路を持つ可能性があります。
カードを別のスロットに移動したり、より良いPCIeトポロジーのマザーボードを選んだり、安全でないブリッジ以下のすべてのエンドポイントを割り当てることは、見た目のグループ分割をハードウェアによる分離と同等に扱うよりも強力です。
なぜ割り込みも分離する必要があるのですか?
メモリ変換は直接割り当ての一部に過ぎません。割り込みリマッピングはデバイス生成の割り込みを制御し、DMAリマッピングはメモリトランザクションを制御します。
安全な割り込み経路がなければ、パススルーされたデバイスは誤ったプロセッサやゲストコンテキストに信号を送る可能性があり、プラットフォームは意図した境界を弱める安全でない割り込み互換オプションを必要とするかもしれません。
安全なセットアップでは、ホストのログでDMAと割り込みのリマッピングの両方を検証します。ゲスト内でベンチマークトラフィックが通過することはデバイスが動作していることを示しますが、それだけで全ての割り込みとメモリトランザクションが正しく分離されていることを証明するわけではありません。
IOMMU分離後に残るリスクは何ですか?
IOMMUマッピングはハードウェアが所有者間でクリーンな状態に戻ることを保証できません。一部のパススルーデバイスはクリーンにリセットできず、ホストの再起動までデバイスが使用不能または古い状態を保持したままになることがあります。
デバイスファームウェア、オプションROM、ホストファームウェア、ハイパーバイザのバグ、共有PCIeリソース、サイドチャネル、物理アクセスは狭いDMAマッピング保証の外にあります。パススルーは移行を制限し、回復を特定のデバイスに依存させることもあります。
Proxmoxは物理GPUをVMに公開できますが、安全な設計ではホスト自身の管理経路を確保し、グループトポロジーを検証し、安全でないオーバーライドを避け、VMを分離されたアプライアンスとして扱う前にデバイスリセットをテストします。
| 分離レイヤー | 制御内容 | 残りの境界 |
|---|---|---|
| IOMMUドメイン | デバイスがDMA可能なホストメモリページ | 正しいマッピングとリクエスターの識別が必要 |
| IOMMUグループ | どのPCI機能が独立して割り当て可能か | 実際のPCIeトポロジーによる制限 |
| 割り込みリマッピング | デバイス割り込みの配信先 | 安全でない互換モードは保護を弱めます |
| デバイスリセット | 使用間に古い状態がクリアされるかどうか | 一部のデバイスとファームウェアはリセットが信頼できません |
よくある質問
IOMMUを有効にするとすべてのパススルー構成が安全になりますか?
いいえ。デバイスは安全なグループに属し、DMAと割り込みがリマップされ、PCIeトポロジーが未変換のピアツーピアアクセスを防ぐ必要があります。
マルチファンクションGPUの表示機能だけをパススルーできますか?
時々そうですが、関連するオーディオ、USB、またはコントローラー機能はしばしば同じIOMMUグループとリセット境界を共有します。これらは通常、一緒に切り離して割り当てる必要があります。
ACSオーバーライドは単なるパフォーマンス調整ですか?
いいえ。これはLinuxがグループを表示する方法を変えるもので、必ずしもハードウェアのトラフィック分離を追加するわけではありません。設定を簡単にする一方で、グループ分割のセキュリティの意味を弱めることがあります。
なぜパススルーGPUは時々ホストの再起動を必要とするのですか?
一部のデバイスはクリーンな機能レベルまたはバスリセットをサポートしていません。ゲストのシャットダウン後、カードは次の所有者のために安全に初期化できない状態のまま残ることがあります。
最終的な結論
IOMMUの分離は、DMA対応デバイスに全ホストメモリを信用させるのではなく、制限されたハードウェアアドレス空間を与えることでパススルーをより安全にします。真のセキュリティには、完全なIOMMUグループ、信頼できるPCIeルーティング、割り込みのリマッピング、クリーンなデバイスリセット、保守的なホスト設定も必要です。パススルーされたデバイスは、無害な仮想周辺機器と同等になることなく、ネイティブのパフォーマンスに近づくことができます。
テック&AIハブ
もっと読む

Home AssistantはLAN接続とリモート接続でなぜパフォーマンスが異なるのですか?
LAN接続とリモート接続のHome Assistantセッションではネットワーク経路が異なります。リモート接続では、DNS、暗号化、WAN、プロキシやVPN、再接続処理による遅延が加わります。

Home AssistantはCGNATや二重NAT環境でも安定して動作しますか?
CGNATと二重NATは通常、ローカルでのHome Assistantの制御には影響しません。主に、リモートクライアントがホームネットワークへのインバウンド経路を確立する方法が変わります。

インターネット障害中、ネットワーク遅延はHome Assistantにどのような影響を与えるか?
インターネット接続の喪失とネットワーク遅延は異なる障害です。DNS、クラウド連携、ゲートウェイ、リモートクライアントが待機している間も、ローカルデバイスへの経路は高速なまま維持されることがあります。

