Minha solução é ter um cron job a cada minuto. O cron job verifica se o adaptador de rede possui um endereço IPv4. Se não, /etc/init.d/network restart
é executado.
Um hack realmente feio, mas resolve o problema em questão.
Estou usando um virtualbox 5.2 no Ubuntu 14.04 como host e um Debian 9 como convidado.
Eu configurei meu sistema de guest Debian para ter um IP estático (192.168.56.101) com um adaptador somente host (192.168.56.1/24) no dhcp.
Essa configuração é gravada em /etc/network/interfaces.d/setup
no guest e funciona perfeitamente quando a máquina é inicializada regularmente. O host pode fazer ping no convidado e o convidado pode fazer ping no host.
No entanto, se eu tirar um instantâneo e depois restaurar esse instantâneo, o adaptador será redefinido e a configuração ignorada. O host não pode efetuar ping na máquina e a máquina não pode efetuar ping no host. Um /etc/init.d/network restart
corrige o problema. Consequentemente, ele não pode ser o adaptador ou o host, mas deve ser um problema no convidado.
A reinicialização em si não é o principal problema, mas o flagrante desrespeito da configuração é o problema após a reinicialização. Eu estou bem para esperar alguns segundos, mas não consigo fazer login na máquina com a mão enquanto a máquina é executada sem controle na produção.
Como posso forçar a adesão ao arquivo de configuração de rede após a reinicialização do adaptador?
A única entrada dmesg
relacionada no convidado é:
[...] pcnet32 0000:00:03.0 enp0s3: link down
[...] pcnet32 0000:00:03.0 enp0s3: link up, 100Mbps, full-duplex
Ao tentar encontrar um corte de cronjob sujo, encontrei esta entrada em /var/logs/cron.log
:
..... debian systemd-timesyncd[297]: Network configuration changed, trying to establish connection
Tags networking virtualbox debian