Diesen Abschnitt müssen Sie nur lesen, wenn Sie eine Netzwerkkarte einrichten möchen.
Wenn Sie keine Netzwerkkarte haben, brauchen Sie höchstwahrscheinlich
keine Konfigurationsdateien bezüglich Netzwerkkarten einrichten. In
diesem Fall sollten Sie alle symbolischen Links mit Namen
network
aus den Runlevel-Ordnern
entfernen (/etc/rc.d/rc*.d
).
Mit Udev und modularen Netzwerktreibern ist keine stabile
Durchnummerierung von Netzwerkkarten über Rechner-Neustarts hinweg
gewährleistet. Dies liegt daran, dass die Treiber parallel geladen
werden und die Reihenfolge daher unvorhersagbar ist. Wenn ein
Rechner z. B. eine Netzwerkkarte von Intel und eine von
Realtek eingebaut hat, so könnte die Intel-Karte eth0
und die Realtek-Karte eth1
heißen. In manchen Fällen könnten die Karten
nach einem Neustart aber genau umgekehrt zugewiesen worden sein. Um
diesem Problem zu begegnen, enthält das Udev-Paket ein Skript und
einige Regeln, die eine stabile Namensvergabe für Netzwerkkarten
basierend auf deren MAC-Adresse sicherstellen sollen.
Erzeugen Sie die Regeln vorab und stellen Sie so sicher, dass schon ab dem ersten Neustart immer die gleichen Namen zugewiesen werden:
for NIC in /sys/class/net/* ; do INTERFACE=${NIC##*/} udevadm test --action=add --subsystem=net $NIC done
Sehen Sie nun die Datei /etc/udev/rules.d/70-persistent-net.rules
durch
und finden Sie heraus, welcher Name für welche Netzwerkkarte
zugewiesen wurde:
cat /etc/udev/rules.d/70-persistent-net.rules
Am Anfang der Datei findet sich ein Kommentarblock, gefolgt von zwei Zeilen je Netzwerkgerät. Die jeweils erste Zeile ist eine kommentierte Beschreibung, aus der Sie die Hardware-ID entnehmen können (z. B. PCI-Hersteller und Geräte-ID, falls es sich um eine PCI-Karte handelt) und in Klammern den Treiber, sofern er gefunden wird. Aber weder die Geräte-ID noch der Treiber entscheiden über die Namensvergabe der Netzwerkschnittstellen, diese Informationen werden nur zu Referenzzwecken verwendet. Die zweite Zeile ist die Udev-Regel, die auf diese Netzwerkkarte passt und den Namen dafür zuweist.
Alle Udev-Regeln bestehen aus mehreren Schlüsseln, die durch Komma und optionale Leerzeichen getrennt sind. Es folgen die verwendeten Schlüssel und jeweiligen Erklärungen:
SUBSYSTEM=="net"
- Dadurch
werden alle Geräte ignoriert, bei denen es sich nicht um
Netzwerkkarten handelt.
ACTION=="add"
- Udev wird diese
Regel nur ausführen, wenn der uevent-Typ „add“ ist. Uevents des Typs
„remove“ oder
„change“ können auch
auftreten, aber müssen keine Netzwerkgeräte umbenennen.
DRIVERS=="?*"
- Durch diesen
Parameter ignoriert Udev alle VLAN- oder Bridge-Untergeräte
(weil diese Untergeräte keine eigenen Treiber haben).
Untergeräte müssen übersprungen werden, weil der zugewiesene
Name mit dem jeweiligen Hauptgerät in Konflikt stände.
ATTR{address}
- Der Wert dieses
Schlüssels ist die MAC-Adresse der Netzwerkkarte.
ATTR{type}=="1"
- Optional.
Dieser Schlüssel bewirkt, dass die Regel nur auf das
Hauptgerät passt (wie z. B. bei einigen
Drahtlos-Treibern, die mehrere virtuelle Netzwerkgeräte
erzeugen). Die virtuellen Geräte müssen übersprungen werden,
weil dies wie bei Untergeräten Namenskonflikte bewirken
würde.
KERNEL=="eth*"
- Dieser
Schlüssel wurde zu Udev hinzugefügt, um mit Rechnern umgehen
zu können, die mehrere Netzwerkkarten mit der gleichen
MAC-Adresse haben. Dies ist z. B. bei der PS3 der Fall.
Sofern die unabhängigen Netzwerkkarten eine unterschiedliche
Namensbasis haben, kann Udev sie auf diese Weise voneinander
unterscheiden. Die meisten Anwender von Linux From Scratch
werden hieraus keinen Vorteil haben, aber es schadet auch
nicht.
NAME
- Dieser Wert bestimmt den
Namen, der der Netzwerkkarte zugewiesen wird.
Der Wert von NAME
ist der wichtige
Teil. Sie sollten wissen, welchen Namen Sie welcher Netzwerkkarte
zugewiesen haben, bevor Sie fortfahren. Verwenden Sie diesen Wert
von NAME
, wenn Sie später die
Konfigurationsdateien weiter unten einrichten.
Welche Netzwerkgeräte von den Skripten gestartet und gestoppt
werden, hängt von den Dateien und Ordnern in /etc/sysconfig/network-devices
ab. Dieser Ordner
sollte pro Netzwerkgerät einen Unterordner in der Form ifconfig.xyz
enthalten, wobei „xyz“ der Name des Netzwerkgerätes ist (zum
Beispiel eth0 oder eth0:1).
Das folgende Kommando erzeugt die Beispieldate ipv4
für eth0:
cd /etc/sysconfig/network-devices
mkdir -v ifconfig.eth0
cat > ifconfig.eth0/ipv4 << "EOF"
ONBOOT=yes
SERVICE=ipv4-static
IP=192.168.1.1
GATEWAY=192.168.1.2
PREFIX=24
BROADCAST=192.168.1.255
EOF
Natürlich müssen die Werte der Variablen in jeder Datei angepasst
werden, um mit Ihrer tatsächlichen Systemkonfiguration
übereinzustimmen. Wenn die ONBOOT
-Variable auf „yes“ gesetzt ist, wird das network-Skript die
Netzwerkkarte beim booten starten. Wenn sie auf irgendeinen anderen
Wert gesetzt wird, ignoriert das Skript dieses Gerät und startet es
dementsprechend auch nicht.
Der Eintrag SERVICE
legt fest, wie die
IP-Adresse vergeben wird. Die LFS-Bootskripte sind in Bezug auf
IP-Adressen-Zuordnung modular aufgebaut. Durch das Erstellen
weiterer Dateien in /etc/sysconfig/network-devices/services
können
Sie weitere Zuweisungsmethoden definieren. Das könnten Sie
z. B. tun, um eine IP-Adresse über DHCP zu beziehen (dies wird
im BLFS-Buch beschrieben).
Die Variable GATEWAY
sollte die
IP-Adresse Ihres Standard-Gateways enthalten. Wenn Sie kein
Standard-Gateway haben, setzen Sie ein Kommentarzeichen vor die
Zeile (#).
PREFIX
muss die Anzahl der verwendeten
Bits in der Netzwerkmaske enthalten. Jedes Oktett hat acht Bit.
Wenn die Netzwerkmaske 255.255.255.0 lautet, dann werden die ersten
drei Oktette benutzt (3x8 = 24 Bit), um das Netzwerk zu bezeichnen.
255.255.255.240 benutzt die ersten 28 Bit. Prefixe mit mehr als 24
Bit werden häufig von DSL- und Kabelbasierten
Internet-Dienstleistern (ISP) verwendet. In diesem Beispiel
(PREFIX=24) ist die Netzwerkmaske 255.255.255.0. Passen Sie sie
Ihrem Subnetz entsprechend an.
Wenn Sie mit dem Internet verbunden sind, brauchen Sie
höchstwahrscheinlich DNS-Namensauflösung, um Internet-Domänennamen
zu IP-Adressen aufzulösen. Dies erreichen Sie am einfachsten, indem
Sie die IP-Adresse des DNS-Servers (stellt Ihr Internet-Anbieter
oder Netzwerkadministrator bereit) in /etc/resolv.conf
eintragen. Erzeugen Sie die
Datei mit diesem Kommando:
cat > /etc/resolv.conf << "EOF"
# Begin /etc/resolv.conf
domain <Ihr Domänenname>
nameserver <IP-Adresse des primären Nameservers>
nameserver <IP-Adresse des sekundären Nameservers>
# End /etc/resolv.conf
EOF
Natürlich müssen Sie <IP-Adresse
des primären Nameservers>
durch die echte IP-Adresse
Ihres primären DNS-Servers ersetzen. Oftmals gibt es mehr als einen
Eintrag (offizielle Nameserver müssen aus Fallback-Gründen immer
auch einen sekundären DNS-Server haben). Die IP-Adresse könnte auch
die eines Routers in Ihrem lokalen Netzwerk sein. Wenn Sie keinen
zweiten Nameserver haben oder möchten, entfernen Sie den zweiten
nameserver-Eintrag.