O isolamento IOMMU torna o passthrough de servidores domésticos mais seguro ao colocar um limite de tradução e permissão de hardware entre um dispositivo PCIe passado e a memória física do sistema. A VM pode controlar diretamente o dispositivo, mas o dispositivo deve aceder apenas às páginas de memória mapeadas no domínio dessa VM.
Isto reduz o risco de que um driver comprometido do convidado ou um dispositivo defeituoso realize DMA na memória do anfitrião ou de outra VM. A proteção ainda depende de grupos IOMMU corretos, topologia PCIe, remapeamento de interrupções, comportamento de reset do dispositivo, firmware e evitar soluções que apenas façam os grupos parecerem separados.
Porque é que o passthrough é diferente do I/O virtual?
O VFIO dá controlo direto do dispositivo a uma VM em vez de enviar cada operação através de um dispositivo emulado ou paravirtual controlado pelo hipervisor.
Esse caminho direto pode reduzir a sobrecarga da virtualização e expor funcionalidades de hardware necessárias para GPUs, unidades NVMe, adaptadores de rede e placas aceleradoras. Também transfere mais comportamento do dispositivo para o controlo do convidado.
O limite de segurança, portanto, não pode depender apenas do convidado ser incapaz de executar instruções da CPU do anfitrião. Um dispositivo com controlo de bus pode iniciar transações de memória independentemente, por isso o seu espaço de endereços DMA deve ser confinado tão cuidadosamente quanto o espaço de endereços da CPU do convidado.
Como é que o IOMMU restringe o DMA do dispositivo?
Os domínios IOMMU limitam o acesso à memória do dispositivo ao traduzir os endereços I/O visíveis ao dispositivo através de tabelas de páginas selecionadas para esse dispositivo.
Quando o VFIO atribui um dispositivo a uma VM, os mapeamentos válidos devem corresponder à memória pertencente a essa VM. Um pedido DMA fora do intervalo mapeado pode ser bloqueado em vez de alcançar a RAM arbitrária do anfitrião.
Esta é a melhoria central de segurança em relação ao passthrough não mediado. O dispositivo não escolhe diretamente os endereços físicos do anfitrião; o IOMMU verifica a identidade do solicitante, o mapeamento e a permissão de acesso antes de permitir a transação.
Porque é que um grupo IOMMU é o limite de atribuição?
Funções PCIe que não podem ser isoladas umas das outras são colocadas no mesmo grupo, e todos os dispositivos num grupo partilham isolamento.
Uma placa gráfica pode expor funções de ecrã, áudio, USB e barramento serial sob um único pacote de dispositivo. Essas funções relacionadas frequentemente precisam de se mover juntas porque partilham comportamento de reset ou uma topologia que permite comunicação peer.
Se um driver do anfitrião continuar a usar um endpoint dentro do mesmo grupo inseguro enquanto outro endpoint é atribuído a um convidado, a separação por software pode não corresponder à verdadeira fronteira de roteamento do hardware. A pertença ao grupo é, portanto, mais importante do que o rótulo numa função PCI.
Como é que as pontes PCIe e o ACS afetam o isolamento?
Os Serviços de Controlo de Acesso ajudam as portas upstream a redirecionar o tráfego peer-to-peer através do caminho de isolamento. A sobreposição ACS enfraquece as garantias de isolamento quando a topologia subjacente não consegue separar fiavelmente os dispositivos.
Uma sobreposição de software pode tornar a configuração de passthrough possível ao apresentar grupos menores, mas não adiciona a aplicação de roteamento em falta a uma ponte ou switch. Os dispositivos podem ainda ter um caminho que o IOMMU não consegue observar ou bloquear.
Mover uma placa para outro slot, selecionar uma motherboard com melhor topologia PCIe, ou atribuir cada endpoint abaixo da ponte insegura é mais forte do que tratar uma divisão cosmética de grupo como equivalente a um isolamento suportado por hardware.
Porque é que as interrupções também devem ser isoladas?
A tradução de memória é apenas parte da atribuição direta. o remapeamento de interrupções controla as interrupções geradas pelo dispositivo, enquanto o remapeamento DMA controla as transações de memória.
Sem um caminho seguro para interrupções, um dispositivo passado pode sinalizar o processador ou contexto do convidado errado, ou a plataforma pode exigir uma opção de compatibilidade de interrupção insegura que enfraquece a fronteira pretendida.
Uma configuração segura verifica tanto o DMA como o remapeamento de interrupções nos registos do anfitrião. Passar tráfego de benchmark dentro do convidado prova que o dispositivo funciona; não prova por si só que cada interrupção e transação de memória está isolada corretamente.
Que riscos permanecem após o isolamento IOMMU?
O mapeamento IOMMU não pode garantir que o hardware volte a um estado limpo entre utilizadores. alguns dispositivos em passthrough falham em reiniciar corretamente, o que pode deixar o dispositivo inutilizável ou com estado obsoleto até que o anfitrião seja reiniciado.
Firmware do dispositivo, ROMs de opção, firmware do anfitrião, bugs do hipervisor, recursos PCIe partilhados, canais laterais e acesso físico permanecem fora da garantia estreita do mapeamento DMA. O passthrough também limita a migração e pode fazer a recuperação depender de um dispositivo específico.
O Proxmox pode expor GPUs físicas às VMs, mas um design seguro ainda reserva o caminho de gestão próprio do anfitrião, verifica a topologia dos grupos, evita overrides inseguros e testa a reinicialização do dispositivo antes de tratar a VM como um aparelho isolado.
| Camada de Isolamento | O Que Controla | Limite Remanescente |
|---|---|---|
| Domínio IOMMU | Quais páginas de memória do anfitrião um dispositivo pode aceder via DMA | Requer mapeamentos corretos e identidade do solicitante |
| Grupo IOMMU | Quais funções PCI podem ser atribuídas independentemente | Limitado pela topologia real do PCIe |
| Remapeamento de interrupções | Onde as interrupções do dispositivo são entregues | Modos de compatibilidade inseguros enfraquecem a proteção |
| Reinicialização do dispositivo | Se o estado obsoleto é limpo entre usos | Alguns dispositivos e firmware reiniciam de forma pouco fiável |
Perguntas Frequentes
Ativar o IOMMU torna todas as configurações de passthrough seguras?
Não. O dispositivo deve estar num grupo seguro, o DMA e as interrupções devem ser remapeados, e a topologia PCIe deve impedir o acesso peer-to-peer não traduzido.
Posso passar apenas a função de ecrã de uma GPU multifunção?
Às vezes, mas funções relacionadas de áudio, USB ou controlador frequentemente partilham um grupo IOMMU e um limite de reinicialização. Normalmente precisam de ser destacadas e atribuídas em conjunto.
O override ACS é apenas um ajuste de desempenho?
Não. Muda a forma como o Linux apresenta os grupos sem necessariamente adicionar isolamento de tráfego de hardware. Pode facilitar a configuração enquanto enfraquece o significado de segurança da divisão dos grupos.
Por que é que uma GPU em passthrough às vezes requer uma reinicialização do anfitrião?
Alguns dispositivos não suportam uma reinicialização limpa a nível de função ou barramento. Após o encerramento do convidado, a placa pode permanecer num estado que não pode ser inicializado com segurança para o próximo utilizador.
Conclusão Final
O isolamento IOMMU torna o passthrough mais seguro ao dar a um dispositivo com capacidade DMA um espaço de endereço de hardware restrito, em vez de confiar-lhe toda a memória do anfitrião. A segurança real também requer grupos IOMMU intactos, encaminhamento PCIe confiável, remapeamento de interrupções, reinicialização limpa do dispositivo e configuração conservadora do anfitrião. Um dispositivo passado pode alcançar desempenho nativo sem se tornar equivalente a um periférico virtual inofensivo.
Centro de Tecnologia e IA
Mais para Ler

Porque é que o Home Assistant tem um desempenho diferente em ligações LAN e remotas?
As sessões do Home Assistant na LAN e remotamente utilizam caminhos de rede diferentes; a latência remota acrescenta DNS, encriptação, WAN, proxy ou VPN,...

O Home Assistant funciona de forma fiável por trás de CGNAT ou de NAT duplo?
O CGNAT e o duplo NAT normalmente não afetam o controlo local do Home Assistant; alteram sobretudo a forma como os clientes remotos podem...

Como é que a latência da rede afeta o Home Assistant durante falhas de Internet?
A perda de ligação à Internet e a latência da rede são falhas diferentes: os caminhos dos dispositivos locais podem continuar rápidos enquanto o...

