(Gelöst) Nach jedem Booten neue MAC-Adresse

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
BennyB
Beiträge: 169
Registriert: 12.04.2007 16:07:18

(Gelöst) Nach jedem Booten neue MAC-Adresse

Beitrag von BennyB » 26.06.2007 20:47:04

Hallo,

ich habe auf einem neuen Rechner mit Mainboard ASRock K8 und MCP61-Chipsatz (Ethernet on board) Debian Etch installiert. Nun tritt folgendes Phänomen auf: Mit jedem Booten ändert sich die MAC-Adresse des Netzwerkadapters. Die Netzwerkkarte heißt mittlerweile "eth8", und weil der Router sich alle MAC-Adressen merkt, um den Rechnern beim neuen Betreten des Netzwerks wieder die selbe IP-Adresse zu geben, wandert dieser Rechner mit jedem Booten im IP-Adresseraum nach oben. Ich habe Sorge, dass er irgendwann keine IP-Adresse mehr zugewiesen bekommt, weil alle möglichen IPs vom Router "vergeben" wurden. Nun ist meines Wissens die MAC-Adresse eine feste Größe. Woran könnte es liegen? Tante Google hat mir noch nichts wissenswertes gesagt.

Gruß

BennyB
Zuletzt geändert von BennyB am 04.07.2007 12:59:42, insgesamt 1-mal geändert.

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: Nach jedem Booten neue MAC-Adresse

Beitrag von gms » 26.06.2007 20:56:38

BennyB hat geschrieben:Tante Google hat mir noch nichts wissenswertes gesagt.
Tante df.de schon :)
http://www.debianforum.de/forum/viewtop ... macadresse

BennyB
Beiträge: 169
Registriert: 12.04.2007 16:07:18

Beitrag von BennyB » 27.06.2007 10:41:48

8O Warum denn in der Ferne suchen...

Vielen Dank, gms, es war wohl gestern was spät. Nächste Woche bin ich wieder an besagtem Rechner und dann werde ich die beiden Lösungsansätze ausprobieren. Ich melde mich dann wieder, ob und wie es geklappt hat.

Gruß

BennyB

BennyB
Beiträge: 169
Registriert: 12.04.2007 16:07:18

Beitrag von BennyB » 02.07.2007 11:57:51

So jetzt sitze ich wieder an dem Rechner.

Macchanger habe ich installiert, aber ehrlich gesagt, ich weiß nicht, wie ich es vor udev starten soll, da ich mich bislang nicht mit Startskripten beschäftigt habe. Wie macht man das denn jetzt genau?

Wie kommt das überhaupt, dass sich ständig die MAC-Adresse ändert, wo die doch eigentlich vom Hersteller festgelegt ist?

Gruß

BennyB

Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

Beitrag von mistersixt » 02.07.2007 14:14:12

Editier mit dem Texeditor Deiner Wahl als "root" die Datei /etc/init.d/udev - dort kannst Du den Befehl einfügen (irgendwo hinter #/!bin/sh in einer neuen Zeile), der Dir die MAC-Adresse setzt.

Gruss, mistersixt.
--
System: Debian Bookworm, 6.5.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 4.0 Ghz., Radeon RX 5700 XT, 16 GB Ram, XFCE

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 02.07.2007 15:15:31

ein eigenes (spezielles) init-Script hätte den Vorteil, daß es nicht durch ein Upgrade von Udev überschrieben wird. Du kannst dazu das Scipt /etc/default/skeleton als Vorlage hernehmen.
Zum Einhängen in die Runlevels verwendest du am besten update-rc.d, oder du legst den Link "/etc/rcS.d/S02[Scriptname]" manuell an. Dieser sollte auf dein Script "/etc/init.d/[Scriptname]" zeigen.

Gruß
gms

BennyB
Beiträge: 169
Registriert: 12.04.2007 16:07:18

Beitrag von BennyB » 02.07.2007 19:06:16

Ich habe den Befehl erst einmal in /etc/init.d/udev eingefügt, und nun habe ich zumindest das Symptom bis zum nächsten Upgrade von udev kuriert. Mir kam die Vorlagedatei für ein init.d-Skript noch sehr kompliziert vor, oder ist es möglich, einfach den Befehl in eine solche Skriptdatei zu schreiben? Also etwa so:

Code: Alles auswählen

#! /bin/sh

macchanger --mac=xx:xx:xx:xx:xx:xx eth0

exit 0
Das wäre dann natürlich ein seeeeeeehr einfaches Skript, aber würde es funktionieren?

Danke und Gruß

BennyB

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 02.07.2007 20:00:30

Zumindest die Standard-Argumente "start" und "stop" sollten abgefragt werden.
Eine Minimallösung könnte daher ungefähr so ausschauen:

ungetestet:

Code: Alles auswählen

#! /bin/sh

case "$1" in
  start)
    macchanger --mac=xx:xx:xx:xx:xx:xx eth0
    ;;
  stop)
    ;;
  *)
    echo "Usage: `basename $0` {start|stop}" >&2
    exit 3
    ;;
esac

Ich hatte vorhin wenig Zeit, möchte jetzt aber doch nachfragen, warum du die Lösung über den macchanger bevorzugst.
Die andere Lösung gefältt mir insofern besser, weil dort nur "normale" Konfigurationsdateien angepaßt werden müssen.
Im Minimalfall müßtest du nur die Abfrage nach der HW-Adresse entfernen. Bei mehreren Netzwerkkarten könnte es noch sinnvoll sein, stattdessen eine zusätzliche Abfrage einzuführen, z.B.:

Code: Alles auswählen

BUS=="pci", ID=="0000:03:00.0",
Die HW Adresse kann auch nachträglich über die /etc/network/interfaces gesteuert werden, wenn du dort folgende Option zu deiner Interface-Definition hinzufügst:

Code: Alles auswählen

  hwaddress ether xx:xx:xx:xx:xx:xx


Gruß
gms

BennyB
Beiträge: 169
Registriert: 12.04.2007 16:07:18

Beitrag von BennyB » 02.07.2007 22:10:53

Die Lösung mit der Entfernung der Hardwareadresse in /etc/udev/rules.d/z25_persistent-net.rules brachte nur insofern einen Erfolg, dass die Schnittstelle nun stabil den Namen eth0 erhielt. Die Abfrage der Hardwareadresse zeigte aber, dass diese sich immer noch ständig änderte. Deshalb habe ich zu der vorher angegebenen Lösung mit macchanger gegriffen. Dass man die Hardwareadresse in der Datei etc/network/interfaces ändern kann wusste ich nicht. Das würde die Sache natürlich einfacher machen und nicht so tiefe Eingriffe erforderlich machen, denn vor den Startskripten habe ich doch einen ziemlichen Respekt.

Ich habe deinen Vorschlag jetzt so verstanden. Den Befehl

Code: Alles auswählen

hwaddress ether xx:xx:xx:xx:xx:xx 
gebe ich also in folgenden Block ein:

Code: Alles auswählen

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp
Es sähe dann also so aus:

Code: Alles auswählen

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp
hwaddress ether xx:xx:xx:xx:xx:xx 
Das habe ich hier zu Hause an meinem privaten Rechner ausprobiert (ebenfalls Etch, Netzwerk per DHCP im Router), die Schnittstelle hat dann die neue MAC, aber sie bekommt keine Verbindung mehr zum Netzwerk, ich vermute mal naiv, weil die MAC-Adresse verändert wird, nachdem die Schnittstelle vom DHCP eine IP zugewiesen bekam. Nach dem Auskommentieren der Option reicht es nicht, das Netzwerk neu zu starten, sondern man muss den Rechner komplett neu hochfahren, dann hat die Netzwerkkarte wieder die (hier zu Hause immer gleiche) alte Adresse. Vielleicht muss die Option an eine andere Stelle?

Ich probiere morgen mal dein Startskript aus. Vielleicht schaftt das ja das Problem aus der Welt. (Knoppix-CD habe ich, falls nichts mehr gehen sollte.) :lol:

Gruß

BennyB

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 02.07.2007 22:53:07

BennyB hat geschrieben: Das habe ich hier zu Hause an meinem privaten Rechner ausprobiert (ebenfalls Etch, Netzwerk per DHCP im Router), die Schnittstelle hat dann die neue MAC, aber sie bekommt keine Verbindung mehr zum Netzwerk, ich vermute mal naiv, weil die MAC-Adresse verändert wird, nachdem die Schnittstelle vom DHCP eine IP zugewiesen bekam.
wundert mich jetzt, bist du dir sicher, daß du die neue MAC-Adresse nicht auf deinem Router sperrst ?

Du könntest auch einmal folgendes Konstrukt in der /etc/network/interfaces probieren

Code: Alles auswählen

iface eth0 inet dhcp
       pre-up macchanger --mac=xx:xx:xx:xx:xx:xx eth0
das müßte die HW Adresse jedenfalls vor der DHCP Konfiguration umsetzen

Gruß
gms

BennyB
Beiträge: 169
Registriert: 12.04.2007 16:07:18

Beitrag von BennyB » 03.07.2007 11:35:39

Danke gms, dein letzter Vorschlag hat zum Erfolg geführt, ohne ein Startskript schreiben zu müssen.

Ich fasse es noch mal für alle zusammen, die zufällig mit diesem Problem in den Thread gelangen:

1. Das Paket macchanger installiert.
2. In der Datei /etc/udev/rules.d/z25_persistent-net.rules sämtliche überzähligen Einträge entfernt. Für eth0 die Festlegung der MAC-Adresse entfernt. Der Eintrag sieht nun so aus:

Code: Alles auswählen

# PCI device 0x10de:0x03ef (forcedeth)
SUBSYSTEM=="net", DRIVERS=="?*", NAME="eth0"
3. In der Datei /etc/network/interfaces im Block

Code: Alles auswählen

# The primary network interface
folgende Zeile hinzugefügt:

Code: Alles auswählen

 pre-up macchanger --mac=<MAC-Adresse> eth0
4. Das System neu gebootet.

Danke für deine geduldige Hilfe, gms!

Gruß

BennyB

Antworten