Eu configurei uma interface macvtap assim:
ip link add link eth0 vlan type macvlan mode bridge
ip address add 10.0.0.17 dev vlan
ip link set dev vlan up
ip route flush dev eth0
ip route flush dev vlan
ip route add 10.0.0.0/24 dev vlan metric 0
ip route add default via 10.0.0.1
ip link add link eth0 name vtap address xx:xx:xx:xx:xx:xx type macvtap mode bridge
ip link set vtap up
ip address flush eth0
ip address flush vtap
dhclient -v vtap
ip address flush vtap
E funciona bem por algumas horas. Mas depois disso, todas as conexões com o IP do DHCP (macvtap) começarão a ir para a máquina host. Portanto, se eu me conectar ao IP na porta 80, por exemplo, verei uma página servida pelo host em vez da VM.
Estou tentando entender porque para de funcionar. A princípio, pensei que talvez a concessão do DHCP tivesse expirado e dhclient
não fosse renová-la. Mas o tempo de locação é de 24 horas, e esse problema começa antes disso, às vezes em menos de 10 horas.
Então, o que pode estar fazendo com que a macvtap
interface pare de funcionar?
Quando
dhclient
foi iniciado, era o único que usava amacvtap
interface. Mas quandodhclient
estava enviando um pacote para renovar o aluguel depois de muitas horas, ele quebrou o macvtap porque naquele momento o convidado também estava usando a interface. E o host e o convidado não podem usar a mesma interface simultaneamente.Se um programa totalmente diferente tivesse acabado de enviar um pacote aleatório do host por essa interface, por exemplo, um simples
ping
, o mesmo teria acontecido. Portanto, esse problema não estava relacionado ao DHCP de forma alguma.