Izolacja IOMMU sprawia, że serwer domowy passthrough jest bezpieczniejszy, umieszczając sprzętową granicę tłumaczenia i uprawnień między przekazanym urządzeniem PCIe a fizyczną pamięcią systemową. VM może sterować urządzeniem bezpośrednio, ale urządzenie powinno mieć dostęp tylko do stron pamięci zmapowanych w domenie tej VM.
Zmniejsza to ryzyko, że zainfekowany sterownik gościa lub wadliwe urządzenie wykona DMA do pamięci hosta lub innej VM. Ochrona nadal zależy od poprawnych grup IOMMU, topologii PCIe, mapowania przerwań, zachowania resetu urządzenia, oprogramowania układowego i unikania obejść, które tylko pozornie oddzielają grupy.
Czym różni się passthrough od wirtualnego I/O?
VFIO daje VM bezpośrednią kontrolę nad urządzeniem zamiast przesyłać każdą operację przez emulowane lub parawirtualne urządzenie kontrolowane przez hypervisor.
Ta bezpośrednia ścieżka może zmniejszyć narzut wirtualizacji i udostępnić funkcje sprzętowe potrzebne przez GPU, dyski NVMe, karty sieciowe i akceleratory. Przenosi też więcej zachowań urządzenia pod kontrolę gościa.
Granica bezpieczeństwa nie może więc opierać się wyłącznie na tym, że gość nie może wykonywać instrukcji CPU hosta. Urządzenie z funkcją bus-master może samodzielnie inicjować transakcje pamięci, więc jego przestrzeń adresowa DMA musi być ograniczona równie starannie jak przestrzeń adresowa CPU gościa.
Jak IOMMU ogranicza DMA urządzenia?
Domeny IOMMU ograniczają dostęp do pamięci urządzenia przez tłumaczenie widocznych dla urządzenia adresów I/O za pomocą tablic stron wybranych dla tego urządzenia.
Gdy VFIO przypisuje urządzenie do maszyny wirtualnej, ważne mapowania powinny odpowiadać pamięci należącej do tej maszyny. Żądanie DMA poza zakresem mapowania może zostać zablokowane, zamiast trafiać do dowolnej pamięci RAM hosta.
To jest kluczowa poprawa bezpieczeństwa w porównaniu z bezpośrednim przekazywaniem urządzenia. Urządzenie nie wybiera bezpośrednio fizycznych adresów hosta; IOMMU sprawdza tożsamość żądającego, mapowanie i uprawnienia dostępu przed zezwoleniem na transakcję.
Dlaczego grupa IOMMU jest granicą przydziału?
Funkcje PCIe, których nie można odizolować od siebie, są umieszczane w tej samej grupie, a wszystkie urządzenia w jednej grupie dzielą izolację.
Karta graficzna może udostępniać funkcje wyświetlania, audio, USB i magistrali szeregowej w jednym pakiecie urządzenia. Te powiązane funkcje często muszą być przenoszone razem, ponieważ dzielą zachowanie resetu lub topologię umożliwiającą komunikację peer-to-peer.
Jeśli sterownik hosta nadal używa punktu końcowego w tej samej niebezpiecznej grupie, podczas gdy inny punkt końcowy jest przypisany do gościa, separacja programowa może nie odpowiadać rzeczywistej granicy trasowania sprzętu. Członkostwo w grupie jest więc ważniejsze niż etykieta jednej funkcji PCI.
Jak mostki PCIe i ACS wpływają na izolację?
Usługi kontroli dostępu pomagają portom upstream przekierowywać ruch peer-to-peer przez ścieżkę izolacji. Nadpisanie ACS osłabia gwarancje izolacji, gdy podstawowa topologia nie może niezawodnie oddzielić urządzeń.
Nadpisanie programowe może umożliwić konfigurację przekazywania przez prezentację mniejszych grup, ale nie dodaje brakującego wymuszania trasowania do mostka lub przełącznika. Urządzenia mogą nadal mieć ścieżkę, której IOMMU nie może obserwować ani zablokować.
Przeniesienie karty do innego gniazda, wybór płyty głównej z lepszą topologią PCIe lub przypisanie każdego punktu końcowego poniżej niebezpiecznego mostka jest silniejsze niż traktowanie kosmetycznego podziału grupy jako równoważnego izolacji sprzętowej.
Dlaczego przerwania muszą być również izolowane?
Translacja pamięci to tylko część bezpośredniego przypisania. mapowanie przerwań kontroluje przerwania generowane przez urządzenie, podczas gdy mapowanie DMA kontroluje transakcje pamięci.
Bez bezpiecznej ścieżki przerwań urządzenie przekazywane może sygnalizować niewłaściwy procesor lub kontekst gościa, albo platforma może wymagać opcji kompatybilności z niebezpiecznymi przerwaniami, co osłabia zamierzoną granicę.
Bezpieczna konfiguracja weryfikuje zarówno DMA, jak i mapowanie przerwań w logach hosta. Przekazanie ruchu testowego do gościa dowodzi, że urządzenie działa; samo to nie dowodzi, że każde przerwanie i transakcja pamięci są poprawnie izolowane.
Jakie ryzyka pozostają po izolacji IOMMU?
Mapowanie IOMMU nie gwarantuje, że sprzęt wróci do czystego stanu między użytkownikami. niektóre urządzenia przekazywane nie resetują się poprawnie, co może pozostawić urządzenie bezużyteczne lub z przestarzałym stanem aż do ponownego uruchomienia hosta.
Oprogramowanie układowe urządzenia, opcjonalne ROM-y, oprogramowanie hosta, błędy hypervisora, współdzielone zasoby PCIe, kanały boczne i fizyczny dostęp pozostają poza wąskim zakresem gwarancji mapowania DMA. Przekazywanie ogranicza też migrację i może sprawić, że odzyskiwanie będzie zależało od konkretnego urządzenia.
Proxmox może udostępniać fizyczne GPU maszynom wirtualnym, ale bezpieczny projekt nadal rezerwuje własną ścieżkę zarządzania hosta, weryfikuje topologię grup, unika niebezpiecznych nadpisań i testuje reset urządzenia przed traktowaniem VM jako izolowanego urządzenia.
| Warstwa izolacji | Co kontroluje | Pozostała granica |
|---|---|---|
| Domena IOMMU | Które strony pamięci hosta urządzenie może adresować przez DMA | Wymaga poprawnych mapowań i tożsamości żądającego |
| Grupa IOMMU | Które funkcje PCI można przypisać niezależnie | Ograniczone przez rzeczywistą topologię PCIe |
| Mapowanie przerwań | Gdzie dostarczane są przerwania urządzenia | Niebezpieczne tryby zgodności osłabiają ochronę |
| Reset urządzenia | Czy przestarzały stan jest czyszczony między użyciami | Niektóre urządzenia i oprogramowanie układowe resetują się niestabilnie |
FAQ
Czy włączenie IOMMU sprawia, że każda konfiguracja przekazywania jest bezpieczna?
Nie. Urządzenie musi znajdować się w bezpiecznej grupie, DMA i przerwania muszą być zmapowane na nowo, a topologia PCIe musi zapobiegać nieprzetłumaczonemu dostępowi peer-to-peer.
Czy mogę przekazać tylko funkcję wyświetlania wielofunkcyjnej karty graficznej?
Czasami, ale powiązane funkcje audio, USB lub kontrolera często dzielą jedną grupę IOMMU i granicę resetu. Zwykle muszą być odłączone i przypisane razem.
Czy nadpisanie ACS to tylko poprawka wydajności?
Nie. Zmienia to sposób prezentacji grup w Linuksie, niekoniecznie dodając izolację ruchu sprzętowego. Może ułatwić konfigurację, osłabiając jednocześnie znaczenie bezpieczeństwa podziału grup.
Dlaczego przekazywana karta graficzna czasem wymaga ponownego uruchomienia hosta?
Niektóre urządzenia nie obsługują czystego resetu na poziomie funkcji lub magistrali. Po zamknięciu gościa karta może pozostać w stanie, który nie pozwala na bezpieczną inicjalizację dla kolejnego użytkownika.
Ostateczne wnioski
Izolacja IOMMU zwiększa bezpieczeństwo przekazywania urządzeń, przydzielając urządzeniu z możliwością DMA ograniczoną przestrzeń adresową sprzętu, zamiast ufać mu w dostępie do całej pamięci hosta. Prawdziwe bezpieczeństwo wymaga również nienaruszonych grup IOMMU, wiarygodnego routingu PCIe, mapowania przerwań, czystego resetu urządzenia oraz konserwatywnej konfiguracji hosta. Urządzenie przekazane może osiągać wydajność zbliżoną do natywnej, nie stając się jednocześnie równoważne z nieszkodliwym wirtualnym peryferium.
Centrum Technologii i Sztucznej Inteligencji
Więcej do przeczytania

Dlaczego Home Assistant działa inaczej w sieci lokalnej i przy połączeniach zdalnych?
Sesje Home Assistant w sieci LAN i zdalne korzystają z różnych ścieżek sieciowych; opóźnienie zdalne obejmuje DNS, szyfrowanie, sieć WAN, serwer proxy lub VPN...

Czy Home Assistant działa niezawodnie za CGNAT-em lub podwójnym NAT-em?
CGNAT i podwójny NAT zazwyczaj nie wpływają na lokalne sterowanie Home Assistantem; zmieniają głównie sposób, w jaki zdalni klienci mogą utworzyć ścieżkę przychodzącą do...

Jak opóźnienie sieci wpływa na działanie Home Assistant podczas awarii Internetu?
Utrata dostępu do Internetu i opóźnienia sieciowe to różne awarie: lokalne ścieżki urządzeń mogą nadal działać szybko, podczas gdy DNS, integracje z chmurą, bramy...

