如何在启动时为默认网关设置静态 MAC 地址?

如何在启动时为默认网关设置静态 MAC 地址?

我需要静态设置默认网关的 MAC 地址。我使用了命令:

arp -s <ip> <mac>

这可行,但重新启动后该条目又恢复为动态状态。

我努力了:

  1. 在目录中的脚本arp -s <ip> <mac>中编写相同的命令/etc/network/if-up.d

这看起来很简单,但行不通。重新启动后,arp 条目将恢复为动态状态。

  1. 看看里面的配置/etc/systemd/network/eth0.network

它包含了:

[Match]
Name = eth0

[Network]
Description = Interface eth0 autoconfigured by PVE
Address = <ip>
Gateway = <ip>
DHCP = no
IPv6AcceptRA = false

我真的不知道如何更改此配置。

答案1

您必须将其添加到您的/etc/systemd/network/eth0.network文件中:

[Neighbor]
Address=<gateway IP>
LinkLayerAddress=<gateway MAC>

Description = Interface eth0 autoconfigured by PVE建议该文件可能由其他一些软件管理,因此对其进行的任何更改都可能被覆盖。这是Proxmox虚拟环境下的虚拟机吗?

如果您使用经典的 Debian软件包来管理网络接口,/etc/network/if-up.d则适用中的脚本。ifupdown但看来你(或 Proxmox )正在使用 plainsystemd-networkd代替。

我不知道Proxmox;如果您有更好的 Proxmox 兼容方式来为相邻主机持久配置静态 MAC 地址,请阅读本文的任何人随意发表评论或撰写您自己的答案。

如果没有更好的方法,您当然可以定义一个自定义服务在常规网络设置后运行,该服务将执行所需的arp -s命令。

这样的服务定义可能如下所示:

[Unit]
Description = Set gateway MAC address statically
After = network.target network-online.target
Wants = network-online.target

[Service]
Type = oneshot
RemainAfterExit = yes
ExecStart = /usr/sbin/arp -s <gateway IP> <gateway MAC>
# Alternative command to set gateway MAC without the legacy arp command:
# ExecStart = /sbin/ip neigh add <gateway IP> lladdr <gateway MAC> nud permanent router

[Install]
WantedBy = multi-user.target

您可以将其放置到例如/etc/systemd/system/gatewayMAC.service

相关内容