树莓派莫名奇妙断网,而且时间非常有周期性,为 12h。
这与 DHCP 租约时间很符合,因此猜测是否是 DHCP 客户端出现了问题。但是对树莓派网络软件不够了解,于是在论坛上面找到了 这个帖子 解决了问题。
树莓派轻量包默认没带 NetworkManager,而是使用 dhcpc
作为 dhcp 的客户端,
使用 systemctl status dhcpcd
查看 dhcpcd
的状态,果然发现它挂了。于是在 12h 后 dhcp 租约过期,自然而然挂了。
github 上有 相关 issue,说明原因为树莓派上跑的容器太多,而每个容器都要分配网络,导致 dhcpcd
承受不住挂掉。
最简单的修改方法为在 /etc/dhcpcd.conf
文件下加上 denyinterfaces veth*
这一行,然后重启 dhcpd 服务。因为 docker 的网络与宿主机的 dhcpcd 无关,所以 dhcpcd 完全不需要介入 docker 虚拟出来的接口。