CoderGrizzly
Anmeldungsdatum: 20. März 2012
Beiträge: 73
|
Hallo alle zusammen, ☺ mit Ubuntu 14 hat sich ja einiges im Bereich Netzwerk geändert. Zwischen Ubuntu 10 und 12 gab es ja auch schon was (die DNS Geschichte, die von der /etc/resolv.conf in die /etc/network/interfaces gewandert ist). Mit Ubuntu 14 hat man sich jetzt der Benamsung der Netzwerk Geräte angenommen bzw. die BIOS Device Name Unterstützung eingebaut. Allerdings bringt das für mich einige Schwierigkeiten mit sich, da wir für unsere Produkte, welche wir als auf Ubuntu basierende Appliances einsetzen, ein Setup Tool für die Netzwerkeinstellungen geschrieben haben. Das für die Namen wieder eth* verwendet wird, konnte ich bereits bewerkstelligen:
Ich habe in der Datei /etc/default/grub die Zeile GRUB_CMDLINE_LINUX_DEFAULT="" geändert in GRUB_CMDLINE_LINUX_DEFAULT="biosdevname=0".
Danach noch update-grub abgesetzt, reboot und alles war in Ordnung. Allerdings kämpfe ich jetzt mit der Datei /etc/udev/rules.d/70-persistent-net.rules, welches es durch die Umstellung nicht mehr zu geben scheint. Und ich konnte Ubuntu auch nicht dazu überreden, sie wieder zu (re)aktivieren. Ich habe gelesen, dass der Kernel Parameter net.ifnames=0 etwas bringen würde. Aber Fehlanzeige. Weiter habe ich gelesen, dass die Karten (bzw. MAC Adressen) einiger Hersteller ignoriert werden. Die entsprechenden Einträge sind in der Datei /lib/udev/rules.d/75-persistent-net-generator.rules zu finden. Momentan teste ich unter VMware ESXi 4.1.0 mit Ubuntu 14.04. Ich habe dann die VMware MAC Adressen auskommentiert. Das hat allerdings auch nichts gebracht. Die Datei /etc/udev/rules.d/70-persistent-net.rules wird weiterhin nicht angelegt. Hat jemand von Euch eine Idee, an welchem Schalter bzw. welcher Einstellungen ich Schrauben muss, um wieder die alte Netzwerkkonfiguration zu bekommen? ☺
Oder ist das unwiderruflich für immer Geschichte? ☹
|
CoderGrizzly
(Themenstarter)
Anmeldungsdatum: 20. März 2012
Beiträge: 73
|
Ich habe jetzt mal mit der Hand am Arm eine Datei /etc/udev/rules.d/70-persistent-net.rules angelegt, in dem ich diese aus einem Ubuntu 10 kopiert und entsprechend modifiziert habe. | # This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:c5:20:8e", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:c5:20:98", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2"
|
GRUB_CMDLINE_LINUX_DEFAULT="biosdevname=0 net.ifnames=0" ist weiterhin gesetzt.
Die VMware MAC Adressen in der Datei Datei /lib/udev/rules.d/75-persistent-net-generator.rules weiterhin auskommentiert. Und - es funktioniert. Vorher war die zweite Netzwerkkarte als eth1 gelistet. Jetzt findet man sie als eth2 im System. Sprich die Einstellungen ziehen. ☺ Allerdings habe ich jetzt immer noch das Problem, dass ich gerne hätte, dass das System die Datei /etc/udev/rules.d/70-persistent-net.rules selber anlegt und befüllt, wie das unter Ubuntu 10 und 12 auch der Fall war. ☹
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11176
Wohnort: München
|
CoderGrizzly schrieb: Ich habe jetzt mal mit der Hand am Arm eine Datei /etc/udev/rules.d/70-persistent-net.rules angelegt, in dem ich diese aus einem Ubuntu 10 kopiert und entsprechend modifiziert habe. | # This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
|
Dann hol dir doch auch noch das Skript /lib/udev/write_net_rules aus der alten Installation und die udev-Regel persistent-net-generator.rules, die sie für jede neu erkannte Netzwerkkarte ausgeführt hat.
|
CoderGrizzly
(Themenstarter)
Anmeldungsdatum: 20. März 2012
Beiträge: 73
|
seahawk1986 schrieb: CoderGrizzly schrieb: Ich habe jetzt mal mit der Hand am Arm eine Datei /etc/udev/rules.d/70-persistent-net.rules angelegt, in dem ich diese aus einem Ubuntu 10 kopiert und entsprechend modifiziert habe. | # This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
|
Dann hol dir doch auch noch das Skript /lib/udev/write_net_rules aus der alten Installation und die udev-Regel persistent-net-generator.rules, die sie für jede neu erkannte Netzwerkkarte ausgeführt hat.
Das Skript /lib/udev/write_net_rules sieht gleich aus. Das habe ich bereits verglichen. Die udev-Regel persistent-net-generator.rules werde ich mir gleich mal zu Gemüte führen.
|
elektronenblitz63
Anmeldungsdatum: 16. Januar 2007
Beiträge: 29307
Wohnort: NRW
|
Hallo, mal ohne die Bootoption versuchen, dafür aber in der /lib/udev/rules.d/71-biosdevname.rules folgende Änderung vornehmen:
...
# uncomment the next line for biosdevname to be off by default
GOTO="netdevicename_end"
LABEL="netdevicename_start"
...
|
CoderGrizzly
(Themenstarter)
Anmeldungsdatum: 20. März 2012
Beiträge: 73
|
Die Datei /lib/udev/rules.d/75-persistent-net-generator.rules unterscheidet sich schon ziemlich. Am Meisten aber in dem Punkt des "new predictable network interface naming scheme". Sprich am Anfang wird "net.ifnames" abgefragt und ggf. die Ausführung der /lib/udev/write_net_rules total übersprungen. Allerdings hab ich bei dem Vergleich gesehen, dass die Auskommentierung der Ignore Liste für VMware Geräte, die ich eigentlich gemacht hatte, nicht (mehr) vorhanden war. Keine Ahnung, ob ich das Speichern vergessen habe. Aber vielleicht lag es auch daran, dass ich dazwischen mal ein Update (apt-get update ; apt-get dist-upgrade) ausgeführt habe und dabei die Datei überschrieben wurde. Auf jeden Fall habe ich die Kommentare wieder rein gemacht, meine selbst erstellte /etc/udev/rules.d/70-persistent-net.rules gelöscht und gebootet. Und siehe da: Das System hat die Datei selbst erstellt und auch richtig befüllt. ☺ elektronenblitz63 schrieb: Hallo, mal ohne die Bootoption versuchen, dafür aber in der /lib/udev/rules.d/71-biosdevname.rules folgende Änderung vornehmen:
...
# uncomment the next line for biosdevname to be off by default
GOTO="netdevicename_end"
LABEL="netdevicename_start"
...
Okay, werde ich mal testen. ☺
|
CoderGrizzly
(Themenstarter)
Anmeldungsdatum: 20. März 2012
Beiträge: 73
|
Okay, statt
GRUB_CMDLINE_LINUX_DEFAULT="biosdevname=0 net.ifnames=0"
kann man auch - wie von elektronenblitz63 beschrieben - die Datei /lib/udev/rules.d/71-biosdevname.rules anpassen. Das funktioniert auch. ☺ Jetzt muss ich nur noch irgendwie dafür sorge tragen, dass nach einem Update der beiden Dateien /lib/udev/rules.d/75-persistent-net-generator.rules und /lib/udev/rules.d/71-biosdevname.rules ich diese wieder entsprechend modifiziere. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142 | # These rules generate rules to keep network interface names unchanged
# across reboots and write them to /etc/udev/rules.d/70-persistent-net.rules.
# variables used to communicate:
# MATCHADDR MAC address used for the match
# MATCHID bus_id used for the match
# MATCHDRV driver name used for the match
# MATCHIFTYPE interface type match
# COMMENT comment to add to the generated rule
# INTERFACE_NAME requested name supplied by external tool
# INTERFACE_NEW new interface name returned by rule writer
ACTION!="add", GOTO="persistent_net_generator_end"
SUBSYSTEM!="net", GOTO="persistent_net_generator_end"
# ignore the interface if a name has already been set
NAME=="?*", GOTO="persistent_net_generator_end"
# new predictable network interface naming scheme
# http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/
IMPORT{cmdline}="net.ifnames"
ENV{net.ifnames}=="1", GOTO="persistent_net_generator_end"
# device name whitelist
KERNEL!="eth*|ath*|wlan*[0-9]|msh*|ra*|sta*|ctc*|lcs*|hsi*", \
GOTO="persistent_net_generator_end"
# ignore Xen virtual interfaces
SUBSYSTEMS=="xen", GOTO="persistent_net_generator_end"
# ignore UML virtual interfaces
DRIVERS=="uml-netdev", GOTO="persistent_net_generator_end"
# ignore "secondary" raw interfaces of the madwifi driver
KERNEL=="ath*", ATTRS{type}=="802", GOTO="persistent_net_generator_end"
# ignore "secondary" monitor interfaces of mac80211 drivers
KERNEL=="wlan*", ATTRS{type}=="803", GOTO="persistent_net_generator_end"
# by default match on the MAC address and interface type
ENV{MATCHADDR}="$attr{address}"
ENV{MATCHIFTYPE}="$attr{type}"
# match interface dev_id
ATTR{dev_id}=="?*", ENV{MATCHDEVID}="$attr{dev_id}"
# These vendors are known to violate the local MAC address assignment scheme
# Interlan, DEC (UNIBUS or QBUS), Apollo, Cisco, Racal-Datacom
ENV{MATCHADDR}=="02:07:01:*", GOTO="globally_administered_whitelist"
# 3Com
ENV{MATCHADDR}=="02:60:60:*", GOTO="globally_administered_whitelist"
# 3Com IBM PC; Imagen; Valid; Cisco; Apple
ENV{MATCHADDR}=="02:60:8c:*", GOTO="globally_administered_whitelist"
# Intel
ENV{MATCHADDR}=="02:a0:c9:*", GOTO="globally_administered_whitelist"
# Olivetti
ENV{MATCHADDR}=="02:aa:3c:*", GOTO="globally_administered_whitelist"
# CMC Masscomp; Silicon Graphics; Prime EXL
ENV{MATCHADDR}=="02:cf:1f:*", GOTO="globally_administered_whitelist"
# Prominet Corporation Gigabit Ethernet Switch
ENV{MATCHADDR}=="02:e0:3b:*", GOTO="globally_administered_whitelist"
# BTI (Bus-Tech, Inc.) IBM Mainframes
ENV{MATCHADDR}=="02:e6:d3:*", GOTO="globally_administered_whitelist"
# Novell 2000
ENV{MATCHADDR}=="52:54:4c:*", GOTO="globally_administered_whitelist"
# Realtec
ENV{MATCHADDR}=="52:54:ab:*", GOTO="globally_administered_whitelist"
# Kingston Technologies
ENV{MATCHADDR}=="e2:0c:0f:*", GOTO="globally_administered_whitelist"
# Ravello Systems
ENV{MATCHADDR}=="2c:c2:60:*", GOTO="globally_administered_whitelist"
# ignore interfaces with locally administered or null MAC addresses
# and VMWare, Hyper-V, KVM, Virtualbox and Xen virtual interfaces
ENV{MATCHADDR}=="?[2367abef]:*", ENV{MATCHADDR}=""
ENV{MATCHADDR}=="00:00:00:00:00:00", ENV{MATCHADDR}=""
ENV{MATCHADDR}=="00:0c:29:*|00:50:56:*|00:05:69:*|00:1C:14:*", \
ENV{MATCHADDR}=""
ENV{MATCHADDR}=="00:15:5d:*", ENV{MATCHADDR}=""
ENV{MATCHADDR}=="52:54:00:*|54:52:00:*", ENV{MATCHADDR}=""
ENV{MATCHADDR}=="08:00:27:*", ENV{MATCHADDR}=""
ENV{MATCHADDR}=="00:16:3e:*", ENV{MATCHADDR}=""
# ignore Windows Azure Hyper-V virtual interfaces
ENV{MATCHADDR}=="00:03:ff:*", ENV{MATCHADDR}=""
ENV{MATCHADDR}=="00:0d:3a:*", ENV{MATCHADDR}=""
ENV{MATCHADDR}=="00:1d:d8:*", ENV{MATCHADDR}=""
ENV{MATCHADDR}=="00:12:5a:*", ENV{MATCHADDR}=""
ENV{MATCHADDR}=="00:17:fa:*", ENV{MATCHADDR}=""
ENV{MATCHADDR}=="00:22:48:*", ENV{MATCHADDR}=""
ENV{MATCHADDR}=="00:50:f2:*", ENV{MATCHADDR}=""
ENV{MATCHADDR}=="28:18:78:*", ENV{MATCHADDR}=""
ENV{MATCHADDR}=="50:1a:c5:*", ENV{MATCHADDR}=""
ENV{MATCHADDR}=="60:45:bd:*", ENV{MATCHADDR}=""
ENV{MATCHADDR}=="7c:1e:52:*", ENV{MATCHADDR}=""
ENV{MATCHADDR}=="7c:ed:8d:*", ENV{MATCHADDR}=""
ENV{MATCHADDR}=="dc:b4:c4:*", ENV{MATCHADDR}=""
ENV{MATCHADDR}=="00:25:ae:*", ENV{MATCHADDR}=""
LABEL="globally_administered_whitelist"
# ibmveth interfaces have stable locally administered MAC addresses
SUBSYSTEMS=="ibmveth", ENV{MATCHADDR}="$attr{address}"
# S/390 interfaces are matched only by id
SUBSYSTEMS=="ccwgroup", \
ENV{MATCHDRV}="$driver", ENV{MATCHID}="$id", \
ENV{MATCHADDR}="", ENV{MATCHDEVID}=""
# terminate processing if there are not enough conditions to create a rule
ENV{MATCHADDR}=="", ENV{MATCHID}=="", ENV{INTERFACE_NAME}=="", \
GOTO="persistent_net_generator_end"
# provide nice comments for the generated rules
SUBSYSTEMS=="pci", \
ENV{COMMENT}="PCI device $attr{vendor}:$attr{device}"
SUBSYSTEMS=="pcmcia", \
ENV{COMMENT}="PCMCIA device $attr{card_id}:$attr{manf_id}"
SUBSYSTEMS=="usb", \
ENV{COMMENT}="USB device 0x$attr{idVendor}:0x$attr{idProduct}"
SUBSYSTEMS=="ccwgroup", \
ENV{COMMENT}="S/390 device at $id"
SUBSYSTEMS=="ibmveth", \
ENV{COMMENT}="LPAR virtual device at $id"
SUBSYSTEMS=="ieee1394", \
ENV{COMMENT}="Firewire device $attr{host_id}"
ENV{COMMENT}=="", \
ENV{COMMENT}="Unknown $env{SUBSYSTEM} device ($env{DEVPATH})"
ATTRS{driver}=="?*", \
ENV{COMMENT}="$env{COMMENT} ($attr{driver})"
# ignore interfaces without a driver link like bridges and VLANs, otherwise
# generate and write the rule
DRIVERS=="?*", IMPORT{program}="write_net_rules"
# rename the interface if requested
ENV{INTERFACE_NEW}=="?*", NAME="$env{INTERFACE_NEW}"
LABEL="persistent_net_generator_end"
|
Hier müssen die Zeilen 76 bis 99 auskommentiert werden. Sollte aber kein Problem sein, da es ja immer das gleich Pattern ist:
ENV{MATCHADDR}=="<irgendwas>", ENV{MATCHADDR}=""
Und in der anderen Datei ist es halt die angsprochene Zeile 15, bei welcher die Raute entfernt werden muss:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 | SUBSYSTEM!="net", GOTO="netdevicename_end"
KERNEL!="eth*", GOTO="netdevicename_end"
ACTION!="add", GOTO="netdevicename_end"
NAME=="?*", GOTO="netdevicename_end"
# kernel command line "biosdevname={0|1}" can turn off/on biosdevname
IMPORT{cmdline}="biosdevname"
ENV{biosdevname}=="?*", ENV{UDEV_BIOSDEVNAME}="$env{biosdevname}"
# ENV{UDEV_BIOSDEVNAME} can be used for blacklist/whitelist
# but will be overwritten by the kernel command line argument
ENV{UDEV_BIOSDEVNAME}=="0", GOTO="netdevicename_end"
ENV{UDEV_BIOSDEVNAME}=="1", GOTO="netdevicename_start"
# uncomment the next line for biosdevname to be off by default
# GOTO="netdevicename_end"
LABEL="netdevicename_start"
# using NAME= instead of setting INTERFACE_NAME, so that persistent
# names aren't generated for these devices, they are "named" on each boot.
PROGRAM="/sbin/biosdevname --smbios 2.6 --nopirq --policy physical -i %k", NAME="%c", OPTIONS+="string_escape=replace"
LABEL="netdevicename_end"
|
Ich habe das ganze auch mit einem Ubuntu 14 getestet, welches auf einer dedizierten Hardware läuft. Auch da hat es tadellos funktioniert. Danke mal soweit. ☺
|
CoderGrizzly
(Themenstarter)
Anmeldungsdatum: 20. März 2012
Beiträge: 73
|
CoderGrizzly schrieb: Okay, statt
GRUB_CMDLINE_LINUX_DEFAULT="biosdevname=0 net.ifnames=0"
kann man auch - wie von elektronenblitz63 beschrieben - die Datei /lib/udev/rules.d/71-biosdevname.rules anpassen. Das funktioniert auch. ☺
Kommando zurück. Den Linux Kernel Parameter biosdevname=0 kann nicht durch die Änderung in der Datei /lib/udev/rules.d/71-biosdevname.rules ersetzt werden.
Unter VMware ist das kein Problem. Da kann man den Parameter weglassen. Aber nicht unter einer dedizierten Hardware. Ich hatte gestern vergessen, update-grub ausführen, sondern habe den Parameter nur aus der Datei /etc/default/grub entfernt gehabt. War also leider nichts, elektronenblitz63. Schade. ☹ Keinen Parameter in Grub zu setzen hätte mir einiges erspart (den Parameter zu setzen und Grub zu aktualisieren).
|