(notgelöst) Netzwerkarten ohne udev konfigurieren

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
guennid

(notgelöst) Netzwerkarten ohne udev konfigurieren

Beitrag von guennid » 03.01.2016 21:08:44

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
Zuletzt geändert von guennid am 10.01.2016 17:00:46, insgesamt 1-mal geändert.

HumiNi
Beiträge: 576
Registriert: 02.10.2014 21:46:18

Re: Netzwerkarten ohne udev konfigurieren

Beitrag von HumiNi » 03.01.2016 21:23:27

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:

Code: Alles auswählen

man arp
Ergänzung:
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.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Netzwerkarten ohne udev konfigurieren

Beitrag von rendegast » 05.01.2016 02:24:56

/usr/share/doc/ifupdown/examples/get-mac-address.sh

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
......
...
Eleganter imo per dhcp der MAC die entsprechende IP vergeben.


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")

guennid

Re: Netzwerkarten ohne udev konfigurieren

Beitrag von guennid » 05.01.2016 09:18:21

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:

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]
...
- richtig?

6. Wenn ich die MAC-Adressen kenne, brauche ich get-mac-address.sh nicht - richtig?

Grüße, Günther

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Netzwerkarten ohne udev konfigurieren

Beitrag von rendegast » 05.01.2016 18:43:03

6. Wenn ich die MAC-Adressen kenne, brauche ich get-mac-address.sh nicht - richtig?
Falsch, es geht darum,
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")

guennid

Re: Netzwerkarten ohne udev konfigurieren

Beitrag von guennid » 05.01.2016 18:51:57

Danke, dass du weiter hilfst. :THX:
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".
Soweit wusste ich es. Also diesen Versuch mit den "bekannten" mac-Adressen (ohne get-mac-address.sh) habe ich schon erfolglos hinter mir. :wink:

Wie sieht's mit meinen anderen Fragen aus. Habe ich bei 1-5 alles richtig verstanden?

guennid

Re: Netzwerkarten ohne udev konfigurieren

Beitrag von guennid » 08.01.2016 11:56:49

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:

Code: Alles auswählen

ifconfig -a
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. :wink:

Grüße, Günther

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Netzwerkarten ohne udev konfigurieren

Beitrag von rendegast » 08.01.2016 13:03:37

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

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
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:

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
...
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.




Vermisst, besser gesagt, nicht gefunden, habe ich ein Kommando, das eine Zuordnung von MAC-Adressen und Kernel-Modulen aufgezeigt hätte.
Das ist auch nicht weiter zielführend,
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")

guennid

Re: Netzwerkarten ohne udev konfigurieren

Beitrag von guennid » 08.01.2016 14:16:48

Und wiederum vielen Dank für deine ausführlichen Erklärungen. :THX: :THX:

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: ), 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

Antworten