Wer hat nicht schon einmal neidisch auf die Profis geschaut, die ihren Linux-Laptop abwechselnd in die Netzwerksteckdose der Firma, zu Hause oder auf der Konferenz stöpseln und sofort wieder das Internet benutzen, als wäre nichts passiert, während man selbst nicht einmal die zwei, drei heimischen Rechner vernünftig vernetzt bekommt? Zum Glück hat das alles mit Hexerei recht wenig zu tun, wenn man verstanden hat, was dabei eigentlich abläuft.
Wer einen Rechner in ein lokales Netzwerk einklinken will, muss dank der tollen Einrichtungshilfen moderner Linux-Distributionen oft nicht einmal mehr Hand anlegen. Selbst wenn es nicht auf Anhieb klappt, helfen ein paar Klicks durch die entsprechenden Menüs, und der Laptop arbeitet im neuen Netz. Mit einer vollautomatischen Netzwerkkonfiguration beispielsweise über DHCP [1] bezieht Ihr Rechner wirklich alle Einstellungen selbsttätig.
Doch auch, wenn die Automatik einmal versagt, muss guter Rat nicht teuer sein. Deshalb sehen wir uns im Folgenden an, was die grafischen Tools hinter den Kulissen alles anstellen, damit die Verbindung in ein LAN und weiter ins Internet funktioniert. Denn das kann man alles auch "per Hand" erledigen.
Hardware
Auf einer ganz handgreiflichen Ebene benötigt der Computer für den Zugang zu einem Netzwerk eine Netzwerkkarte mit entsprechendem Kabel (mehr Informationen zur drahtlosen Vernetzung finden Sie in [2]). Dieses Netzwerkgerät kann fest in den Rechner integriert sein, auf einer Erweiterungskarte oder – wie wohl bei den meisten modernen Laptops üblich – direkt auf der Hauptplatine sitzen. Denkbar ist aber auch eine PCMCIA-Karte oder ein externes USB-Gerät.
Damit Linux mit der Karte kommunizieren kann, benötigt es einen passenden Treiber. Im Zeitalter von "Plug&Pray" wird dieser hoffentlich automatisch geladen. Ob das funktioniert hat, prüfen Sie mit einem der wichtigsten Befehle aus der Netzwerkkonfiguration: ifconfig. Ohne Parameter aufgerufen, zeigt dieses Kommando die aktuell konfigurierten Netzwerkschnittstellen an (Listing 1). Wenn Sie nicht als root arbeiten, liegt ifconfig meist nicht in Ihrem Pfad. Starten Sie es dann mit einer expliziten Pfadangabe: /sbin/ifconfig.
Listing 1
<I>ifconfig<I> zeigt eine fertig konfigurierte Netzwerkkarte
mas@swan:~$ /sbin/ifconfig
eth0 Link encap:Ethernet HWaddr 00:00:C0:77:D8:F5
inet addr:172.16.45.12 Bcast:172.16.45.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2565 errors:0 dropped:0 overruns:0 frame:0
TX packets:10723 errors:21 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:596219 (582.2 Kb) TX bytes:3753306 (3.5 Mb)
Interrupt:9 Base address:0x2000
[…]
@KE:
Jedes Linux-System listet mindestens eine Schnittstelle, das lokale "Loopback"-Device lo. Für uns LAN-Bastler interessant sind jedoch nur diejenigen Interfaces, die mit den magischen Buchstaben eth für "Ethernet" beginnen. Die Ausgabe in Listing 1 zeigt die wichtigsten Eckdaten einer jeden Netzwerkverbindung:
- Die Hardware-Adresse (HWaddr) identifiziert die Netzwerkkarte auf der Ebene der so genannten Sicherungsschicht, d. h. auf der reinen Hardware-Seite. Diese sechs, mit Doppelpunkten getrennten Bytes heißen auch MAC-Adresse und sind weltweit eindeutig, zumindest so lange, wie keine Hacker in die Nähe kommen. Sorgfältig verwaltete Netzwerke beziehen die MAC-Adresse in die Konfiguration mit ein – das ist der Grund, warum Sie einen Rechner in der Firma nicht ohne weiteres durch Ihren Laptop ersetzen sollten.
- Die IP-Adresse (inet addr) kennzeichnet Ihren Rechner im Netzwerk. Diese Adresse verwenden die Programme auf Ihrem Computer. Doch obwohl es der Name suggeriert, muss die IP-Adresse nicht notwendigerweise aus dem Internet erreichbar sein: Die im Beispiel gezeigte Adresse 172.16.45.12 stammt aus dem standardisierten Pool privater IP-Adressen für private Netzwerke.
- Die Broadcast-Adresse (Bcast) und die Netmask ("Netzwerkmaske", Mask) beschreiben das Netzwerk etwas genauer, in dem sich der Computer befindet. Dabei wird, vereinfacht gesagt, ein Teil des riesigen Bereichs aller IP-Adressen abgetrennt und als unmittelbare Nachbarschaft deklariert. Früher konnte man diese Parameter aus der IP-Adresse erraten, heute geht das leider nicht mehr. Aber zum Glück sind diese Parameter für ein Einzelplatzsystem wie einen Laptop nun auch wieder nicht sooo wichtig. Wenn Sie die Parameter herausfinden können, stellen Sie sie bitte richtig ein, wenn nicht, führt das selten zur Katastrophe.
Auf diese Angaben folgt ein dicker Stapel Statistik rund um das Interface. Interessant ist zum Beispiel die Zählung der empfangenen (RX, "received") und gesendeten (TX, "transmitted") Pakete. Vorsicht Falle: Im Beispiel traten nicht 10723 errors auf, sondern lediglich errors:21. Ganz am Ende zeigt das Linux-ifconfig zur Information noch den benutzten Interrupt und andere Hardware-Daten zur Netzwerkkarte an. Wenn die Karte zwar erkannt und scheinbar sauber konfiguriert wird, aber trotzdem nicht funktioniert, prüfen Sie diese Zahlen als erste!
Zeigt ifconfig überhaupt kein eth0 an, gibt es zwei Möglichkeiten. Die unwahrscheinlichere, aber erfreulichere Alternative: Ihre Distribution hat die Netzwerkkarte noch nicht angetastet, und sie wartet einfach nur darauf, dass Sie sie zum Leben erwecken.
Wie weckt man eine schlafende Netzwerkkarte? Küssen hilft nicht, benutzen Sie stattdessen ifconfig:
mas@swan:~$ su Password: [Geheimes_root-Passwort] root@swan:~mas# /sbin/ifconfig eth0 up 172.16.45.12 netmask 255.255.255.0
Wenn der Kernel die Netzwerkkarte kennt, ist das alles. Haben Sie es mit der anderen Möglichkeit zu tun, hagelt es Fehlermeldungen wie diese:
eth0: unknown interface: No such device SIOCSIFADDR: No such device
Hier fehlt das Kernel-Modul mit dem Treiber für die Netzwerkkarte, oder es wurde nicht richtig geladen. Möglicherweise fehlen ja genauere Angaben zur Hardware. Für diesen Fall empfehle ich Ihnen wahlweise Google oder eine der Newsgruppen http://comp.os.linux.hardware oder http://comp.os.linux.networking.
Ab ins Netz!
Mit den bisher besprochenen Angaben sollte ein Linux-Computer Pakete mit seinen Nachbarn austauschen können. Kennen Sie die IP-Adresse eines Rechners aus dem gleichen LAN? Dann stellen Sie Ihr System wie in Listing 2 auf die Probe!
Listing 2
Kommt Antwort aus dem Netz?
mas@swan:~$ ping 172.16.45.1 PING 172.16.45.1 (172.16.45.1) from 172.16.45.12 : 56(84) bytes of data. 64 bytes from 172.16.45.1: icmp_seq=0 ttl=62 time=210 usec […]
Der Befehl ping schickt Testpakete an den angegebenen Rechner. Erreichen ihn diese, schickt er seinerseits "Pong"-Pakete zurück. Damit eignet sich das Kommando hervorragend zur Diagnostik. Brechen Sie es mit [Strg-C] ab, wenn es langweilig wird.
Was Linux jetzt noch nicht beherrscht, ist der Blick über den Tellerrand, nämlich die Kommunikation mit anderen Netzwerken. Außer natürlich, ein automagisches Tool Ihrer Distribution hat seine Finger im Spiel und tut Dinge hinter Ihrem Rücken …
Pakete innerhalb des eigenen LANs (genauer gesagt: im Einzugsbereich der konfigurierten Netzwerkschnittstellen) kann Linux direkt versenden. Dabei sind natürlich noch einige Raffinessen im Spiel, doch um die müssen Sie sich kaum jemals selbst kümmern. Pakete an fremde Netze "lässt" Linux verschicken. Anstatt sie selber zuzustellen, leitet es sie an einen anderen Rechner weiter, der sich darum kümmern soll. Dieser andere Rechner heißt Gateway oder auch Defaultrouter. In Ihrer Firma hat er einen WAN-Zugangsknoten, in Ihrer Wohnung übernimmt der Server mit der ISDN-Karte oder dem Modem diese Rolle.
Welche Daten wohin verschickt werden, steht in einer so genannten Routing-Tabelle. Der Befehl route (bzw. /sbin/route, wenn Sie nicht als root arbeiten) zeigt diese Tabelle an. Wenn Sie tatsächlich per Hand konfigurieren, ergänzen Sie bitte wie in Listing 3 die Option -n, die eine potenziell zeitraubende Übersetzung der gezeigten IP-Adressen in symbolische Namen verhindert.
Listing 3
Die Route
mas@swan:~$ /sbin/route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 172.16.45.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo 0.0.0.0 172.16.45.1 0.0.0.0 UG 0 0 0 eth0
Jede Zeile enthält einen Routen-Eintrag. Zur schnellen Orientierung reicht dabei ein Blick auf die erste und die letzte Spalte. Die erste mit der Destination (dem Ziel) zeigt, welche Datenpakete betroffen sind. (Profis merken sofort, dass man dafür auch die dritte Spalte mit berücksichtigt. Wir anderen tun meistens intuitiv das richtige.) In Listing 3 zeigt die erste Zeile also, was mit Paketen an IP-Adressen, die mit 172.16.45 beginnen, passieren soll. Die letzte Spalte gibt an, über welches Iface – "Interface" – diese Pakete versandt werden, hier das von vorhin bekannte eth0.
Die zweite Zeile sagt analog: Pakete an IP-Adressen, die mit 127 beginnen, werden an das Interface lo geschickt. Dabei handelt es sich um das besagte "Loopback"-Gerät, über das ein Computer mit sich selbst sprechen kann.
Die dritte Zeile schließlich ist der Joker. Alle Empfängeradressen, die bis hierhin noch nicht abgedeckt sind, werden nach den Regeln dieser Zeile bearbeitet. Und hier taucht ein Gateway auf, ein Defaultrouter: Wenn die Empfängeradresse eines Pakets nicht mit 172.16.45 und auch nicht mit 127 beginnt, übergibt Linux das Paket an den Rechner 172.16.45.1. Der soll sich darum kümmern.
Praktisch, nicht? Ihr Computer kennt gerade mal zwei Netzwerke, von denen eines auch noch so eine Art Tagebuch für Selbstgespräche darstellt. Und trotzdem kann er jetzt mit der ganzen Welt kommunizieren.
Gerade auf Laptops werden Sie allerdings früher oder später Ihre liebe Not mit der Defaultroute haben: Mal im Betrieb ans Firmennetz angeschlossen, mal daheim ans Hausnetz, unterwegs soll das Notebook per Handy und im Hotel per Modem kommunizieren, und bei all dem darf es nicht durcheinander kommen!
Viele Distributionen geraten bei solch freizügigem Verkehr tatsächlich ins Schwitzen. Das häufigste Symptom des Fremdgehens zeigt sich in Form einer defekten Defaultroute. Die Netzwerkverbindung an sich wird zwar noch korrekt aufgebaut, die Defaultroute fehlt aber oder zeigt ins Nirwana. Ein Beispiel zeigt Listing 4.
Listing 4
Ein wenig verwirrt
mas@swan:~$ /sbin/route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 195.71.150.164 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0 172.16.45.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo 0.0.0.0 172.16.45.1 0.0.0.0 UG 0 0 0 eth0
Dieser Computer verfügt über eine (völlig korrekt konfigurierte) Anbindung an ein LAN (eth0). Dort ist er gerade nicht angeschlossen, sondern es besteht per Handy eine Wählverbindung ins Netz (ppp0). Allerdings ist die Defaultroute für das LAN noch gesetzt. Linux versucht nun, alle Pakete ins Internet über die Netzwerkkarte zu verschicken, nicht über das Handy. Das funktioniert natürlich nicht.
Doch Abhilfe naht wieder in Gestalt des route-Befehls: Dieser kann die Routing-Tabelle nämlich gezielt verändern (Listing 5). Zuerst löscht root mit route del (wie "delete", löschen) die Defaultroute und fügt die neue anschließend mit route add hinzu. Die gilt für das -net (Netzwerk, also nicht nur für eine einzelne Adresse) default (d. h. für alle nicht näher beschriebenen IP-Adressen) und zeigt zum gw ("Gateway") 195.71.150.164. Diese IP-Adresse des Routers klaut man sich übrigens am besten aus der zuvor angezeigten route-Tabelle (Listing 4).
Listing 5
Eine neue Defaultroute
root@swan:~mas# /sbin/route del default root@swan:~mas# /sbin/route add -net default gw 195.71.150.164



