O que eu gostaria de fazer é definir a configuração de rede dos convidados (endereço IP, sub-rede, gateway, endereço de broadcast) do sistema host. A configuração de rede usada está no bridge
modo. Como posso configurar a rede do host em vez de configurar o próprio cliente para uma configuração de rede estática?
Se eu executar:
virsh edit vm1
também existe um <network>
bloco e tentei configurar a interface de rede a partir daí, mas infelizmente a VM convidada não parece usá-la e, como tal, está offline na rede (já que usa apenas a configuração automática de rede) ... Guest As VMs são baseadas em Linux e Windows. Qualquer ajuda seria muito apreciada.
Respostas:
Se você não deseja fazer nenhuma configuração dentro do convidado, a única opção é um servidor DHCP que entregue endereços IP estáticos. Se você usar o
bridge
modo, provavelmente será um servidor DHCP externo. Consulte o manual para descobrir como atender a concessões estáticas.Mas pelo menos nos modos de encaminhamento
nat
ouroute
, você pode usar o libvirt embutidodnsmasqd
(versões mais recentes do libvirtd suportam a opção "dhcp-hostsfile" do dnsmasq). Aqui está como:Primeiro, descubra os endereços MAC das VMs que você deseja atribuir endereços IP estáticos:
Depois edite a rede
Encontre a
<dhcp>
seção, restrinja o intervalo dinâmico e adicione entradas de host para suas VMsEm seguida, reinicie sua VM (ou reinicie o cliente DHCP, por exemplo
ifdown eth0; ifup eth0
)Atualização: vejo que há relatos de que a alteração pode não entrar em vigor após o "virsh net-edit". Nesse caso, tente isso após a edição:
... e reinicie o cliente DHCP da VM.
Se isso ainda não funcionar, você pode precisar
Nota: Não há como o host KVM forçar uma VM com sistema operacional desconhecido e configuração desconhecida a usar uma determinada configuração de rede. Mas se você souber que a VM usa um determinado protocolo de configuração de rede - por exemplo, DHCP - você pode usá-lo. Isto é o que este post assume.
Alguns sistemas operacionais (por exemplo, algumas distribuições Linux) também permitem passar opções de configuração de rede para o convidado, por exemplo, através da linha de comando do kernel. Mas isso é muito específico para o sistema operacional e não vejo vantagem sobre o método DHCP.
fonte
virsh net-update
é um bom comando para você (você não precisa reiniciar / destruir sua rede etc),consulte: https://www.redhat.com/archives/libvir-list/2012-September/msg01380.html
fonte
Consegui fazer
dnsmasq
'ver' o mapeamento IP-MAC recém-adicionado simplesmente enviando um-HUP
sinal para odnsmasq
processo. Depois disso, a reinicialização do novo convidado foi suficiente para que o IP correto fosse atribuído a ele, sem a necessidade de reiniciarlibvirtd
nem a própria rede.A documentação oficial da libvirt ( http://wiki.libvirt.org/page/Networking#Applying_modifications_to_the_network ) menciona esse script Perl não oficial que automatiza todo o processo: https://gist.github.com/bendiken/032ea1bddb9ffafe98b4
Eu mesmo não tentei esse script, porque descobri que o arquivo hosts já estava atualizado e apenas enviar o sinal -HUP era suficiente.
O host está executando o Debian 7.8 e as versões dos pacotes são:
fonte