(Gelöst) Nach jedem Booten neue MAC-Adresse
(Gelöst) Nach jedem Booten neue MAC-Adresse
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
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.
Re: Nach jedem Booten neue MAC-Adresse
Tante df.de schonBennyB hat geschrieben:Tante Google hat mir noch nichts wissenswertes gesagt.
http://www.debianforum.de/forum/viewtop ... macadresse
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
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
- mistersixt
- Beiträge: 6601
- Registriert: 24.09.2003 14:33:25
- Lizenz eigener Beiträge: GNU Free Documentation License
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.
Gruss, mistersixt.
--
System: Debian Bookworm, 6.11.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 3.8 Ghz., Radeon RX 5700 XT, 32 GB Ram, XFCE
System: Debian Bookworm, 6.11.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 3.8 Ghz., Radeon RX 5700 XT, 32 GB Ram, XFCE
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
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
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:
Das wäre dann natürlich ein seeeeeeehr einfaches Skript, aber würde es funktionieren?
Danke und Gruß
BennyB
Code: Alles auswählen
#! /bin/sh
macchanger --mac=xx:xx:xx:xx:xx:xx eth0
exit 0
Danke und Gruß
BennyB
Zumindest die Standard-Argumente "start" und "stop" sollten abgefragt werden.
Eine Minimallösung könnte daher ungefähr so ausschauen:
ungetestet:
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.:
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:
Gruß
gms
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
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",
Code: Alles auswählen
hwaddress ether xx:xx:xx:xx:xx:xx
Gruß
gms
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 gebe ich also in folgenden Block ein:
Es sähe dann also so aus:
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.)
Gruß
BennyB
Ich habe deinen Vorschlag jetzt so verstanden. Den Befehl
Code: Alles auswählen
hwaddress ether xx:xx:xx:xx:xx:xx
Code: Alles auswählen
# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp
Code: Alles auswählen
# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp
hwaddress ether xx:xx:xx:xx:xx:xx
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.)
Gruß
BennyB
wundert mich jetzt, bist du dir sicher, daß du die neue MAC-Adresse nicht auf deinem Router sperrst ?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.
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
Gruß
gms
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:
3. In der Datei /etc/network/interfaces im Block folgende Zeile hinzugefügt:
4. Das System neu gebootet.
Danke für deine geduldige Hilfe, gms!
Gruß
BennyB
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"
Code: Alles auswählen
# The primary network interface
Code: Alles auswählen
pre-up macchanger --mac=<MAC-Adresse> eth0
Danke für deine geduldige Hilfe, gms!
Gruß
BennyB