Linux
如何在啟動時為預設網關設置靜態 MAC 地址?
我需要靜態設置預設網關的 MAC 地址。我使用了命令:
arp -s <ip> <mac>
那行得通,但是在重新啟動時,條目又恢復了動態。
我努力了:
- 在目錄
arp -s <ip> <mac>
中的腳本中編寫相同的命令/etc/network/if-up.d
這看起來很簡單,但沒有奏效。重新啟動時,arp 條目恢復為動態狀態。
- 看裡面的配置
/etc/systemd/network/eth0.network
,它包含:
[Match] Name = eth0 [Network] Description = Interface eth0 autoconfigured by PVE Address = <ip> Gateway = <ip> DHCP = no IPv6AcceptRA = false
我真的不知道如何更改此配置。
您必須將其添加到您的
/etc/systemd/network/eth0.network
文件中:[Neighbor] Address=<gateway IP> LinkLayerAddress=<gateway MAC>
但
Description = Interface eth0 autoconfigured by PVE
建議該文件可能由其他一些軟體管理,因此可能會覆蓋對它的任何更改。這是Proxmox虛擬環境下的虛擬機嗎?
/etc/network/if-up.d
如果您使用經典的 Debianifupdown
軟體包來管理您的網路介面,那麼其中的腳本將適用。但似乎您(或 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
.