Permanente Einträge in die ARP-Tabelle

Published at 2023-11-22T11:30:42+01:00

Date: 2023-10-03 18:20

Modified: 2023-10-03 18:20

Category: Network Tags: arp, network, linux, offline

Slug: permanent-arp-entry

Author: Reiko Kaps

Permanente Einträge in die lokale ARP- bzw. NDP-Tabelle eines Linux-Rechners
einfügen

Aus diversen Gründen habe ich meinen Homeserver-Pi wieder gegen einen PC

getauscht: Den damit einhergehenden Mehrverbrauch an Strom minimiere ich

durch recht rigide Strommaßnahmen, die ich mittels des

Autosuspend-Daemons umsetze.

Das kleine Python-Programm schickt den PC nach einer definierbaren

Zeit in den Ruhestand, überprüft aber vorab, ob eine Reihe von

Ausschlussbedingungen erfüllt sind. Dazu können bestehende SSH- oder

Samba-Verbindungen ebenso gehören wie eigene, selbstgeschrieben Tests.

Außerdem setzt das Skript Wiederaufwach-Timer, die den PC entweder in

Intervallen oder zu den Laufzeiten von Systemd-Timern aufwecken.In

meinem Setup schickt Autosuspend den PC nach 15 Minuten Untätigkeit in

den S3-Sclaf und weckt ihn etwa zum Backup externe Dienste bzw. alle 5

Stunden wieder auf.

Damit ich nicht immer ein Magic-Paket an den Rechner schicken muss,

horcht die Ethernet-Schnittstelle des PCs auf eingehende

Unicast-Pakete. Das funktioniert allerdings nur dann, wenn der

anfragende Rechner die MAC-Adresse des PCs über einen dauerhaften

Eintrag in seiner

ARP-Tabelle bzw. NDP-Tabelle

kennt.

Unter Linux lässt sich das temporär auf der Kommandozeile mittels des

Befehls ip für IPv4 eintragen:

Der Platzhalter

SchnittstellestehtdabeifürdieNetzwerkschnittstelle, überdiederanzusprechendeRechner(Hostname)

mit seiner $MAC-Adresse zu erreichen ist. Mittels des Befehls

bekommt man übrigens sowohl die Einträge für IPv4 als auch IPv6

angezeigt:

[Befehlsausgabe ip neighbor show]{: .image-process-large-photo}

Da diese Einträge beim nächsten Boot wieder verschwinden, sollte man

diese Einträge beim Start des Netzwerks setzen - etwa mittels eines

Dispatcher-Skripts des NetworkManagers

. Diese Skripte liegen meist im Verzeichis

/etc/NetworkManager/dispatcher.d. Ein Beispiel dafür sieht etwa so aus:

Das Skript verwendet hier die Option -f, über die sich eine Datei

angeben lässt, die pro Zeile eine MAC-Adresse und den dazu gehörenden

Hostnamen enthält. Das ist pflegeleichter und flexibler, wenn es gilt

neue Einträge hinzuzufügen. Die Shell-Variable $1 enthält hier die

gerade startende ($2) Netzwerkschnittstelle.