我使用 Ubuntu 14.04 上的 virtualbox 5.2 作为主机,使用 Debian 9 作为客户机。
我已将我的 Debian 客户系统配置为具有静态 IP(192.168.56.101)和仅主机适配器(192.168.56.1/24),无 dhcp。
此配置写入/etc/network/interfaces.d/setup
客户机中,机器定期启动时可完美运行。主机可以 ping 客户机,客户机也可以 ping 主机。
但是,如果我拍摄快照,然后恢复该快照,适配器将被重置,配置将被忽略。主机无法 ping 计算机,计算机也无法 ping 主机。A/etc/init.d/network restart
解决了该问题。因此,它不可能是适配器或主机的问题,而一定是客户机的问题。
重置本身不是主要问题,但重置后公然无视配置才是问题所在。我可以等待几秒钟,但我无法手动登录机器,因为机器在生产中是无头运行的。
适配器重置后,如何强制遵守网络配置文件?
dmesg
关于客人的唯一相关条目是:
[...] pcnet32 0000:00:03.0 enp0s3: link down
[...] pcnet32 0000:00:03.0 enp0s3: link up, 100Mbps, full-duplex
在尝试寻找肮脏的 cronjob 黑客时,我遇到了这个条目/var/logs/cron.log
:
..... debian systemd-timesyncd[297]: Network configuration changed, trying to establish connection
答案1
我的解决方案是每分钟执行一次 cron 作业。cron 作业检查网络适配器是否具有 IPv4 地址。如果没有,则/etc/init.d/network restart
运行。
这是一个非常丑陋的黑客行为,但它解决了当前的问题。