(notgelöst) Netzwerkarten ohne udev konfigurieren
(notgelöst) Netzwerkarten ohne udev konfigurieren
Ich habe zwei kabelgebundene Netzwerkkarten in der Maschine. Wie kann ich ohne udev erreichen, dass eth0 der Karte mit einer bekannten MAC-Adresse zugewiesen wird. Oder, falls das nicht möglich ist, andersherum, der Karte mit bekannter MAC-Adresse unabhängig von eth* eine bestimmte IP-Adresse zugewiesen wird?
Grüße, Günther
Grüße, Günther
Zuletzt geändert von guennid am 10.01.2016 17:00:46, insgesamt 1-mal geändert.
Re: Netzwerkarten ohne udev konfigurieren
Moin,
ohne dass ich das je selbst für den von dir beschriebenen Zweck unter Debian benutzt habe und für den Fall, dass du etwas frickeln/scripten möchtest:
Ergänzung:
So interessehalber: Welche Gründe kann man haben, udev (für diesen Zweck) nicht zu benutzen?
Gruß
erno
ohne dass ich das je selbst für den von dir beschriebenen Zweck unter Debian benutzt habe und für den Fall, dass du etwas frickeln/scripten möchtest:
Code: Alles auswählen
man arp
So interessehalber: Welche Gründe kann man haben, udev (für diesen Zweck) nicht zu benutzen?
Gruß
erno
Es macht übrigens viel wacher, den Kaffee über die Tastatur zu kippen, statt ihn zu trinken.
Re: Netzwerkarten ohne udev konfigurieren
/usr/share/doc/ifupdown/examples/get-mac-address.sh
Eleganter imo per dhcp der MAC die entsprechende IP vergeben.
Alternativ Modell feste / persistente pci-Name benutzen.
Für die kernel-commandline
Code: Alles auswählen
#auto eth0 eth1 eth2 eth3 eth4
#mapping eth0 eth1 eth2 eth3 eth4
# script /etc/network/get-mac-address.sh
# map xxxxxxxxxx name1
# map yyyyyyyyyy name2
# map zzzzzzzzz name3
# map fffffffffffffffff name4
#iface name1 inet static
......
#iface name2 inet static
......
...
Alternativ Modell feste / persistente pci-Name benutzen.
Für die kernel-commandline
#(20150527)
#http://www.pro-linux.de/news/1/22320/vo ... namen.html
# biosdevname=1 # ubuntu/dell-server
# net.ifnames=1 # Aktiviert die "komischen" interfaces. Sonst noch was zu aendern?
#-No parameters: NIC identified as "enp5s2".
#-Parameter biosdevname=0: NIC identified as "enp5s2".
#-Parameter net.ifnames=0: NIC identified as "em1".
#-Parameter net.ifnames=0 AND biosdevname=0: NIC identified as "eth0".
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
Re: Netzwerkarten ohne udev konfigurieren
Hallo rendegast!
Ich tu mich schwer damit, das Vorgeschlagene zu verstehen. Ich versuch's mal und bleibe bei dem ersten Code-Block:
1.
/usr/share/doc/ifupdown/examples/get-mac-address.sh verbringe ich ohne Änderungen nach /etc/network - richtig?
2.
Ich verstehe nicht genug shell-Syntax um zu erkennen, was das script macht/machen soll. Eine Manpage habe ich nicht gefunden.
Gehe ich recht in der Annahme, dass das script die MAC-Adressen liefert, denen der kernel eth0, eth1, etc. zugewiesen hat?
3.
der Code-Block sieht für mich aus wie ein Beispiel-Auszug aus einer /etc/network/interfaces - richtig?
4.
die beiden ersten Zeilen sind Kommentare in dieser interfaces und können das auch bleiben - richtig?
(automatisches Aktivieren der Netzwerkkarten kann ich nicht brauchen)
5.
Ab der dritten Zeile schreibe ich in meine interfaces: - richtig?
6. Wenn ich die MAC-Adressen kenne, brauche ich get-mac-address.sh nicht - richtig?
Grüße, Günther
Ich tu mich schwer damit, das Vorgeschlagene zu verstehen. Ich versuch's mal und bleibe bei dem ersten Code-Block:
1.
/usr/share/doc/ifupdown/examples/get-mac-address.sh verbringe ich ohne Änderungen nach /etc/network - richtig?
2.
Ich verstehe nicht genug shell-Syntax um zu erkennen, was das script macht/machen soll. Eine Manpage habe ich nicht gefunden.
Gehe ich recht in der Annahme, dass das script die MAC-Adressen liefert, denen der kernel eth0, eth1, etc. zugewiesen hat?
3.
der Code-Block sieht für mich aus wie ein Beispiel-Auszug aus einer /etc/network/interfaces - richtig?
4.
die beiden ersten Zeilen sind Kommentare in dieser interfaces und können das auch bleiben - richtig?
(automatisches Aktivieren der Netzwerkkarten kann ich nicht brauchen)
5.
Ab der dritten Zeile schreibe ich in meine interfaces:
Code: Alles auswählen
script /etc/network/get-mac-address.sh
map [mac-der-kernel-eth0] [guennid1]
map [mac-der-kernel-eth1] [guennid2]
map [mac-der-kernel-eth3] [guennid3]
map [mac-der-kernel-eth4] [guennid4]
iface [guennid1] inet static
address [192.168.nnn.nnn]
...
6. Wenn ich die MAC-Adressen kenne, brauche ich get-mac-address.sh nicht - richtig?
Grüße, Günther
Re: Netzwerkarten ohne udev konfigurieren
Falsch, es geht darum,6. Wenn ich die MAC-Adressen kenne, brauche ich get-mac-address.sh nicht - richtig?
den MAC-Adressen feste Interfacenamen zuzuordnen, um das Herumspringen der ethX zu umgehen.
Die gewählten Namen sollten wohl besser nicht dem Schema "ethX", "wlanX" entsprechen.
udev macht das, indem es einmal erkannte Interfaces auf die MAC-Adressen in der
/etc/udev/rules.d/70-persistent-net.rules
festschreibt.
Dort kann auch das Interface händisch geändert werden,
dabei sollte die Zuordnung valide sein, zBsp. keine "Doppler".
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
Re: Netzwerkarten ohne udev konfigurieren
Danke, dass du weiter hilfst.
Wie sieht's mit meinen anderen Fragen aus. Habe ich bei 1-5 alles richtig verstanden?
![Thumbs Up :THX:](./images/smilies/thumbup.gif)
Soweit wusste ich es. Also diesen Versuch mit den "bekannten" mac-Adressen (ohne get-mac-address.sh) habe ich schon erfolglos hinter mir.rendegast hat geschrieben:udev macht das, indem es einmal erkannte Interfaces auf die MAC-Adressen in der
/etc/udev/rules.d/70-persistent-net.rules
festschreibt.
Dort kann auch das Interface händisch geändert werden,
dabei sollte die Zuordnung valide sein, zBsp. keine "Doppler".
![Wink :wink:](./images/smilies/icon_wink.gif)
Wie sieht's mit meinen anderen Fragen aus. Habe ich bei 1-5 alles richtig verstanden?
Re: Netzwerkarten ohne udev konfigurieren
Da auf meine Fragen niemand mehr geantwortet hat und ich mit rendegasts Vorschlag nicht klar gekommen bin, habe ich es jetzt so eingerichtet, in der Hoffnung, dass das auch ohne udev dauerhaft funktioniert:
liefert eine Zuordnung von vom kernel eingerichteten Netzwerk-Gerätedateien (eth*, wlan*) zu entsprechenden MAC-Adressen. Anhand vom testweise installierten udev kann man in der von udev automatisch generierten Datei /etc/udev/rules.d/70-persistent-net.rules auslesen, welches Kernel-Modul für welche Netzwerk-Gerätedatei zuständig ist und dementsprechend /etc/network/interfaces einrichten. Vermisst, besser gesagt, nicht gefunden, habe ich ein Kommando, das eine Zuordnung von MAC-Adressen und Kernel-Modulen aufgezeigt hätte. Dann hätte ich die testweise udev-Installation nicht benötigt. Ohne udev bliebe dann wohl nur, die Netzwerk-Gerätedatei-Namen (eth*, wlan*) in einer /etc/network/interfaces der Reihe nach durchzuprobieren.
Das eigentliche Ziel: die Dateinamen (eth*, wlan*) für die verschiedenen NICs auch ohne udev selbst festzulegen, habe ich mit meinem Vorgehen aufgegeben.
Wer was Besseres weiß, nur her damit.
Grüße, Günther
Code: Alles auswählen
ifconfig -a
Das eigentliche Ziel: die Dateinamen (eth*, wlan*) für die verschiedenen NICs auch ohne udev selbst festzulegen, habe ich mit meinem Vorgehen aufgegeben.
Wer was Besseres weiß, nur her damit.
![Wink :wink:](./images/smilies/icon_wink.gif)
Grüße, Günther
Re: Netzwerkarten ohne udev konfigurieren
get-mac-address ermittelt aus einem "hereinkommenden" kernel-Interface ethX/wlanX die MAC-Adresse.
Durch die map-Anweisungen wird dem Kernel-Interface dann eine Art alias zugeordnet,
siehe die Datei [/run/network/]ifstate.
Im folgenden wird das kernel-Interface dann über seinen alias resp. map-Namen konfiguriert.
Die eigentlichen Kernel-Interface bekommen dabei eine Art dummy, in der Art womit sichergestellt ist, daß nicht zBsp. network-manager ein nicht in der interfaces vermerktes Interface konfiguriert.
Das klappt bei einer einfachen Konfiguration,
jedoch arbeiten wohl andere Programme nicht unbedingt mit diesen map-Namen und verlangen die ethX.
Ich habe zBsp. in firewall-Skripten dann einen Codeblock vorangestellt,
der das mithilfe der Datei ifstate wieder zurückmodelt: lan0, wan0, gast0 sind hier die in network/interfaces gesetzten Mappings.
Was ich mir auf der einen Seite geholt habe, bezahle ich hinterher mit diesem Mehraufwand.
stell Dir vor, Du hast eine Maschine mit x realtek-8139
(in den Serverboards mit mehreren onboard ist ja auch meistens nur ein Chiptyp verbaut)
Und praktischerweise würde eine fehlerhafte entnommen und ein Ersatz an dieselbe Stelle gesteckt,
somit wäre der pci-Namen in diesem Fall die stabile Beziehung
Die MAC kann dann ja für das interface gesetzt werden (interfaces / network-manager),
um es eventuellen arp-Filtern Recht zu machen.
Der "walkaround" mit lade treibera vor treiberb vor treiberc müßte beim Kartenwechsel angepaßt werden,
es dürften nur Karten unterschiedlichen Typs verwendet werden.
Wäre auch unpraktisch.
Sollte so ein mit PCI-Namen konfigurierter Rechner mal mit einer live-CD gebootet werden,
bekommt Mensch wohl erstmal wieder die klassischen Namen vorgesetzt.
also boot-Option setzen oder wieder Suchen was-ist-was.
Wie mans macht, man machts verkehrt.
Durch die map-Anweisungen wird dem Kernel-Interface dann eine Art alias zugeordnet,
siehe die Datei [/run/network/]ifstate.
Im folgenden wird das kernel-Interface dann über seinen alias resp. map-Namen konfiguriert.
Die eigentlichen Kernel-Interface bekommen dabei eine Art dummy, in der Art
Code: Alles auswählen
auto eth0 eth1 eth2 wlan0
iface eth0 inet manual
iface eth1 inet manual
iface eth2 inet manual
iface wlan0 inet manual
Das klappt bei einer einfachen Konfiguration,
jedoch arbeiten wohl andere Programme nicht unbedingt mit diesen map-Namen und verlangen die ethX.
Ich habe zBsp. in firewall-Skripten dann einen Codeblock vorangestellt,
der das mithilfe der Datei ifstate wieder zurückmodelt:
Code: Alles auswählen
#!/bin/sh
INSIDE= ; WAN= ; GAST=
eval $(cat /run/network/ifstate | awk -F= '{print $2"="$1}')
INSIDE=$lan0; WAN=$wan0; GAST=$gast0
IPT="iptables -t nat"
#$IPT -F FORWARD
PORT=dns ; CHAIN=fw_$PORT
$IPT -N $CHAIN; $IPT -F $CHAIN
$IPT -A $CHAIN -j ACCEPT -i $INSIDE -d 11.22.33.44
$IPT -A $CHAIN -j ACCEPT -i $GAST -d 44.33.22.11
...
Was ich mir auf der einen Seite geholt habe, bezahle ich hinterher mit diesem Mehraufwand.
Das ist auch nicht weiter zielführend,Vermisst, besser gesagt, nicht gefunden, habe ich ein Kommando, das eine Zuordnung von MAC-Adressen und Kernel-Modulen aufgezeigt hätte.
stell Dir vor, Du hast eine Maschine mit x realtek-8139
(in den Serverboards mit mehreren onboard ist ja auch meistens nur ein Chiptyp verbaut)
Und praktischerweise würde eine fehlerhafte entnommen und ein Ersatz an dieselbe Stelle gesteckt,
somit wäre der pci-Namen in diesem Fall die stabile Beziehung
Die MAC kann dann ja für das interface gesetzt werden (interfaces / network-manager),
um es eventuellen arp-Filtern Recht zu machen.
Der "walkaround" mit lade treibera vor treiberb vor treiberc müßte beim Kartenwechsel angepaßt werden,
es dürften nur Karten unterschiedlichen Typs verwendet werden.
Wäre auch unpraktisch.
Sollte so ein mit PCI-Namen konfigurierter Rechner mal mit einer live-CD gebootet werden,
bekommt Mensch wohl erstmal wieder die klassischen Namen vorgesetzt.
also boot-Option setzen oder wieder Suchen was-ist-was.
Wie mans macht, man machts verkehrt.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
Re: Netzwerkarten ohne udev konfigurieren
Und wiederum vielen Dank für deine ausführlichen Erklärungen.
Deinen ursprünglichen Vorschlag habe ich, so wie man das vielleicht anhand meiner Fragen 1 -5 zu erkennen vermag, umzusetzen versucht, Es hat aber nicht geklappt. Ursache sitzt wahrscheinlich 50cm vorm Bildschirm. Da es sich bei mir nicht um Server-Boards handelt (mit denen ich eh nichts anzufangen wüsste
), sondern um ein schlichtes altes Notebook, an dem auch netzwerkmäßig kaum Änderungsbedarf abzusehen ist, bleibe ich mal bei meiner (Not-) Lösung, wenn du das für akzeptabel hältst.
Grüße, Günther
![Thumbs Up :THX:](./images/smilies/thumbup.gif)
![Thumbs Up :THX:](./images/smilies/thumbup.gif)
Deinen ursprünglichen Vorschlag habe ich, so wie man das vielleicht anhand meiner Fragen 1 -5 zu erkennen vermag, umzusetzen versucht, Es hat aber nicht geklappt. Ursache sitzt wahrscheinlich 50cm vorm Bildschirm. Da es sich bei mir nicht um Server-Boards handelt (mit denen ich eh nichts anzufangen wüsste
![Wink :wink:](./images/smilies/icon_wink.gif)
Grüße, Günther