Die manuelle Konfiguration der Netzwerksoftware sollte stets die zweite Wahl sein. Wir empfehlen, YaST zu benutzen. Wesentlich ist, dass alle Netzwerk-Interfaces mit dem Skript /sbin/ifup aufgesetzt werden. Zum Anhalten oder Prüfen eines Interfaces gibt es ifdown und ifstatus.
Wenn Sie nur fest eingebaute Netzwerkkarten haben, genügt es die Interfaces über ihren Namen zu konfigurieren. Mit ifup eth0, ifstatus eth0 und ifdown eth0 starten, prüfen und stoppen Sie das Netzwerkinterface eth0. Die verwendeten Konfigurationsdaten liegen unter /etc/sysconfig/network/ifcfg-eth0. eth0 ist hier sowohl der Interface-Name als auch der Name für die Netzwerkkonfiguration.
Die Netzwerkkonfiguration kann alternativ auch der Hardware-Adresse (MAC-Adresse) einer Netzwerkkarte zugeordnet werden. Dazu wird eine Konfigurationsdatei ifcfg-<Hardwareadresse ohne Doppelpunkte> verwendet. Die Buchstaben der Hardware-Adresse müssen hier klein geschrieben werden, so wie sie von ip link ausgegeben wird (ifconfig verwendet große Buchstaben). Wenn ifup eine Konfigurationsdatei passend zur Hardware-Adresse findet, wird ein möglicherweise auch vorhandenes ifcfg-eth0 ignoriert.
Mit hotplugfähigen Netzwerkkarten wird es ein wenig komplizierter. Wenn Sie keine solche Karte besitzen, können Sie beim Abschnitt 14.3.1. “Konfigurationsdateien” weiterlesen.
Da bei hotplugfähigen Netzwerkkarten die Zuordnung des Interface-Namen zur Karte eher zufällig ist, werden die Konfigurationen für eine solche Karte nicht unter dem Interface-Namen abgelegt, sondern unter einem Bezeichner, der die Art der verwendeten Hardware und den Anschlusspunkt beschreibt, im Folgenden Hardwarebeschreibung genannt. ifup muss in diesem Fall mit zwei Argumenten aufgerufen werden, der genauen Hardwarebeschreibung und dem gegenwärtigen Interface-Namen. Anschließend wird von ifup die Konfiguration ermittelt, die möglichst genau auf die Hardwarebeschreibung passt.
Als Beispiel wollen wir einen Laptop mit zwei PCMCIA-Steckplätzen und einer PCMCIA Ethernet Netzwerkkarte annehmen. Außerdem gibt es in diesem Gerät noch eine festeingebaute Netzwerkkarte, die als Interfacenamen eth0 erhält. Wenn die PCMCIA-Karte im Steckplatz 0 steckt, lautet ihre Hardwarebeschreibung eth-pcmcia-0. Der cardmgr oder das Hotplug-Netzwerkscript rufen nun ifup eth-pcmcia-0 eth1 auf. Nun sucht ifup, ob es unter /etc/sysconfig/network/ eine Datei ifcfg-eth-pcmcia-0 gibt. Wenn nicht wird weiter nach ifcfg-eth-pcmcia, ifcfg-pcmcia-0, ifcfg-pcmcia, ifcfg-eth1 und ifcfg-eth gesucht. Die zuerst gefundene Datei wird zur Konfiguration verwendet. Wenn also eine Netzwerkkonfiguration angelegt werden soll, die für alle PCMCIA-Netzwerkkarten (in allen Steckplätzen) gelten soll, muss diese ifcfg-pcmcia heißen. Diese würde dann für eth-pcmcia-0 genauso wie für eine Tokenringkarte in Steckplatz 1 tr-pcmcia-1 verwendet.
Auch hier hat wieder eine Konfiguration nach Hardwareadresse absoluten Vorrang. Dies wurde nur aus Gründen der Übersichtlichkeit aus dem Beispiel weggelassen.
YaST geht bei der Konfiguration von hotplugfähigen Karten einen Umweg. Dort werden Konfigurationen für solche Karten durchnummeriert. Deshalb schreibt YaST die Einstellungen für eine PCMCIA-Karte immer nach ifcfg-eth-pcmcia-<laufende Nummer>. Damit diese Konfiguration dann trotzdem für alle Steckplätze funktioniert, wird noch ein Link ifcfg-eth-pcmcia auf diese Datei angelegt. Dies sollten Sie beachten, wenn Sie teilweise mit und teilweise ohne YaST konfigurieren.
Dieser Abschnitt gibt eine Übersicht über die Netzwerkkonfigurationsdateien und erklärt ihre Funktion sowie das verwendete Format.
Diese Dateien enthalten die Daten, die spezifisch für ein Netzwerk-Interface sind. Sie können nach dem Interface-Namen benannt sein (ifcfg-eth2), nach der Hardware-Adresse einer Netzwerkkarte (ifcfg-000086386be3) oder nach einer Hardware-Beschreibung für eine Karte (ifcfg-usb). Sollen Netzwerkaliase verwendet werden, heißen die dazu nötigen Dateien einfach ifcfg-eth2:1 oder ifcfg-usb:1. Das Skript ifup bekommt neben dem Interface-Namen bei Bedarf auch eine genaue Hardwarebeschreibung und sucht dann die am besten passende Datei zur Konfiguration aus.
Die Dateien enthalten die IP-Adresse (BOOTPROTO=static, IPADDR=10.10.11.214) oder die Anweisung, DHCP zu verwenden (BOOTPROTO="dhcp"). Die IP-Adresse sollte die Netzmaske bereits enthalten (IPADDR="10.10.11.214/16"). Die vollständige Liste von Variablen enthält die Manpage zu ifup. Es können außerdem alle Variablen aus den Dateien dhcp, wireless und config in den ifcfg-*-Dateien verwendet werden, wenn eine sonst allgemeine Einstellung nur für ein Interface verwendet werden soll.
Die Datei config enthält allgemeine Einstellungen zum Verhalten von ifup, ifdown und ifstatus. Sie ist vollständig kommentiert. Ebenso gibt es Kommentare in dhcp und wireless, wo allgemeine Einstellungen zu DHCP und Funknetzwerkkarten Platz finden. Alle Variablen aus diesen Dateien können auch in ifcfg-* verwendet werden und haben dort natürlich Vorrang.
Wie bereits die Datei /etc/host.conf, so spielt auch diese Datei in Bezug auf Auflösung von Rechnernamen durch die resolver–Bibliothek eine Rolle.
In dieser Datei wird angegeben, welcher Domain der Rechner angehört (Schlüsselwort search) und wie die Adresse des Nameservers ist (Schlüsselwort nameserver), der angesprochen werden soll. Es können mehrere Domainnamen angegeben werden. Beim Auflösen eines nicht voll qualifizierten Namens wird versucht, durch Anhängen der einzelnen Einträge in search einen gültigen, voll qualifizierten Namen zu erzeugen. Mehrere Nameserver können durch mehrere Zeilen, die mit nameserver beginnen, bekannt gemacht werden. Kommentare werden wieder mit # eingeleitet.
Ein Beispiel für /etc/resolv.conf zeigt Datei 14.5. “/etc/resolv.conf”.
Beispiel 14.5. /etc/resolv.conf
# Our domain search example.com # # We use sun (192.168.0.20) as nameserver nameserver 192.168.0.20
YaST trägt hier den angegebenen Nameserver ein!
Einige Dienste wie pppd (wvdial), ipppd (isdn), dhcp (dhcpcd und dhclient), pcmcia und hotplug modifizieren die Datei /etc/resolv.conf über das Skript modify_resolvconf.
Wenn die Datei /etc/resolv.conf durch dieses Skript vorübergehend modifiziert wurde, enthält sie einen definierten Kommentar, der Auskunft darüber gibt, welcher Dienst sie modifiziert hat, wo die ursprüngliche Datei gesichert ist und wie man die automatischen Modifikationen abstellen kann.
Wenn /etc/resolv.conf mehrmals modifiziert wird, wird diese Verschachtelung von Modifikationen auch dann wieder sauber abgebaut, wenn sie in einer anderen Reihenfolge zurückgenommen werden; dies kann bei isdn, pcmcia und hotplug durchaus vorkommen.
Wenn ein Dienst nicht sauber beendet wurde, kann mit Hilfe des Skripts modify_resolvconf der Ursprungszustand wiederhergestellt werden. Beim Booten wird geprüft, ob eine modifizierte resolv.conf stehen geblieben ist (z. B. wegen Systemabsturz). Dann wird die ursprüngliche (unmodifizierte) resolv.conf wiederhergestellt.
YaST findet mittels modify_resolvconf check heraus, ob resolv.conf modifiziert wurde, und dann den Benutzer warnen, dass seine Änderungen nach der Restauration wieder verloren sein werden. Ansonsten verwendet YaST modify_resolvconf nicht, das heißt eine Änderung der Datei resolv.conf mittels YaST und eine manuelle Änderung sind äquivalent. Beides entspricht einer gezielten und dauerhaften Änderung, während eine Änderung durch einen der genannten Dienste nur vorübergehend ist.
In dieser Datei (siehe Datei 14.6. “/etc/hosts”) werden Rechnernamen IP–Adressen zugeordnet. Wird kein Nameserver verwendet, müssen hier alle Rechner aufgeführt werden, zu denen eine IP–Verbindung aufgebaut werden soll. Je Rechner wird eine Zeile bestehend aus IP-Adresse, dem voll qualifizierten Hostnamen und dem Rechnernamen (zum Beispiel earth) in die Datei eingetragen. Die IP–Adresse muss am Anfang der Zeile stehen, die Einträge werden durch Leerzeichen bzw. Tabulatoren getrennt. Kommentare werden durch # eingeleitet.
Hier werden Netzwerknamen in Netzwerkadressen umgesetzt. Das Format ähnelt dem der hosts-Datei, jedoch stehen hier die Netzwerknamen vor den Adressen (siehe Datei 14.7. “/etc/networks”).
Das Auflösen von Namen – das heisst das Übersetzen von Rechner- bzw. Netzwerknamen über die resolver-Bibliothek – wird durch diese Datei gesteuert. Diese Datei wird nur für Programme verwendet, die gegen die libc4 oder die libc5 gelinkt sind; für aktuelle glibc-Programme vgl. die Einstellungen in /etc/nsswitch.conf! Ein Parameter muss in einer eigenen Zeile stehen, Kommentare werden durch # eingeleitet. Die möglichen Parameter zeigt Tabelle 14.5. “Parameter für /etc/host.conf”.
Tabelle 14.5. Parameter für /etc/host.conf
Ein Beispiel für /etc/host.conf zeigt Datei 14.8. “ /etc/host.conf ”.
Mit der GNU C Library 2.0 hat der Name Service Switch (NSS) Einzug gehalten (vgl. die Manpage von man 5 nsswitch.conf, sowie ausführlicher The GNU C Library Reference Manual, Kapitel „System Databases and Name Service Switch“>).
In der Datei /etc/nsswitch.conf wird festgelegt, in welcher Reihenfolge bestimmte Informationen abgefragt werden. Ein Beispiel für nsswitch.conf zeigt Datei 14.9. “/etc/nsswitch.conf”. Kommentare werden durch # eingeleitet. Dort bedeutet zum Beispiel der Eintrag bei der Datenbank hosts, dass nach /etc/hosts (files) eine Anfrage über DNS (vgl. Abschnitt 14.6. “DNS – Domain Name System”) losgeschickt wird.
Beispiel 14.9. /etc/nsswitch.conf
passwd: compat group: compat hosts: files dns networks: files dns services: db files protocols: db files netgroup: files automount: files nis
Die über NSS verfügbaren Datenbanken sind in Tabelle 14.6. “Über /etc/nsswitch.conf verfügbare Datenbanken” genannt. Zusätzlich sind in Zukunft automount, bootparams, netmasks und publickey zu erwarten.
Tabelle 14.6. Über /etc/nsswitch.conf verfügbare Datenbanken
| aliases | Mail-Aliase, von sendmail verwendet; vgl. die Manpage man 5 aliases. |
| ethers | Ethernet-Adressen. |
| group | Für Benutzergruppen, von getgrent verwendet; vgl. die Manpage man 5 group. |
| hosts | Für Hostnamen und IP-Adressen, von gethostbyname und ähnlichen Funktionen verwendet. |
| netgroup | Im Netzwerk gültige Liste von Hosts und Benutzern, um Zugriffsrechte zu steuern; vgl. die Manpage man 5 netgroup. |
| networks | Netzwerknamen und -adressen, von getnetent verwendet. |
| passwd | Benutzerpasswörter, von getpwent verwendet; vgl. die Manpage man 5 passwd. |
| protocols | Netzwerk-Protokolle, von getprotoent verwendet; vgl. die Manpage man 5 protocols. |
| rpc | Remote Procedure Call-Namen und -Adressen, von getrpcbyname und ähnlichen Funktionen verwendet. |
| services | Netzwerkdienste, von getservent verwendet. |
| shadow | Shadow-Passwörter der Benutzer, von getspnam verwendet; vgl. die Manpage man 5 shadow. |
Die Konfigurationsmöglichkeiten der NSS-Datenbanken stehen in Tabelle 14.7. “Konfigurationsmöglichkeiten der NSS-Datenbanken”.
Tabelle 14.7. Konfigurationsmöglichkeiten der NSS-Datenbanken
| files | direkt auf Dateien zugreifen, zum Beispiel auf /etc/aliases. |
| db | über eine Datenbank zugreifen. |
| nis | NIS, vgl. Abschnitt 14.8. “NIS – Network Information Service”. |
| nisplus | |
| dns | Nur bei hosts und networks als Erweiterung verwendbar. |
| compat | Nur bei passwd, shadow und group als Erweiterung verwendbar. |
Zusätzlich ist es möglich, unterschiedliche Reaktionen bei bestimmten Lookup-Ergebnissen auszulösen; Details sind der Manpage man 5 nsswitch.conf zu entnehmen.
Über diese Datei wird der nscd Name Service Cache Daemon konfiguriert (vgl. man 8 nscd und die man 5 nscd.conf). Per default werden die Einträge von passwd und groups gecached. hosts wird normalerweise nicht gecached, da sich der Rechner dann nicht mehr auf „forward/reverse lookups“ dieses Namensdienstes verlassen kann. Statt dem nscd diese Aufgabe zu übertragen, sollten sie einen „caching“ Nameserver einrichten.
Wenn beispielsweise das Caching für passwd aktiviert ist, dauert es in der Regel 15 Sekunden, bis ein neu angelegter lokaler Benutzer dem System bekannt ist. Durch das Neustarten des nscd mit dem Befehl rcnscd restart kann diese Wartezeit verkürzt werden.
Neben den beschriebenen Konfigurationsdateien gibt es noch verschiedene Skripten, die während des Hochfahrens des Rechners die Netzwerkprogramme starten. Diese werden gestartet, sobald das System in einen der Multiuser-Runlevel übergeht (vgl. Tabelle 14.8. “Einige Startup-Skripten der Netzwerkprogramme”).
Tabelle 14.8. Einige Startup-Skripten der Netzwerkprogramme