本文永久链接: https://www.xtplayer.cn/linux/network/could-not-generate-persistent-mac-address/

问题现象

在 docker 容器环境中,可能会看到很多如下的错误日志:

Could not generate persistent MAC address for tap0: No such file or directory

问题分析

这是一个容器环境下的 BUG:https://github.com/systemd/systemd/issues/3374

解决方案

编辑以下文件,如果这个文件没有则新建,然后配置以下参数。

/etc/systemd/network/99-default.link

[Link]
NamePolicy=kernel database onboard slot path
MACAddressPolicy=none
MACAddressPolicy=
如何设置网卡的 MAC 地址:

persistent
如果内核使用了网卡硬件固有的 MAC 地址(绝大多数网卡都有), 那么啥也不做, 直接使用内核的 MAC 地址。 否则, 将会随机新生成一个 确保在多次启动之间保持固定不变的 MAC 地址(针对给定的主板与网卡)。 自动生成 MAC 地址的特性 要求网卡必须存在 ID_NET_NAME_* 属性, 否则无法自动生成 MAC 地址。

random
如果内核使用了随机生成的 MAC 地址(而不是网卡硬件固有的 MAC 地址), 那么啥也不做,直接使用内核的 MAC 地址。 否则,将在网卡每次出现的时候(一般在启动过程中)随机新生成一个 MAC 地址。 无论使用上述哪种方式生成的 MAC 地址, 都将设置 "unicast""locally administered" 位。

none
无条件的直接使用内核的 MAC 地址。