树莓派 Raspberry Pi OS 运行大量的 Docker 容器时无法 通过 DHCP 拿到 IP 地址

某次重启,然后发现树莓派不能 ssh 上去了。

还好就放在电脑桌上,直接 HDMI 接显示器,发现树莓派的 IPv4 地址没了,但IPv6还好好的。

用 dhclient 重新做了一次 DHCP,又能正常拿到 IPv4 地址。

sudo dhclient -v eth0

这证明我的局域网环境没有问题,而且子网里面其他设备都是一切正常的。

那就直接检查树莓派了。

从 2015-05-05 的 Raspbian Wheezy 和 Raspbian Jessie 开始,网络配置是通过 DHCP 客户端 Deamon (DHCPCD) 完成的,而不是在“/etc/network/interfaces”文件中。

检查了一下 /etc/dhcpcd.conf,里面的内容没有被修改过。

看一下 dhcpcd 的情况

sudo service dhcpcd status

果然里面出现了有用的信息

dhcpcd[xxx]: route socket overflowed - learning interface state

然后找到了 Github 上面的这个 Issue:Raspberry Pi 4: DHCPCD route socket overflowed #4092

里面的内容大概就是,在运行着一堆 Docker 容器从而有一堆 veth 网络接口之后,会导致 Raspberry Pi OS 里面的dhcpcd (我这环境里跑的是 dhcpcd 8.1.2) 出 BUG 然后崩溃。

里面暂时的解决方案是在 dhcpcd.conf 里面直接写把 Docker 使用的 veth 网络接口排除出去

sudo nano /etc/dhcpcd.conf

然后在 dhcpcd.conf 最后面加上

denyinterfaces veth*

保存并重启

问题解决

chevron_left
chevron_right

Leave a comment

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Comment
Name
Email
Website