Eu também tive problemas com o script. Eu não tive que fazer isso duas vezes. As coisas começaram a funcionar novamente depois de um minuto ou mais. Mas isso ainda era chato. Eu decidi que faz mudanças de roteamento desnecessárias. Não há motivos para o tráfego normal do host não usar a interface física. Você só precisa usar o macvlan para acessar suas VMs. Por essa razão, as únicas mudanças de roteamento que você realmente precisa são
ip route flush dev $ MACVLN
ip route adiciona métrica $ VMHOST dev $ MACVLN 0
Nesse momento, não tive mais problemas.
Também não vale nada que pelo menos no Centos 7, o / sbin / ifup-local seja executado pela rede de reinício do systemctl no final da criação de uma interface. Então você pode colocar o script lá, embora deva começar com algo assim, já que você não quer executá-lo quando outras interfaces são ativadas.
se! teste "$ 1"="em1"; então
sair 0
fi
Você provavelmente também não precisa do loop de ping quando é / sbin / ifup-local. Na verdade, é perigoso, já que é um loop infinito, então, se houver algum problema de rede, o sistema pode não apresentar isso como parte da inicialização.