如何永久设置硬件mac地址?

如何永久设置硬件mac地址?

我有一个运行 20.04.4 的无头 ARM 服务器,由于我无法理解的原因,它的所有 NIC 的硬件 mac 都为零,并且在每次重启时都会随机设置当前 mac。

╰─ macchanger eth2
Current MAC:   2a:77:19:7c:b4:e4 (unknown)
Permanent MAC: 00:00:00:00:00:00 (XEROX CORPORATION)

我在网络上运行 pi hole,它还处理 DHCP 服务,并且只能根据报告的 mac 地址分配静态 IP。这意味着我的服务器每次重新启动时都会获得一个新的 IP 地址,当 pi hole 出现问题时,这会带来问题。

我希望我的服务器即使在重新启动时也能保留给定接口的 MAC 地址。

我试过了

ip link set eth2 address 2A:77:19:7C:B4:E4

但在重启时它被清除了。

我尝试使用带有 systemd-networkd 的链接文件,但这似乎也没有任何效果。

sudo nano /etc/systemd/network/10-eth2.link 
[Match]
PermanentMACAddress=00:00:00:00:00:00

[Link]
MACAddress=2A:77:19:7C:B4:E4

经过一番挖掘,我发现这些日志条目

journalctl -b -u systemd-udevd.service
eth2: Could not generate persistent MAC: No data available
Feb 25 23:23:42 macchiatobin systemd-udevd[480]: ethtool: autonegotiation is unset or enabled, the speed and duplex are not writable.

否则,我怎样才能将我的 mac 地址永久设置为相同的值,或者在启动时将其设置为每次启动时相同的值?

答案1

我可以按如下方法解决这个问题。

我创建了这个文件:

/etc/netplan/config.yaml                  

内容:

network:
    version: 2
    renderer: networkd
    ethernets:
        eth0:
            macaddress: ba:e4:64:bc:81:d7
        eth1:
            macaddress: c2:1c:fb:6b:fb:73
        eth2:
            macaddress: 2A:77:19:7C:B4:E4
        eth3:
            macaddress: ba:2a:5c:54:35:60

其中 eth0/1/2/3 是我的机器上的接口。然后我能够立即使用

sudo netplan apply

重启后这些设置将会保留。

请注意,pihole dhcp 服务器中有一个错误,使用 UI 时不会删除动态租约。您可以编辑 /etc/pihole/dhcp.leases 中的文件并直接删除租约。然后使用

sudo pihole restartdns

此设置现在为接口分配相同的 mac 地址,dhcp 服务器完成其余工作。

相关内容