mac-adresse über cmdline setzen
mac-adresse über cmdline setzen
Hallo,
besteht eine Möglichkeit die MAC-Adresse eines interfaces (möglichst mit Angabe des Interface-namens) vom bootloader (u-boot) über die cmdline zu setzen?
ich habe die Seite mal durchgeschaut (und natürlich gegoogled), aber nichts passendes gefunden: https://www.kernel.org/doc/html/v4.14/a ... eters.html
Gruß Frank
besteht eine Möglichkeit die MAC-Adresse eines interfaces (möglichst mit Angabe des Interface-namens) vom bootloader (u-boot) über die cmdline zu setzen?
ich habe die Seite mal durchgeschaut (und natürlich gegoogled), aber nichts passendes gefunden: https://www.kernel.org/doc/html/v4.14/a ... eters.html
Gruß Frank
- unitra
- Beiträge: 646
- Registriert: 15.06.2002 21:09:38
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: 127.128.129.130
Re: mac-adresse über cmdline setzen
So eine Möglichkeit der Änderung der MAC Adresse über die kernel command line beim Booten besteht nicht.
Re: mac-adresse über cmdline setzen
Warum ist es in deinem Fall wichtig oder erforderlich, dass das mit dem bootloader gesetzt wird?
Debian 12.9 mit LXDE, OpenBSD 7.6 mit i3wm, FreeBSD 14.1 mit Xfce
Re: mac-adresse über cmdline setzen
Ich denke das wird vom Treiber abhängig sein:unitra hat geschrieben:11.11.2018 20:19:09... Änderung der MAC Adresse über die kernel command line beim Booten besteht nicht.
ether= [HW,NET] Ethernet cards parameters
This option is obsoleted by the "netdev=" option, which
has equivalent usage. See its documentation for details.
https://www.kernel.org/doc/htmldocs/net ... dress.htmlnetdev= [NET] Network devices parameters
Format: <irq>,<io>,<mem_start>,<mem_end>,<name>
Note that mem_start is often overloaded to mean
something different and driver-specific.
This usage is only documented in each driver source
file if at all.
Beim PI z. B., geht es ja auch schon beim booten, mit einem Eintrag in der "/boot/cmdline.txt"-Datei:
https://elinux.org/RPi_cmdline.txtit will override the default mac adress with the specified one.Code: Alles auswählen
smsc95xx.macaddr=B8:27:EB:59:EB:25
Debian 12.9 mit LXDE, OpenBSD 7.6 mit i3wm, FreeBSD 14.1 mit Xfce
- KBDCALLS
- Moderator
- Beiträge: 22456
- Registriert: 24.12.2003 21:26:55
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Dortmund
-
Kontaktdaten:
Re: mac-adresse über cmdline setzen
Macht auch keinen Sinn. Die ersten drei Bytes stehen für den Hersteller . die restlichen drei sind die Nummer der Karte. Und die werden Hersteller vergeben, und lassen sich auch nicht ändern, meines wissens nach.
Was haben Windows und ein Uboot gemeinsam?
Kaum macht man ein Fenster auf, gehen die Probleme los.
EDV ist die Abkürzung für: Ende der Vernunft
Bevor du einen Beitrag postest:
Kaum macht man ein Fenster auf, gehen die Probleme los.
EDV ist die Abkürzung für: Ende der Vernunft
Bevor du einen Beitrag postest:
- Kennst du unsere Verhaltensregeln
- Lange Codezeilen/Logs gehören nach NoPaste, in Deinen Beitrag dann der passende Link dazu.
Re: mac-adresse über cmdline setzen
Es gibt Situationen in denen es Sinn macht und die lassen sich auch ändern.KBDCALLS hat geschrieben:12.11.2018 10:26:10Macht auch keinen Sinn. ..., und lassen sich auch nicht ändern, meines wissens nach.
Z. B., es gibt Internet-Provider die weisen öffentliche statische IPv4-Adressen (per DHCP oder ohne DHCP) zu, die an die MAC-Adresse des border device "gebunden" sind. Wenn man jetzt andere border devices an diesem Internet-Anschluss testen/betreiben will (... ohne jedesmal vom ISP zu verlangen die MAC-Adresse zu ändern bzw. anzupassen), kann man die MAC-Adresse spoofen.
Debian 12.9 mit LXDE, OpenBSD 7.6 mit i3wm, FreeBSD 14.1 mit Xfce
- KBDCALLS
- Moderator
- Beiträge: 22456
- Registriert: 24.12.2003 21:26:55
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Dortmund
-
Kontaktdaten:
Re: mac-adresse über cmdline setzen
Mittlerweile hab ich zu dem Thema auch einiges gefunden.
Im Source Code des Kernels auch.
Und das Programm
macchanger
Im Source Code des Kernels auch.
Code: Alles auswählen
* int (*ndo_set_mac_address)(struct net_device *dev, void *addr); * This function is called when the Media Access Control address * needs to be changed. If this interface is not defined, the * MAC address can not be changed.
Und das Programm

Was haben Windows und ein Uboot gemeinsam?
Kaum macht man ein Fenster auf, gehen die Probleme los.
EDV ist die Abkürzung für: Ende der Vernunft
Bevor du einen Beitrag postest:
Kaum macht man ein Fenster auf, gehen die Probleme los.
EDV ist die Abkürzung für: Ende der Vernunft
Bevor du einen Beitrag postest:
- Kennst du unsere Verhaltensregeln
- Lange Codezeilen/Logs gehören nach NoPaste, in Deinen Beitrag dann der passende Link dazu.
Re: mac-adresse über cmdline setzen
Ja, und mit systemd.link geht es auch.
Aber die Art und Weise wie bzw. zu welchem Zeitpunkt man die MAC-Adresse des WAN-Interfaces (z. B. zum umgehen eines MAC-Adressen-Filters beim ISP) ändert bzw. ändern muss, kann auch von der Infrastruktur des ISP abhängig sein. Deshalb kann es erforderlich sein, die MAC-Adresse schon beim booten zu ändern.
Ich denke, mit dem macchanger (oder gleichwertig) wird so eine frühzeitige Änderung der MAC-Adresse nicht möglich sein.
Debian 12.9 mit LXDE, OpenBSD 7.6 mit i3wm, FreeBSD 14.1 mit Xfce
-
- Beiträge: 3800
- Registriert: 26.02.2009 14:35:56
Re: mac-adresse über cmdline setzen
und wenn man das Netzwerkkabel bis nach dem Boot abzieht und dann erst einsteckt ? Dann hat die Karte ja schon die gefälschte Mac-Adresse.
Re: mac-adresse über cmdline setzen
Ja, für (kurze) Testzwecke wäre das auch OK bzw. möglich.pferdefreund hat geschrieben:12.11.2018 13:22:57... dann erst einsteckt ? Dann hat die Karte ja schon die gefälschte Mac-Adresse.
Man kann je feststellen, ob die gespoofte MAC-Adresse verwendet wird. Z. B. mit:
Code: Alles auswählen
tcpdump -c 10 -vvveni <WAN-Interface> arp and ether src or dst <gespoofte-MAC-Adresse>
Debian 12.9 mit LXDE, OpenBSD 7.6 mit i3wm, FreeBSD 14.1 mit Xfce
Re: mac-adresse über cmdline setzen
Mein board hat keine BIA (burned in address),es wird bei jedem boot eine neue generiert. Aktuell setze ich die im debian mit "ip",wenn ich aber netboot machen will brauche ich die mac schon im bootloader. Um sie nicht doppelt definieren zu müssen wäre es schön,wenn ich sie durchreichen könnte.
Aber wenn es nicht geht ist es halt so. Danke für die Antworten
In meinem Fall ist die MAC wichtig für den DHCP-Server und die Firewall
Re: mac-adresse über cmdline setzen
Könntest du vielleicht irgendeine selbst ausgedachte Option an den Kernel hängen (die von keinem bereits vorhandenen Teil des Systems Verwendet/ausgewertet wird), wie zum Beispiel
und die dann hinterher mit einem (etwa von systemd ausgeführten) Skript, das den Wert aus /proc (»/proc/cmdline«) ausliest, setzen?
Code: Alles auswählen
frankw.hardwareadresse=d4:10:cf:aa:13:b7
Re: mac-adresse über cmdline setzen
Versuch mal mit ip in einer service-unit, wie z. B. hier, im Abschnitt "systemd unit" beschrieben.frankw hat geschrieben:12.11.2018 18:28:14Aktuell setze ich die im debian mit "ip",wenn ich aber netboot machen will brauche ich die mac schon im bootloader. Um sie nicht doppelt definieren zu müssen wäre es schön,wenn ich sie durchreichen könnte.
Debian 12.9 mit LXDE, OpenBSD 7.6 mit i3wm, FreeBSD 14.1 mit Xfce
Re: mac-adresse über cmdline setzen
gibt es zufällig schon eine fertige parsing-routine, die ich nutzen könnte? sonst müsste ich das selbst basteln...wird bisschen kniffelig weil bei den optionen ja doppelte = vorkommen können (u.a. habe ich das bei der console-option mit drin)smutbert hat geschrieben:12.11.2018 18:41:49Könntest du vielleicht irgendeine selbst ausgedachte Option an den Kernel hängen (die von keinem bereits vorhandenen Teil des Systems Verwendet/ausgewertet wird), wie zum Beispielund die dann hinterher mit einem (etwa von systemd ausgeführten) Skript, das den Wert aus /proc (»/proc/cmdline«) ausliest, setzen?Code: Alles auswählen
frankw.hardwareadresse=d4:10:cf:aa:13:b7
mal fix zusammengeklimpert:
Code: Alles auswählen
1 #!/bin/bash
2
3 echo $1
4
5 for option in $1
6 do
7 OLDIFS="$IFS"
8 IFS='=' read -r -a array <<< "$option"
9 IFS="$OLDIFS"
10
11 #echo "array:"${array[@]}
12 name=${array[0]}
13 val=${array[1]}
14
15 OLDIFS="$IFS"
16 IFS=',' read -r -a intf <<< "${array[1]}"
17 IFS="$OLDIFS"
18
19 echo "name:$name val:$val"
20
21 if [[ "$name" = "frank.ethaddr" ]];then
22
23 #echo ${intf[@]}
24
25 for conf in ${intf[@]}
26 do
27
28 OLDIFS="$IFS"
29 IFS=':' read -r -a mac <<< "$conf"
30 IFS="$OLDIFS"
31
32 interface=${mac[0]}
33 addr="${mac[1]}:${mac[2]}:${mac[3]}:${mac[4]}:${mac[5]}:${mac[6]}"
34
35 echo "int: $interface,mac: $addr"
36 done
37
38 fi
39
40 done
blah="test=123 frank.ethaddr=lan0:aa:bb:cc:dd:ee:ff,lan1:11:22:33:44:55:66"
./mac.sh "$blah"
test=123 frank.ethaddr=lan0:aa:bb:cc:dd:ee:ff,lan1:11:22:33:44:55:66
name:test val:123
name:frank.ethaddr val:lan0:aa:bb:cc:dd:ee:ff,lan1:11:22:33:44:55:66
int: lan0,mac: aa:bb:cc:dd:ee:ff
int: lan1,mac: 11:22:33:44:55:66
- KBDCALLS
- Moderator
- Beiträge: 22456
- Registriert: 24.12.2003 21:26:55
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Dortmund
-
Kontaktdaten:
Re: mac-adresse über cmdline setzen
Evetuell wirds du hier fündig was Kernelparameters anbertrifft
- /usr/src/linux-source-4.18/Documentation/admin-guide
Was haben Windows und ein Uboot gemeinsam?
Kaum macht man ein Fenster auf, gehen die Probleme los.
EDV ist die Abkürzung für: Ende der Vernunft
Bevor du einen Beitrag postest:
Kaum macht man ein Fenster auf, gehen die Probleme los.
EDV ist die Abkürzung für: Ende der Vernunft
Bevor du einen Beitrag postest:
- Kennst du unsere Verhaltensregeln
- Lange Codezeilen/Logs gehören nach NoPaste, in Deinen Beitrag dann der passende Link dazu.
Re: mac-adresse über cmdline setzen
Das größere Problem ist das handling von leerzeichen innerhalb von " und '
Kanns ich diese irgendwie sauber verarbeiten? Also erstmal nur an den leerzeichen außerhalb splitten in der äußeren schleife...
Kanns ich diese irgendwie sauber verarbeiten? Also erstmal nur an den leerzeichen außerhalb splitten in der äußeren schleife...