Odroid C2 Problem mit wechselnder MAC Adresse

Mein Odroid C2 Single Bord läuft schon eine ganze Weile unter Arch Linux. Ende 2017 wechselte ich auf den Arch Linux Mainline Kernel inklusive dem Mainline U-Boot. Details zum Umstieg gibt es hier: Klick
Kürzlich stellte ich fest, dass auf meinem DNS etliche Einträge meines Odroid C2 mit unterschiedlichen MAC Adressen auftauchten. Ob dies auch vor dem Wechsel auf den Mainline Kernel so war, kann ich nicht mit Gewissheit sagen. Nach ein wenig Analyse stellte sich heraus, dass der Odroid C2 mit jedem Boot eine andere MAC Adresse erhalten hat, was ja eigentlich nicht passieren sollte, da die MAC Adresse fest hinterlegt ist. Anscheinend ist das beim Odroid C2 nicht der Fall, was auf ein schlampiges Design deutet.


Zusätzlich sorgten die vielen Einträge im DNS für Probleme beim Portforwarding. MAC Address Spoofing kann ja durchaus mal erwünscht sein, dann wird das aber explizit konfiguriert. Über Anpassungen an der systemd-network Konfiguration konnte ich das Verhalten nicht stoppen. Nach ein wenig Recherche bin ich im Arch Linux Wiki auf einen interessanten Beitrag zum Thema “MAC Spoofing” gestoßen. Da ich es darüber herbeiführen konnte, dachte ich mir, dass ich damit das Verhalten möglicherweise auch zu meinen Gunsten nutzen kann. Folgende Vorgehensweise brachte mich dann auch ans Ziel, dass die MAC Adresse bei jedem Boot die selbe bleibt. Die Lösung besteht in einem systemd Dienst, der über “iproute2” bei jedem Boot eine definierte MAC Adresse während dem Netzwerkstart setzt.

/etc/systemd/system/macspoof@.service

Die MAC Adresse kann hier natürlich nach Belieben angepasst werden.

[Unit]
Description=MAC Address Change %I
Wants=network-pre.target
Before=network-pre.target
BindsTo=sys-subsystem-net-devices-%i.device
After=sys-subsystem-net-devices-%i.device

[Service]
Type=oneshot
ExecStart=/usr/bin/ip link set dev %i address 36:aa:88:c8:75:3a
ExecStart=/usr/bin/ip link set dev %i up

[Install]
WantedBy=multi-user.target

Jetzt muss der systemd Dienst noch aktiviert und gestartet werden. Dabei ist der Name der Netzwerkkarte mit anzugeben. In diesem Beispiel ist es “eth0”

sudo systemctl enable macspoof@eth0.service && sudo systemctl start macspoof@eth0.service

Bei einem Neustart des Systems wird ab sofort die im systemd Dienst eingetragene MAC Adresse verwendet.

ifconfig

Odroid C2 random MAC Address

Der Vorteil an dieser simplen Lösung ist, dass sie unabhängig vom eingesetzten Netzwerkmanager ist.

Quelle: Arch Wiki