TFTP para hosts libvirt por trás do NAT

1

Isso me levou o dia todo para malhar, então pensei em gravar isso aqui!

Eu tenho um host LibVirt com NAT em vez de fazer ponte para as máquinas virtuais hospedadas, usando as regras padrão do IPTables construídas pelo LibVirt quando instaladas. Eu poderia instalar um sistema operacional usando um CD virtual e obter conectividade total à Internet, mas devido à natureza mais complexa do TFTP * para inicialização PXE, o mascaramento não parecia passar as respostas TFTP de volta para as VMs.

Eu pude ver a seguinte sequência de pacotes de várias instâncias do tcpdump:

  1. VM udp / efêmero para o host do LibVirt udp / 69 solicitando o arquivo
  2. Libver UDP hospedeiro / efêmero para servidor TFTP udp / 69 solicitando arquivo
  3. servidor TFTP udp / ephemeral2 para o host do LibVirt udp / ephemeral

Neste momento, nada mais passou e o cliente tftp da VM expirou.

Eu tentei usar os módulos do kernel ip_conntrack_tftp / nf_conntrack_tftp e ip_nat_tftp / nf_nat_tftp, mas isso não ajudou.

* Embora a solicitação inicial do cliente para o servidor esteja no udp / 69, a resposta do servidor para o cliente se origina de uma porta efêmera pseudoaleatória.

    
por Iain Hallam 14.12.2015 / 18:18

2 respostas

2

Por fim, encontrei um artigo sobre o VMWare que apresentava um problema semelhante e tentei alternar o tipo de interface de rede LibVirt do virtio para o e1000. Sucesso instantâneo!

    
por 14.12.2015 / 18:19
2

Eu tive exatamente o mesmo problema que você e acabei encontrando sua postagem.

Do meu lado, carregar o nf_nat_tftp no host do Libvirt foi suficiente para fazê-lo funcionar. Obrigado por essa dica!

    
por 27.02.2016 / 22:52