Permitir que convidados KVM na rede virtual virsh acessem a rede interna real

Permitir que convidados KVM na rede virtual virsh acessem a rede interna real

Tenho uma rede doméstica 192.168.1.0 atrás de um roteador 192.168.1.1. Um conjunto de hosts Linux e Windows existentes está nesta rede, a maioria em conexões Ethernet com fio. Estou configurando um novo servidor que executa um hipervisor KVM e 3 convidados Debian. O novo servidor usa wifi para conectividade de rede.

No hipervisor, eu virshconfigurava uma rede virtual assim:

<network>
  <name>virtual</name>
  <forward mode='route'/>
  <ip address='192.168.2.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.2.2' end='192.168.2.255'/>
      <host mac='52:54:00:00:00:01' ip='192.168.2.2'/>
      <host mac='52:54:00:00:00:02' ip='192.168.2.3'/>
      <host mac='52:54:00:00:00:03' ip='192.168.2.4'/>
    </dhcp>
  </ip>
</network>

Em seguida, criei uma rota estática em meu roteador de 192.168.2.0/24 para o endereço IP do hipervisor 192.168.1.41.

Quando criei os convidados Debian, especifiquei o nome da rede virtual e os endereços MAC da virshrede virtual, assim:

--network network=virtual,mac=52:54:00:00:00:01

Isso resulta /etc/network/interfacesassim em cada convidado:

iface eth0 inet static
   address 192.168.2.2
   netmask 255.255.255.0
   network 192.168.2.0
   broadcast 192.168.2.255
   gateway 192.168.2.1

Com essa configuração implementada, a maioria das coisas funciona. Eu posso:

  • Conecte-se de hosts em 192.168.1.0 a ambos os endereços IP do hipervisor (.2.1 e .1.41)
  • Conecte-se de hosts em 192.168.1.0 a cada convidado
  • Conecte-se do hipervisor a cada convidado
  • Conecte-se de cada convidado ao hipervisor (.2.1) e entre si
  • Conecte-se de cada convidado à Internet pública
  • Encaminhar conexões externas (internet) do roteador para convidados individuais

No entanto, eunão podeconecte-se dos convidados a qualquer host na rede 192.168.1.0. Por exemplo, não consigo fazer ssh de 192.168.2.2 a 192.168.1.31.

A traceroutemostra algo assim:

traceroute to 192.168.1.31 (192.168.1.31), 30 hops max, 60 byte packets
 1  sol (192.168.2.1)  0.295 ms  0.252 ms  0.243 ms
 2  * * *
 3  * * *
 4  * * *
 5  * * *
 6  * * *

Não tenho certeza se minha configuração está incorreta ou se posso estar tendo problemas com o ponto de acesso sem fio.

Eu tentei adicionar ebtablesconfiguração (conforme discutidoaqui) para fazer a tradução MAC, mas isso não fez diferença. Tentei adicionar um dispositivo de rede de ponte separado fora do virsh, mas os dispositivos virtuais existentes não podem ser conectados a nenhuma outra ponte. Eu considerei outras opções, como um virshfiltro ou talvez algumas regras do iptables, mas estou me agarrando a qualquer coisa.

Alguém pode sugerir a maneira certa de abordar isso?

informação relacionada