我有一个运行 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 服务器完成其余工作。