Das eigene Netzwerk - Übersicht und Beschreibung

ArticleCategory: [Es gibt verschiedene Artikel Kategorien]

System Administration

AuthorImage:[Ein Bild von Dir]

[Photo of the Author]

TranslationInfo:[Author and translation history]

original in en Guido Socher

en to de Harald Radke

AboutTheAuthor:[Eine kleine Biographie über den Autor]

Guido ist schon seit langer Zeit ein Linuxenthusiast. Alle seine Rechner zuhause sind miteinander vernetzt.

Abstract:[Here you write a little summary]

Netzwerke finden immer mehr Verbreitung. Auch der in die Jahre gekommene 486 daheim kann ohne Probleme als Dateiserver dienen oder mittels IP-Masquerading allen Rechnern der Familienmitglieder gleichzeitig Zugang zum Internet verschaffen. Dieser Artikel soll einen groben Überblick geben, wie man zuhause sein eigenes Netzwerk aufzieht. Fachbegriffe, notwendig zum Verständnis von weiterführenden Büchern und anderen Artikeln zum Thema Netzwerke, werden erklärt. Im Mittelpunkt hier steht ein kleines Netzwerk daheim.

ArticleIllustration:[This is the title picture for your article]

[Illustration]

ArticleBody:[The article body]

10Base2

Hierbei handelt es sich um ein 10 MBit/s Ethernet über ein Koaxialkabel. Die Enden des Kabels müssen jeweils mit einem 50 Ohm Widerstand terminiert werden. Das Kabel selbst darf nicht länger als 185 Meter sein. Weiterhin sollten alle Netzkarten einen Abstand von mindestens einen halben Meter zueinander haben. Über T-Stücke werde die Karten mit dem Kabel verbunden. Alle Karten hängen direkt am Kabel, man braucht keinen Hub anzuschließen. Diese Art von Netzwerk dürfte für das häußliche Netz die günstigste Variante sein, sie wird deshalb auch manchmal "Cheapernet" genannt. Wichtig ist, dass das Kabel direkt von Karte zu Karte verläuft (Bus Topologie). Es darf kein weiteres Kabel zwischen T-Stück und Netzwerkkarte sein.
10Base2

10BaseT

Ebenfalls 10 MBit/s Ethernet, allerdings werden hier Twisted-Pair Kabel verwendet. Alle Karten sind jeweils über ein Twisted-Pair Kabel mit einem zentralen Gerät, dem Hub verbunden. Das Netzwerk weist eine Stern-Topologie auf. Die Kabellänge zwischen Karte und Hub darf nicht größer als 100 Meter sein. Sollen nur zwei Rechner miteinander verbunden werden, so kann dies auch direkt und ohne Hub geschehen, und zwar mittels eines gekreuzten Twisted-Pair Kabel.
10BaseT

100BaseT and 100BaseT4

Auch hier werden Twisted-Pair Kabel verwendet (wie bei 10BaseT), allerdings beträgt die Bandbreite nun 100 MBit/s. Für die allermeisten Anwendungen zuhause sollte die billigere 10 MBit/s Variante vollkommen ausreichen. 100BaseT verwendet die Adernpaare Nummer zwei und drei des Twisted-Pair Kabels. Demgegenüber werden bei 100BaseT4 alle vier Adernpaare benutzt.

RJ-45 Stecker

Dieser Typ wird bei 10BaseT, 100BaseT und 100BaseT4 Netzwerken verwendet. Er ist ein kleiner und flacher 8 Pin Plastikstecker.
RJ-45
Pin Name Belegung bei 10BaseT
1 TX+ Senderichtung Daten +
2 TX- Senderichtung Daten -
3 RX+ Empfangsrichtung Daten +
4 n/c nur für 100BaseT4
5 n/c nur für 100BaseT4
6 RX- Empfangsrichtung Daten -
7 n/c nur für 100BaseT4
8 n/c nur für 100BaseT4
  Anmerkung: TX & RX werden
an Hubs vertauscht.

Anmerkung: Man benötigt eine spezielle Zange, um ein Twisted-Pair Kabel an einen RJ-45 Stecker anzuschließen.

Kabelarten

Es folgen die gängisten Kabelarten: Die verschiedenen Typen von Twisted-Pair Kabeln werden unterschiedlichen Kategorien, entsprechend ihrer Dämpfung, zugeordnet.

Die Anschlussbelegung des RJ-45 Steckers eines Twisted-Pair Kabels ist standarisiert. Hierbeit gibt es mehrere Standards, die eine leicht abweichende Farbkodierung der Adern besitzen. Korrekte Belegungen sind:
Adernpaar Nr. Anschluss Pins Standard 1 Standard 2 Standard 3 Standard 4
1 4/5 blau/weiss weiss/blau weiss/blau weiss/braun
2 3/6 weiss/grün rot/orange cyan-blau/lila grün/gelb
3 1/2 weiss/orange schwarz/grün weiss/orange grau/rosa
4 7/8 weiss/braun gelb/braun cyan-blau/lila blau/rot

Die Art der Verkabelung spielt prinzipiell nur dann eine Rolle, wenn mehr als 20 Meter Kabel im Haus verlegt werden sollen. Sollen hingegen nur ein paar Rechner im gleichen Raum vernetzt werden, dann kann man ruhig auf billiges vorkonfektioniertes Kabel zurückgreifen (mit Steckern). Diese bekommt man in Längen zwischen ein und zehn Metern.

Gekreuzte Kabel

Diese Art von Twisted-Pair Kabeln wird für das Verbinden von genau zwei Rechnern verwendet. Sollen drei oder mehr Rechner vernetzt werden, benötigt man einen Hub. Bei einem gekreuzten Twisted-Pair Kabel werden RX und TX vertauscht. die beiden Anschlüsse sind wiefolgt verdrahtet:
Pin Nr. Pin Nr.
1 verbunden mit 3
2 verbunden mit 6
3 verbunden mit 1
4 verbunden mit 5 (100baseT4)
5 verbunden mit 4 (100baseT4)
6 verbunden mit 2
7 verbunden mit 8 (100baseT4)
8 verbunden mit 7 (100baseT4)
9 verbunden mit 9 (100baseT4)
Auch gekreuzte Kabel kann man bereits konfektioniert kaufen.

Hub

Ein Hub wird für Twisted-Pair Netzwerke benötigt, die mehr als 2 Rechner beinhalten. Der Hub verstärkt die Signale, die von einem Rechner geschickt werden und sendet sie an alle anderen Rechner weiter. Für daheim braucht man für gewöhnlich einen fünf oder acht Port "Workgroup Hub". Ethernet Switches können anstelle von Hubs eingesetzt werden, jedoch sind sie teurer und lohnen sich nur in Netzen mit hohem Datenaufkommen und vielen vernetzten Rechnern.

LAN

LAN steht füt Local Area Network und bezeichnet ein sogenanntes Broadcast Netzwerk. Innerhalb solch eines Netzwerkes kann jeder Rechner alle anderen angeschlossenen Computer erreichen, ohne über einen Router gehen zu müssen. Zum Beispiel bilden alle Rechner, die mittels eines Koaxialkabels, oder über einen Hub miteinander verbunden sind, ein LAN.

Netzkarten

Meiner Erfahrung nach sind die billigsten Karten die besten. In der Regel bieten die teureren Karten nicht unbedingt auch mehr Features. ISA PNP Karten können Probleme bereiten. Die meisten als solche verkauften Karten kommen mit einer DOS Diskette mit, mit welcher die Einstellungen im Flash ROM der Karte geändert werden können und man einstellen kann, dass die Karte kein PNP verwenden soll. Es kann dann ein fester Interrupt und eine feste E/A-Adresse angegeben werden. (Achtung: Wer ein PNP Bios auf seinem Motherboard hat, muss dort auch noch festlegen, dass der gewählte Interrupt von der PNP Zuweisung ausgenommen wird!) Standardmäßig wird als E/A-Adresse meist io=0x300 gewählt. Unter Linux kann man sich die Belegung von Interrupts und E/A-Adressen folgendermaßen anzeigen lassen:
cat /proc/interrupts /proc/ioports | more
(Beachte: Diese Interrupts und Adressen sind diejenigen, die zur Zeit bereits von Treibern verwendet werden!)

Der Besitzer solch einer ISA PNP Karte wird möglicherweise feststellen, dass die DOS Diskette für einen reinen Linuxanwender nicht allzuviel Nutzen birgt. Vielleicht besitzt man selbst oder ein Bekannter eine alte DOS Diskette, von der gebootet werden kann. Nachdem dies geschehen ist, kann man dann schließlich die Einstellungen der Netzkarte ändern. Da diese die Werte im Flash ROM sichert, ist diese Prozedur nur einmal, nach dem Einbau der Karte, notwendig.

NE2000 Netzkarten sind heute bereits füt ca.30 DM erhältlich. Diese werden unter Linux sehr gut unterstützt. Die Karten gibt es sowohl als ISA, als auch als PCI Variante.
Für den Betrieb am ISA Bus müssen die Kernelmodule ne und 8390 eingebunden werden. Man kann entweder den Treiber die Einstellungen suchen lassen oder sie manuell als Paramter angeben. Das Einbinden der Module unter Angabe der Werte sieht wie folgt aus:
insmod 8390
insmod ne irq=10 io=0x300

Bei PCI Karten braucht man sich in der Regel nicht um Interrupt und E/A-Adresse zu kümmern. Diese Karten sind allerdings ein wenig teurer. Sie benötigen die Module ne2k-pci und 8390.

Netzwerkschnittstelle

Normalerweise stellt die Netzkarte die Schnittstelle zum Netzwerk dar. Der Ausdruck Network Interface bezeichnet aber auch noch die Softwareseite, der eine IP Adresse zugwiesen wird. Wer zum Beispiel ein Modem und eine Ethernet Karte im seinem Rechner hat, verwendet mindestens zwei IP Adressen und Netzwerkschnittstellen (Network Interfaces) für diesen einen Rechner. Eine IP Adresse wird immer einer Netzwerkschnittstelle und nie einem Rechner zugewiesen. Der Rechner(name) kann mit genau einer IP Adresse korrespondieren, im allgemeinen besteht jedoch eine 1-m (one to many) Relation zwischen Rechnername (Hostname) und IP Adressen (ein Name, mehrere IP Adressen). Mit dem Befehl ifconfig kann man sich die Einstellungen für die verschiedenen Netzwerkschnittstellen anzeigen lassen und diese auch konfigurieren. Hier ein Beispielausgabe:
> /sbin/ifconfig -a
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Bcast:127.255.255.255  Mask:255.0.0.0
          UP BROADCAST LOOPBACK RUNNING  MTU:3584  Metric:1
          RX packets:1664 errors:0 dropped:0 overruns:0
          TX packets:1664 errors:0 dropped:0 overruns:0

eth0      Link encap:10Mbps Ethernet  HWaddr 00:80:AD:71:52:19
          inet addr:10.0.0.1  Bcast:10.255.255.255  Mask:255.0.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5993 errors:0 dropped:0 overruns:0
          TX packets:4073 errors:0 dropped:0 overruns:0
          Interrupt:5 Base address:0x300 

dummy0    Link encap:10Mbps Ethernet  HWaddr 00:00:00:00:00:00
          inet addr:10.0.0.1  Bcast:10.255.255.255  Mask:255.0.0.0
          UP BROADCAST RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0
          TX packets:0 errors:0 dropped:0 overruns:0

ppp0      Link encap:Point-Point Protocol  
          inet addr:199.94.253.30  P-t-P:199.94.253.4  Mask:255.255.255.0
          UP POINTOPOINT RUNNING  MTU:552  Metric:1
          RX packets:7 errors:0 dropped:0 overruns:0
          TX packets:8 errors:0 dropped:0 overruns:0
In obigem Beispiel sieht man vier Netzwerkschnittstellen.

Routing

Der Linuxkernel verfügt über einen "internen IP Router". Mittels der Routingtabelle wird entschieden, was mit eingehenden IP Paketen zu geschehen hat. Abhängig von der IP Zieladresse des Paketes wird über die Tabelle der Bestimmungsort ermittelt. Die Routingtabelle kann unter Linux mit /sbin/route oder netstat -r ausgegeben werden. Der Standardbefehl unter Unix ist allerdings netstat -r. Die Konfiguration des Routings zu erläutern würde den Rahmen dieses Artikel sprengen, dieses Thema wird in einem eigenen Artikel behandelt werden. Die Linux Network Andministators's Guide (www.linuxdoc.org/LDP/nag/nag.html) stellt eine gute Anleitung für die Konfiguration des Routings dar.

PLIP

Mittels Parallel Port IP kann die parallele Schnittstelle als Netzwerkschnittstelle verwendet werden. Der zuständige Parameter bei der Kernelkonfiguration ist CONFIG_PLIP, der Treiber wird am besten als Modul verwendet. PLIP stellt eine preiswerte Möglichkeit für den Anschluss eines Laptops an einen anderen Rechner dar, welcher wiederum im eigenen Hausnetz eingebunden ist. Hierfür ist ein Parallelkabel mit zwei Male Steckern notwendig, auch bekannt als LapLink Kabel. Für diejenigen, die sich selbst solch ein Kabel basteln wollen, hier die Verdrahtung:

Pin Nr. Pin Nr.
17 mit 17
25 mit 25
2 mit 15
3 mit 13
4 mit 12
5 mit 10
Pin Nr. Pin Nr.
6 mit 11
15 mit 2
13 mit 3
12 mit 4
10 mit 5
11 mit 6
Auch wenn PLIP nicht an die Geschwindigkeit von Ethernet herankommt, reicht es doch bereits für einige Netzwerkanwendungen, wie zum Beispiel NFS aus.

IP Adressen

Man muss sich überlegen, welche IP Adressen für das Netzwerk verwendet werden sollen. Normalerweise bekommt man eine IP Adresse von seinem Internetanbieter, sobald man "online" geht. Diese Adresse wird mehr oder weniger automatisch der PPP Schnittstelle zugwiesen. Der Anwender muss sich in der Regel nicht darum kümmern. Nun stellt sich jedoch die Frage, welche Adressen den anderen Schnittstellen im eigenen Netzwerk (z.B. eth0 und plip1) zugewiesen werden sollen. Einige Adressbereiche von IP Adressen sind speziell für den "privaten Gebrauch" reserviert. Diese Adressen werden nicht im Internet geroutet und können so zu keinen Problemen führen, wenn sie mehrfach verwendet werden. Diese Adressbereiche sind:
Netzmaske Netzwerkadressen
255.0.0.0 10.0.0.0 - 10.255.255.255
255.255.0.0 172.16.0.0 - 172.31.255.255
255.255.255.0 192.168.0.0 - 192.168.255.255
Der erste Block ist ein eiziges Class A Netz, der zweite Bereich besteht aus 16 aufeinanderfolgenden Class B Netzen und der dritte Block besteht aus 255 aufeinanderfolgenden Class C/i> Netzen.

Welche Adressen sollte nun verwendet werden? Das spielt prinzipiell keine Rolle, allerdings sollte aufeinanderfolgende Nummern benutzt werden. Sollen zum Beispiel zwei Rechner über Ethernet miteinander verbunden werden, werden nun zwei Adressen für die beiden Netzkarten (bzw. deren Representation als Netzwerkschnittstellen - Interfaces) benötigt. Hier sollte man einfach 192.169.0.1 und 192.168.0.2 verwenden.

Konfigurationsdateien

Die meisten Distributionen besitzen heutzutage nette grafischen Oberflächen (GUIs), mit denen die Netzwerkeinstellungen vorgenommen werden können (z.B. yast oder netcfg). Diese kann man ruhig verwenden. An dieser Stelle sei auf die Dokumentation der jeweiligen Linux Distribution verwiesen, in diesem Artikel wird kein Schwerpunkt auf eine bestimmte Distribution gesetzt. Vielmehr werden die zugrundeliegenden Konfigurationsdateien, die auf magische Weise bei Verwendung der GUIs geändert werden, beleuchtet. Dadurch wird es einem möglich, die Einstellungen des Konfigurationsprogrammes zu überprüfen.

/etc/hosts und /etc/host.conf

In einem kleinen Netz zu Hause macht es nicht allzuviel Sinn, einen DNS Server einzurichten. Stattdessen können direkt die Rechnernamen eingetragen werden, und zwar in die Datei /etc/hosts
Beispiel:

# ipaddrs hostname alias
127.0.0.1 localhost
192.168.0.1 obelix.mynet obelix
192.168.0.2 asterix.mynet asterix
192.168.0.3 idefix.mynet idefix
Zusammen mit der Datei /etc/hosts wird die Datei /etc/host.conf verwendet, in welcher festgelegt wird, wie Rechnernamen aufgelöst werden. Folgende Zeilen sollten in dieser Datei stehen:
# /etc/host.conf
order hosts bind
# Allow multiple addrs
multi on

/etc/resolv.conf

In der Datei /etc/resolv.conf wird festgelegt, wo alle Namen, die nicht in /etc/hosts gefunden werden können, aufgelöst werden. Hierfür sollte man die IP Adresse des DNS Servers seines Internetanbieters in Erfahrung bringen. Wenn möglich sollte man mehr als nur einen DNS Server verwenden. Sollte nämlich der erste DNS Server zeitweilig sehr langsam oder gar ausgefallen sein, wird einfach der nächste verwendet. Die Syntax sieht so aus:

#/etc/resolv.conf
#nameserver ipaddr.
nameserver 123.456.789.1
# alternative DNS server:
nameserver 123.456.111.9

Rechnernamen vergeben

/etc/HOSTNAME (oder /etc/sysconfig/network unter RedHat) heisst die Datei in der viele Distributionen den Rechnernamen eintragen. In Wirklichkeit aber wird der Name mittels des Kommandos hostname gesetzt. Was nun bei diesen Distributionen geschieht ist, dass während des Bootens die Datei /etc/HOSTNAME ausgelesen und hostname mit ihrem Inhalt als Parameter aufgerufen wird (z.B. in /etc/rc.d/rc.sysinit). Welche Datei nun genau verantwortlich ist, hängt von der jeweiligen Installation ab. Wie auch immer, nun sollte es kein Problem mehr darstellen, dies herauszufinden, da man ja nun weiss, dass man ein grep nach hostname machen kann.
Beispiel für das Setzen des Rechnernamens:

hostname obelix.mynet

TCP Wrapper

Die Datei /etc/hosts.allow dient der Konfiguration eines Sicherheitsmechanismusses, genannt TCP Wrapper. Alles, was man über diese Datei wissen muss ist, dass alle IP Adressen der eigenen Rechner, mit Ausnahme des jeweiligen Computers, dessen Datei man gerade bearbeitet, hinter dem Schlüsselwort ALL: eingetragen sein sollten.
Beispiel: obelix hat 2 Netzwerkschnittstellen, die mit anderen Rechnern im lokalen Netz verbunden sind. Die Schnittstelle mit der Adresse 192.168.0.2 ist mit asterix verbunden und das Interface mit der IP 192.168.0.3 mit idefix. In diesem Fall sieht die Datei so aus:

# hosts.allow 
# See tcpd(8) and hosts_access(5) for a description
ALL: 192.168.0.2   192.168.0.3
Läuft auf obelix ein NFS Server, muss man noch folgende Zeilen hinzufügen:
portmap: 192.168.0.2   192.168.0.3
Network File System (NFS) ermöglicht es Rechnern in einem Netzwerk, auf Dateien auf anderen Rechner zuzugreifen, als ob sie sich auf der eigenen Festplatte befinden würden.

/etc/hosts.deny wird ebenfalls für den Einsatz von TCP Wrappern verwendet. Diese Datei sollte nie geändert werden und wiefolgt aussehen:

portmap: ALL
ALL: ALL

/etc/hosts.equiv

/etc/hosts.equiv ermöglicht es jedem Benutzer auf einem Rechner, sich auf anderen Rechner einzuloggen (z.B. mit rsh), ohne ein Passwort angeben zu müssen. Es bleibt jedem selbst überlassen, ob dies wünschenswert ist. Die Syntax lautet: Ein kompletter Rechnername (wie in /etc/hosts) eines vertrauenswürdigen Hosts pro Zeile, also zum Beispiel:

asterix.mynet
idefix.mynet

/etc/hosts.lpd

Die Datei /etc/hosts.lpd spielt eine große Rolle, will man das Drucken über das Netzwerk einrichten. Wie dies bewerkstelligt wird ist, ist eine andere Geschichte, hier nur soviel: diese Datei muss auf dem Rechner, auf dem der lp-Daemon läuft, existieren und alle Rechner, denen das Drucken erlaubt werden soll, beinhalten. Die Syntax ist dieselbe wie bei hosts.equiv. Die Konfiguration des Druckdienstes über das Netzwerk sollte am besten mit den Konfigurationsprogrammen der jeweiligen Distribution (z.B. yast bei SuSE und printtool bei RedHat) durchgeführt werden. Die Printing-HOWTO des Linux Documentation Projects hilft einem weiter, falls man diese Programme nicht verwenden will.

Sendmail

Die Datei /etc/service.switch wird von Sendmail verwendet. Auf den Rechnern im eigenen Netz, die keine direkt Verbindung nach aussen (zum Internet) haben, sollte in der Datei folgendes stehen:

hosts   files
aliases files
Dann wird Sendmail auf diesen Rechnern so konfiguriert, dass jede Mail an die Maschine weitergereicht wird (forwarding), die mit dem Modem nach draussen geht, dieser Rechner wird als Mailhost betrieben.

Senmail liest beim Hochfahren die Datei /etc/sendmail.cf aus. Diese Datei zu verstehen ist recht schwierig. Sendmail verwendet eine Makrosprache namens m4, mit welcher die Datei sendmail.cf aus einer Makrodatei erzeugt wird. Hierfür wird der m4 Makroprozessor benötigt (welcher eventuell schon auf dem System installiert ist) und ein Teil der Sendmailquellen ist. RedHat Linux installiert die Quellen unter /usr/lib/sendmail-cf, andere Distributionen bieten dies nicht unbedingt an, jedoch kann man immer auf die Sendmailquellen zurückgreifen. Unter www.sendmail.org findet man Dokumentation zum Thema Konfiguration von Sendmail.

Ein zentraler Mailrechner wird auch als Mail Hub bezeichnet. Die Idee ist, all die verschiedenen Rechner im Netzwerk einfach alle Mails an diesen Hub weiterleiten zu lassen, welcher dann die Mails speichert. Auf diese wird dann mittels NFS oder pop bzw. imap zugegriffen. Eine m4 Datei, die genau dies ermöglicht, sie ungefährt so aus:

#divert(-1)
include(`../m4/cf.m4')
VERSIONID(`mc file for asterix, A HOST INSIDE THE PRIVATE NETWORK')
undefine(`UUCP_RELAY')
undefine(`BITNET_RELAY')
OSTYPE(`linux')
# put here your outside mail domain. E.g if your user id is
# joe and your mail address joe@linuxnet.somewhere.org then you write:
MASQUERADE_AS(linuxnet.somewhere.org)
# Do not show these internal hostnames to the outside world:
MASQUERADE_DOMAIN(asterix.mynet)
MASQUERADE_DOMAIN(asterix)
MASQUERADE_DOMAIN(localdomain)
MASQUERADE_DOMAIN(localhost)
FEATURE(masquerade_envelope)
#the /etc/passwd entry: mail:*:8:12:mail:/var/spool/mail:
define(`confDEF_USER_ID',``8:12'')
# the centail mail hub is obelix, Note dot at the end
define(`MAIL_HUB', `obelix.mynet.')dnl
define(`confHOSTS_FILE',/etc/hosts)dnl
MAILER(smtp)dnl
MAILER(local)dnl
Soll aus obiger Datei sendmail.mc die Datei sendmail.cf erzeugt werden, wechselt man in das Verzeichnis cf der Quellen (RedHat: /usr/liv/sendmail-cf/cf) und speicher dort sendmail.mc ab. Danach fürt man m4 sendmail.mc > /etc/sendmail.cf aus.

Man beachte, dass man für den Betrieb eines einfachen Netzwerkes Sendmail gar nicht braucht und man alle Mails mittels zum Beispiel Netscape senden und empfangen kann, ohne sich mit Sendmail herumschlagen zu müssen. Sendmail mag eher was für die fortgeschrittenen Linuxer sein.

Die Konfiguration des Mailhostes is ein wenig schwieriger. Er muss die lokale Mail zustellen und Mails nach draussen weiterleiten. Letzteres kann zum Beispiel über SMTP (Simple Mail Transfer Protocol) geschehen. In diesem Fall sollte man die Sendmail Dokumentation (www.sendmail.org) betreffs "define(`SMART_HOST', smtp:provider.mail.host)dnl" studieren. Desweiteren muss auf dem Mailhost die Datei /etc/service.switch DNS Lookup ermöglichen:

hosts   files dns
aliases files 
Man kann stattdessen UUCP oder andere Methoden benutzen. Die Wahl hängt letztlich davon ab, welche Dienste der Internetprovider anbietet
UUCP steht für Unix to Unix Copy und ist ein altes System zur Übertragung von Nachrichten. Es kann aber auch gut für den Empfang von Mails vom Provider dienen. Auch dieser Service muss natürlich von diesem angeboten werden. Firmen, die mehr Windows orientiert sind, werden UUCP eventuell nicht einmal kennen. Wie kann man UUCP nun nutzen? Beispiel: Angenommen, die Domain des Providers ist somewhere.org und der eigene Rechner wird von aussen als linuxnet angesprochen (von aussen heisst hier über die PPP Schnittstelle, im eigenen Netz hieß er bisher ja obelix). Alle Mails werden vom Provider mittels UUCP an <sombody>@linuxnet.somewhere.org gesendet. Danach wird sendmail für die Verteilung verwendet. Jeder lokale Benutzer besitzt einen eigenen Mailaccount, eingerichtet wird er, indem einfach ein weiterer Account eines Unixbenutzers erstellt wird. Unglücklicherweise stellen die meisten Internetprovider heutzutage nur eine einzige Mailadresse zur Verfügung. Sollte dies zutreffen kann man obiges Verfahren nicht verwenden, in diesem Falle sollte man Netscape oder fetchmail benutzen.

IP-Masquerading (NAT)

IP-Masquerading ist der linuxspezifische Ausdruck, meistens wird dieses Verfahren Network Address Translation genannt. Es ist eine wertvolle Hilfe für die Erichtung eines kleinen Netzwerkes zu Hause. Mittels diesem wird es von jedem lokalen Rechner möglich, ins Internet zu gehen, obwohl nur ein Computer ausserhalb des Netzes bekannt ist. Dieser Rechner mag etwa eine Modem/PPP Verbindung besitzen und dadurch auch eine weltweit geroutete gültige IP Adresse, welche statisch oder dynamisch dem Interface ppp0 zugewiesen worden ist. Durch IP-Masquerading können mehrere Personen von verschiedenen Rechnern aus innerhalb des eigenen Netzwerkes gleichzeitig Zugang zum Internet erhalten. Im _LF_ wird zum Thema IP-Masquerading ein eigener Artikel erscheinen. Desweiteren wird empfohlen, die entsprechende HOWTO zu lesen. Im folgenden wird nur der prinzipielle Mechanismus erläutert.

Um die Funktionsweise des IP-Masqueradings zu verstehen, muss man wissen, wie eine TCP Verbindung aufgebaut wird. Besucht man zum Beispiel einen WWW Server im Internet mit seinem Browser, so wird eine Verbindung zu dessen IP Adresse und dem WWW Serverprogramm aufgebaut. Das Programm (also der WWW Server) wird über eine sogenannte Portadresse angesprochen. Diese Portadressen sind vordefiniert, Port 80 ist für den WWW Server reserviert. Gibt man also www.linuxfocus.org bei Netscape ein, so weiss das Programm, dass es eine Verbindung zum Port 80 auf dem Rechner mit der IP Adresse 213.239.9.21 (= www.linuxfocus.org) aufbauen muss.
Für eine vollständige TCP Verbindung, über die Daten gesendet und empfangen werden sollen, werden jeweils Paare von IP Adressen und Portnummern benötigt. In obigem Beispiel also 213.239.9.21 und 80, sowie die eigene IP Adresse und eine lokale Portadresse, an welche der WWW Server die Anfragen beantworten kann. Die lokale Portadresse wird normalerweise zufällig gewählt, z.B.:

www at www.linuxfocus.org:    your.machine.at.your.isp:
IP=213.239.9.21 Port=80 ----- IP=123.123.456.1 Port=4123
Wird ein weiteres Netscapefenster geöffnet und eine andere Verbindung zu www.linuxfocus.org aufgebaut, wird auch eine neue Portadresse gewählt:
www at www.linuxfocus.org:    your.machine.at.your.isp:
IP=213.239.9.21 Port=80 ----- IP=123.123.456.1 Port=4123
IP=213.239.9.21 Port=80 ----- IP=123.123.456.1 Port=4541

Beachte: beide Male Port 80 ist eigentlich nicht korrekt,
um das Beispiel einfach zu halten wird dies einfach mal angenommen.
Wird ein TCP Paket vom WWW Server zurückgeschickt, weiss dieser, an welches Fenster von Netscape es zu schicken ist, da die Portadressen auf dem lokalen Rechner verschieden sind. Befindet sich hinter your.machine.at.your.isp ein lokales Netzwerk, sieht die Situation so aus:
www at www.linuxfocus.org --- your.machine.at.your.isp --- privatehost1.mynet
                                                        |
                                                        +- privatehost2.mynet 
Keine der IP Adressen, die den Netzwerkschnittstellen von privatehost1.mynet zugeordnet worden sind, ist im Internet bekannt. Deswegen kann kein IP Paket von ausserhalb an diesen Rechner geschickt werden. Kein Router im Internet wüsste, wo solch ein Paket hinzuschicken wäre. Allerdings: your.machine.at.your.isp besitzt eine IP Adresse, die im Internet bekannt ist und wie oben bereits erklärt wurde, kann man verschiedene Verbindungen anhand ihrer Portadressen identifizieren.
privatehost1.mynet möchte eine Verbindung mit www.linuxfocus.org auf Port 80 aufbauen. Eine lokale Portadresse, z.b. 3211, wird gewählt und ein TCP Paket wird an your.machine.at.your.ip gesendet. Dieser würde, ohne Masquerading, das Paket nach aussen routen, wo es verloren geht (bzw. eine Antwort von www.linuxfocus.org würde verloren gehen). Unter Verwendung von IP-Masquerading fängt nun your.machine.at.your.isp das Paket ab und baut eine neue Verbindung mit eigener lokalen Portadresse mit dem Ziel auf. Bei jedem von aussen ankommenden Paket auf diesem Port weiss der Rechner nun, dass dieses weiter an privatehost1.mynet gesendet werden muss, auf Portadresse 3211.
IP-Masquerading baut also neue Verbindungen auf und verwaltet eine Tabelle, in welcher die korrespondierenden IP und Portadressen der Rechner im eigenen Netz stehen. Trifft von aussen ein Paket über eine dieser Verbindungen bei dem Rechner ein, auf dem das IP-Masqurading läuft, so schaut dieser nach an welche IP Adresse im privaten Netz und welchen Port er das Paket weiterleiten soll.

IRQ

Probleme mit Interrupts sind nicht netzwerkspezifisches. Sie können immer dann auftauchen, wenn neue Hardwarekomponenten zum System hinzugefügt werden. Unglücklicherweise stehen beim PC der Hardware nur 16 Interrupts zur Verfügung, von denen die meisten schon vergeben sind. Es ist möglich, dass ein Interrupt sich von zwei PCI Karten geteilt wird, dadurch geht aber ein wenig CPU Leistung verloren. Zwei ISA Karten können sich keinen Interrupt teilen. Wer ein PNP Bios hat und eine ISA Karte mit fest eingestelltem Interrupt einbaut, muss diesen Interrupt im BIOS Setup von der PNP Zuteilung ausnehmen. Ansonsten wird eventuell versucht, diesen IRQ einer anderen Hardwarekomponenten zuzuordnen, ein Konflikt wäre die Folge.

Unter Linux kann verfolgt werden, wie oft eine bestimmte Hardwarekomponente einen Interrupt generiert hat, und zwar mittels: cat /proc/interrupts. Komponenten, die nicht verwendet werden, erzeugen keine Interrupts.

Es folgt eine Übersicht vorbelegter Interrupts. Diese können nur dann für andere Zwecke verwendet werden, wenn die Komponenten, denen sie zugordnet worden sind, nicht benutzt werden. Zum Beispiel können die Interrupts 14/15 für andere Dinge verwendet werden, wenn man statt IDE Laufwerke nur SCSI Geräte einsetzt.
IRQ reserviert für
0 Timer
1 Tastatur
2 Cascade (Programmierbarer IRQ Controller)
3 Serielle Schnittstelle 2
4 Serielle Schnittstelle 1
5 frei, meist Soundkarte
6 Diskettenlaufwerk
7 Parallele Schnittstelle, allerdings erzeugen unter Linux Drucker keinen Interrupt
8 Echtzeituhr
9 frei
10 frei
11 frei
12 PS/2 Maus (/dev/psaux)
13 Mathematischer Co-Prozessor
14 IDE 1
15 IDE 2

Ein Netzwerkbeispiel

Nach so viel Theorie soll nun ein kleines Netzwerk als Beispiel betrachtet werden. Warum sollte man daheim ein eigenes Netzwerk einrichten? Hier ein paar Vorschläge:

  1. Über ein Netzwerk können Resourcen geteilt werden. Ein Rechner kann zum Beispiel ein Modem und eine Verbindung mit dem Internet haben, alle anderen teilen sich diese. Ein anderer Rechner mag einen Drucker haben, den alle anderen nutzen können. Ein weiterer Computer wiederum hat vielleicht ein spezielles Gerät (Zip, CD Rom, DVD,...), alle anderen Rechner können diese verwenden und via NFS mounten. Ein Rechner hat eventuell ein recht große Festplatte, auf der eine Menge Images und Musikdateien liegen, auf die alle Rechner zugreifen können.
  2. Es ist technisch gesehen recht interessant
Nun zu dem Beispielnetz. Ein Rechner hat ein Modem, ein weiterer Computer einen Drucker. Beide sind über Ethernet miteinander verbunden. Beide haben ein CD-Rom und ein Diskettenlaufwerk. Ausserdem gibt es noch ein Laptop, welches weder Modem, noch CD-Rom oder einen Drucker hat. Dieses wird an die freie parallele Schnittstelle des ersten Rechners angebunden und erhält somit Zugriff auf den Drucker, das CD-Rom und das Modem/Internet.
Beispielnetzwerk Wie wird solch ein Netzwerk aufgebaut? Zuerst wird die Hardware gekauft. Neben den Computern, dem Modem und dem Drucker braucht man zwei Netzkarten, ein gekreuztes Twisted-Pair und ein Laplink Kabel. Ein Hub wird nicht gebraucht. Die Karten werden eingebaut und die Kabel angeschlossen. Man achte darauf, dass es zu keinen Konflikten auf Interruptbasis kommt. Nun muss entweder der Kernel neu konfiguriert werden, oder es werden einfach die notwendigen Module geladen, falls sie schon existieren. Bei den meisten vorkonfigurierten Kerneln der großen Distributionen dürfte die Kernelunterstützung schon existieren. Nun wird mit dem Befehl ifconfig den neuen Netzwerkschnittstellen jeweils eine IP Adresse zugewiesen. Mittels route wird festgelegt, welche IP Pakete wohin müssen. Danach sollte das Netzwerk bereits funktionsfähig sein. Zwar können zwar noch keine Domainnamen und kein IP Masquerading verwendet werden, ein ping kann aber herumgeschickt werden und man kann sich ansehen, wie die LEDs der Netzkarten aufleuchten.
Werden die folgenden IP Adressen verwendet:
IP 
192.168.0.1 eth0 auf Workstation 1
192.168.0.2 eth0 auf Workstation 2
Dann kann man auf Workstation 1 ein ping 192.168.0.2 starten:
>ping 192.168.0.2
PING 192.168.0.2 (192.168.0.2): 56 data bytes
64 bytes from 192.168.0.2: icmp_seq=0 ttl=64 time=0.9 ms
64 bytes from 192.168.0.2: icmp_seq=1 ttl=64 time=0.8 ms
64 bytes from 192.168.0.2: icmp_seq=2 ttl=64 time=0.9 ms

--- ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.8/0.8/0.9 ms
Mit CTRL-C kann dies abgebrochen werden. Man sollte sich auch mal die Ausgabe von cat /proc/interrupts anschauen. Die Netzkarten, bzw. PLIP bei der Laptopverbindung sollten dort zu sehen sein. Ein cat /proc/ioports sollte die neue Hardware darstellen und der Befehl netstat -i listet auf, wieviele IP Pakete an welches Interface geschickt wurden.
Zu diesem Zeitpunkt kann man bereits mittels ftp Dateien zwischen den Rechnern austauschen.

Zwar hat man nun im Prinzip sein Netzwerk, richtig viel Sinnvolles kann man damit nicht machen. Nun müssen die jeweiligen Konfigurationsdateien noch modifiziert werden (dazu kann man bei vielen Distributionen schöne grafisch orientierte Werkzeuge verwenden). Zum Schluss sollten IP-Masquerading und NFS aufgesetzt werden. Danach ist das Netzwerk voll einsatzfähig.

Ich hoffe, dieser Artikel konnte einen brauchbaren Überblick vermitteln. Jedem, der ein wenig enttäuscht ist, dass die Konfiguration der Softwareseite zu kurz kam, sei gesagt, dass es zu den verschiedenen Programmen und Systemen eigene Artikel geben wird, etwa zu ifconfig/route/netstat, IP-Masquerading, PPP Setup, Drucken im Netz mit lpd und NFS. Dieser Artikel sollte dem Leser einen gewissen Überblick geben, sodass er besser mit den anderen Artikeln zum Thema Netzwerk zurecht kommen möge.


Frohes Netzwerken !

PS: Der _LF_ freut sich über alle Artikel rund um das Thema Netzwerke. Nicht alle Artikel dazu sind bereits geschrieben und dieser hier stellt nur den Start einer ganzen Serie dar. Wer schon Erfahrungen gesammelt hat und ein Artikel darüber schreiben möchte, kann sich gerne melden.

Literaturverweise