7.13. Einrichten des network-Skripts

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

7.13.1. Einrichten von stabilen Namen für Netzwerkkarten

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.

7.13.2. Erstellen der Konfigurationsdateien für Netzwerkgeräte

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.

7.13.3. Erstellen der Datei /etc/resolv.conf

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.