起動時にデフォルトゲートウェイの静的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.difupdownしかし、あなた(またはProxmox)が代わりに一般を使用しているようですsystemd-networkd

私はProxmoxについてよく知りません。ネイバーホストの静的MACアドレスを継続的に設定するより良いProxmox準拠の方法がある場合は、この記事を読んでいる人は誰でも自由にコメントしたり、回答を書いてください。

より良い方法がない場合は、通常のネットワーク設定後に実行するカスタムサービスを定義して、必要な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

関連情報