| |||||||||||||||||||
| |||||||||||||||||||
|
von Klaus Weidner
Sobald man zwei Rechner nebeneinander stehen hat, verflucht man schnell den mühsamen Datentransport per Diskette. Mit einem einfachen Netzwerk kann man bequem die wichtigsten Dienste nutzen - Dateitransport, interaktives Arbeiten und Drucken übers Netz. (Und man kann diverse Spiele übers Netz spielen und mit der Plasmakanone auf Freunde und Arbeitskollegen losgehen, aber das ist ein anderes Kapitel...)
Es gibt viele Möglichkeiten, ein Rechnernetz aufzubauen. Bei jeder Entscheidung gibt es Dutzende von Alternativen, was man an dieser Stelle auch anders machen könnte. Ich versuche in diesem Artikel gar nicht erst, eine erschöpfende Auflistung aller Möglichkeiten zu geben, stattdessen beschreibe ich ein konkretes Beispiel, das möglichst preisgünstig und einfach sein soll. (Wer Twisted Pair-Hubs oder FDDI will, sollte sich direkt an die entsprechende Literatur wenden.)
Es gibt drei Arten von Ausgängen bei Ethernetkarten - BNC (auch Koax, Thinnet, RG-58 oder 10Base-2 genannt), Twisted Pair (10Base-T mit RJ-45-Stecker) oder AUI-Anschlüsse für externe Transceiver. Für kleine Netze ist Koax am einfachsten und billigsten. Mit einer Kombi-Karte sind Sie auf alle Fälle vorbereitet, und diese Karten sind nicht viel teurer als solche mit nur einem Ausgang.
Für jeden Rechner, der ans Netz soll, brauchen Sie neben der Netzwerkkarte für jeden Rechner ein T-Stück, außerdem Koaxkabel mit BNC-Steckern und zwei Ethernet-Terminatoren (Abschlußwiderstände mit 50 Ohm). Achten Sie bei der Verdrahtung darauf, daß der Ethernet-Strang richtig verlegt wird (s. Abbildung), also ein Terminator an jedem Ende (keine Ringe bauen...) und T-Stücke für den direkten Anschluß der Rechner. Bauen Sie auf keinen Fall mit Koax-Ethernet Y-förmige Kabelverzweigungen oder andere experimentelle Konfigurationen - für eine optimale Datenübertragung sollte der Kabelstrang wie ein unendlich langes unverzweigtes Kabel erscheinen, die Terminatoren sorgen an den beiden Enden für den passenden Wellenwiderstand, um Signalreflektionen zu vermeiden. Mit den T-Stücken wird die Signalleitung "angezapft", ohne die durchlaufenden Signale zu stören.
Bevor Sie die Netzwerkkarte einbauen, sollten Sie schon wissen, was für ein
Interrupt und welche IO-Adresse für die Karte verwendet werden soll. Üblich sind
0x300 oder 0x280 für die IO-Adressen und IRQ 10, 11 oder 15. Vorsicht bei
Plug+Play-Boards, dort ist es nicht immer ganz einfach festzustellen, welche
Karte sich welchen Bereich geschnappt hat. Unter Linux können die momentan
belegten Bereiche mit cat /proc/interrupts
und cat
/proc/ioports
angezeigt werden, diese Liste ist leider nicht immer ganz
vollständig. Unter DOS helfen msd
und ähnliche Werkzeuge.
Wenn Sie einen freien Bereich für die Karte gefunden haben, können Sie die Jumper entsprechend setzen oder (unter DOS) mit dem mitgelieferten Programm die Karte einstellen. Dies ist nur einmal nötig, die Karte merkt sich auch nach einem Kaltstart die Konfiguration. Bei dieser Gelegenheit ist es auch sinnvoll, die mitgelieferte Hardwarediagnose laufen zu lassen, um vor Konflikten sicher zu sein.
/usr/src/linux/README
beschrieben
ist. Beachten Sie dabei, daß folgende Features eingeschaltet sind: Networking support (CONFIG_NET) [y] TCP/IP networking (CONFIG_INET) [y] Network device support? (CONFIG_NETDEVICES) [y] NE2000/NE1000 support (CONFIG_NE2000) [y] (bzw. der Treiber für ihre Ethernetkarte) NFS filesystem support (CONFIG_NFS_FS) [y]Wenn Sie dann mit dem passenden Kernel das System neu starten, sollte der Netzwerktreiber die gefundene Karte melden, z.B.:
IP Protocols: ICMP, UDP, TCP NE*000 ethercard probe at 0x300: 00 40 ac ef 01 78 eth0: NE2000 found at 0x300, using IRQ 11. ne.c:v1.10 9/23/94 Donald Becker (becker@cesdis.gsfc.nasa.gov) Checking 386/387 coupling... OkWenn die Karte nicht gefunden wird, überprüfen Sie folgendes:
lilo: linux
ether=11,0x300,eth0
An dieser Stelle gibt es ein weitverbreitetes Mißverständnis - eine IP-Adresse kennzeichnet nicht einen Rechner, sondern ein Interface, also eine Netzschnittstelle. Ein Rechner kann also durchaus mehrere IP-Adressen gleichzeitig haben. Versuchen Sie also z.B. nicht, die IP-Adresse ihrer Internet-PPP-Anbindung für das Ethernet zu verwenden, das gibt nur Chaos.
Sie brauchen für ihre Rechner ein IP-Netz (also einen Nummernbereich). Wenn Sie nicht am Internet angeschlossen sind, brauchen Sie keine offiziellen Adressen, sondern sie können prinzipiell irgendwelche verwenden. Um Kollisionen zu vermeiden, wenn Sie sich später doch ans Internet anschließen sollten, verwenden Sie bitte Adressen aus den für private Netze reservierten Bereichen:
10. 0.0.0 - 10.255.255.255 (ein Class-A-Netz) 172. 16.0.0 - 172. 31.255.255 (16 Class-B-Netze) 192.168.0.0 - 192.168.255.255 (256 Class-C-Netze)(In den Beispielen verwende ich das 10.*-Netz.)
Teilen Sie jedem ihrer Rechner eine IP-Adresse aus diesem Bereich zu. Später
können Sie den Rechnern auch Namen geben, um Tipparbeit zu sparen. In diesem
Beispiel werden zwei Rechner verbunden, der Rechner opal
soll
seinen Drucker und Festplatte für den Rechner saphir
verfügbar
machen. opal
bekommt die IP-Adresse 10.1.1.1, saphir
bekommt 10.1.1.2.
Bei jedem dieser Rechner müssen Sie jetzt dem Betriebssystem die verwendete Adresse mitteilen. Bei vielen Distributionen (z.B. Caldera) gibt es dafür Netzwerksetup-Programme, bei älteren Systemen geht das noch von Hand:
opal:/# ifconfig eth0 10.1.1.1 opal:/# route add 10.0.0.0 saphir:/# ifconfig eth0 10.1.1.2 saphir:/# route add 10.0.0.0(Hier werden mit Absicht noch keine Rechnernamen in den Befehlen verwendet. Machen Sie alle Tests erstmal mit den numerischen Adressen, erst wenn das alles geht, sollte man die Namen konfigurieren.)
Damit die Einstellungen nicht jedesmal neu gemacht werden müssen, tragen Sie
die Befehle in eine der System-Startdateien (i.d.R
/etc/rc.d/rc.inet1
) ein.
Jetzt sollte schon ein "ping" auf die eigene Adresse funktionieren:
opal:/# ping 10.1.1.1 PING 10.1.1.1 (10.1.1.1): 56 data bytes 64 bytes from 10.1.1.1: icmp_seq=0 ttl=255 time=1 ms 64 bytes from 10.1.1.1: icmp_seq=1 ttl=255 time=1 ms --- 10.1.1.1 ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 1/1/1 msSobald Sie zwei Rechner eingerichtet haben, kommt der spannende Moment, bei dem die erste Kommunikation übers Netz getestet wird:
opal:/# ping 10.1.1.2 PING 10.1.1.2 (10.1.1.2): 56 data bytes 64 bytes from 10.1.1.2: icmp_seq=0 ttl=255 time=1 ms 64 bytes from 10.1.1.2: icmp_seq=1 ttl=255 time=1 ms --- 10.1.1.2 ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 1/1/1 msWenn das klappt, ist die zweite Hürde geschafft - hier wäre lautes Jubilieren oder eine Runde Drinks angebracht. Wenn's nicht geht, ist das Problem meistens bei den Kabeln (prüfen Sie nochmal den festen Sitz aller Stecker und Terminatoren) oder ein Hardwarekonflikt der Karten (probieren Sie andere Interrupts oder IO-Adressen).
Als erstes können Sie sich das lästige Eintippen der IP-Nummern sparen, indem
Sie die Hostnamen eintragen. Das geht am einfachsten in der
/etc/hosts
-Datei:
### /etc/hosts # Rechner im lokalen Netz 127.0.0.1 localhost 10.1.1.1 opal 10.1.1.2 saphir ### ENDEDiese Datei können Sie sowohl auf
opal
als auch auf
saphir
einrichten. Die Reihenfolge der Einträge ist egal, die Datei
kann also auf beiden Rechnern identisch sein. (Im Gegensatz zu anderen Systemen
wie z.B. Solaris werden die Informationen in /etc/hosts
normalerweise nicht zum Konfigurieren genutzt.) Damit sollte ein ping
saphir
genauso wie ping 10.1.1.2
funktionieren. (Bei großen
Netzen ist es sinnvoll, einen zentralen Nameserver (named
)
einzurichten, statt die Hosttabellen auf Hunderten von Rechnern einzeln zu
pflegen.) Falls es bei jeder Namensanfrage erstmal eine längere Pause (ca. 40-90
Sekunden) gibt, versucht der Rechner vermutlich, eine DNS-Nameserveranfrage zu
machen. Wenn Sie keinen Nameserver haben, achten Sie darauf, daß in
/etc/named.boot
der Eintrag order hosts bind
steht,
damit immer zuerst in der /etc/hosts
-Datei nach den Namen gesucht
wird. Nur wenn dort kein Eintrag gefunden wird (z.B. für Internet-Rechner) wird
der in /etc/resolv.conf
konfigurierte Nameserver gefragt.
Je nachdem, wie ihre Linux-Distribution eingerichtet wurde, können Sie an dieser Stelle viele Dienste wahrscheinlich schon direkt verwenden, probieren Sie sie einfach aus:
opal:/# telnet saphir Trying 10.1.1.2... Connected to saphir. Escape character is '^]'. Linux (saphir) saphir login:Wenn das nicht klappt, prüfen Sie, ob auf "saphir" in
/etc/inetd.conf
ein Eintrag für den Telnet-Daemon existiert: ### /etc/inetd.conf telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd(Die genauen Pfadnamen sind von der verwendeten Distribution abhängig.) Suchen Sie mit
ps -ax
die Prozeß-ID (PID) des
inetd
-Prozesses heraus und schicken Sie ihm ein HUP-Signal (z.B.
kill -HUP 9872
), damit die Konfiguration neu gelesen wird.
FTP zum Dateitransport geht meistens auch schon ohne weitere Konfigurationsarbeit. Wenn es nicht gehen sollte, wird's kompliziert, da die Konfiguration stark vom verwendeten FTP-Server abhängig ist - die Details sprengen leider den Rahmen dieses Artikels.
Drucken über Netz ist - wenn alles klappt - ganz einfach. Wenn ein Drucker an
opal
angeschlossen ist (und lokales Drucken dort funktioniert...),
kann dieser von saphir
aus mitgenutzt werden, indem folgender
Eintrag in der /etc/printcap
von saphir
vorgenommen
wird:
### /etc/printcap lp|Remote Printer:\ :lp=:\ :rm=opal:\ :rp=lp:\ :sh:mx#0:pl#66:pw#80:Schreiben Sie in die
rm
-Zeile den Namen des Zielrechners
(hier opal
) und in die rp
-Zeile den Namen des dortigen
Druckers (normalerweise lp
). Auf opal
muß
normalerweise nichts umkonfiguriert werden, sofern der lpd
-Daemon
dort wie üblich eingerichtet ist.
Auf dem Server ist die meiste Arbeit nötig. Zuerst einmal müssen die
Daemon-Prozesse aktiv sein, die für andere Systeme die Anfragen bearbeiten. Dazu
sind drei Programme nötig, rpc.portmap, rpc.mountd
und
rpc.nfsd
. Machen Sie ein ps -ax | grep rpc
, dann
sollten diese Programmnamen erscheinen. (Wenn nicht, ist NFS bei ihrer
Distribution nicht aktiv - schauen Sie in der mitgelieferten Dokumentation nach,
wie es sich aktivieren läßt.) Wenn die Daemonen aktiv sind, kann über die Datei
/etc/exports
konfiguriert werden, welche Verzeichnisse für andere
Benutzer verfügbar gemacht werden sollen.
In der einfachsten Version kann diese Datei so aussehen - hier wird das
Verzeichnis /share
des Rechners opal
schreib- und
lesbar an den Rechner saphir
exportiert. Dazu wird auf
opal
folgender Eintrag gemacht:
### /etc/exports /share saphir(rw)Danach muß
rpc.mountd
neu gestartet werden. Sie können das
von Hand machen (killall rpc.mountd; rpc.mountd
) oder das System
einfach neu starten.
Um das ganze zu testen, können Sie probieren, ob Sie das Verzeichnis auf den Server selber einbinden können:
opal:/# mkdir /tmp/test opal:/# mount opal:/share /tmp/test -t nfs opal:/# ls /tmp/test Verzeichnis1 Verzeichnis2 opal:/# umount /tmp/test opal:/# rmdir /tmp/testBeim Client (in diesem Beispiel
saphir
) muß man darauf
achten, daß das NFS-Dateisystem im Kernel verfügbar ist - falls nicht, muß ein
neuer Kernel gebaut werden. Ein testweises Verbinden des Dateisystems geht
genauso wie in dem Beispiel oben; wenn bei jedem Systemstart das Dateisystem
automatisch eingebunden werden soll, kann man es in die /etc/fstab
eintragen: ### /etc/fstab opal:/share /share nfs defaults 0 0(Das Zielverzeichnis
/share
muß dazu existieren, also mit
mkdir /share
angelegt werden.)
Zum Abschluß noch eine Warnung - NFS (und einige der anderen hier genannten
Server) können zu erheblichen Sicherheitsrisiken führen, wenn der Rechner aus
dem Internet erreichbar ist. Exportieren Sie auf keinen Fall ihren ganzen
Dateibaum an die ganze Welt, und behalten Sie im Hinterkopf, daß die
Sicherheitsprüfungen der exports
-Datei sich mit recht geringen
Aufwand umgehen lassen. Wenn Sie einen Internetanschluß planen und sensitive
Daten auf den Rechnern im Netz vorliegen, sollten Sie sich auf jedem Fall
gründlich über die Risiken informieren.
Leider ist es schwer, allgemeingültige Aussagen zu machen, welche Konfigurationsdatei bei welcher Distribution wo zu finden ist. Doch die hier angegebenen Pfade sind recht verbreitet.
Netzwerkkonfiguration (BSD Init)
/etc/rc.d/rc.inet1 Adressen und Routen konfigurieren /etc/rc.d/rc.inet2 Ständig aktive ServerNetzwerkkonfiguration (SYSV Init)
/etc/rc.d/rc3.d/ Verzeichnis mit Startdateien (S*) für alle NetzwerkdiensteAngebotene Dienste
/etc/inetd.conf Bei Bedarf gestartete ServerNamen in Adressen übersetzen
/etc/host.conf Reihenfolge der Auflösung (order hosts bind) /etc/hosts Hostnamen (ADRESSE NAME ALIAS ...) /etc/resolv.conf DNS-Konfiguration (Anfragen) /etc/named.boot DNS-Konfiguration (Server)NFS-Dateisysteme
/etc/exports exportierte Dateisysteme /etc/fstab verbundene (mounted) DateisystemeDruckersystem
/etc/printcap Verfügbare Drucker
rlogin, rcp
), Internetanbindung und andere
Themen werden im Linux-Magazin noch genauer behandelt werden.
Literatur |
Zu den meisten hier angesprochenen Programmen und Konfigurationsdateien sollten Manpages vorhanden sein, z.B man
exports, man nfs, man printcap, man named u.s.w.
1) Olaf Kirch, "Network Administrator's Guide", O'Reilly |
Der Autor |
Klaus Weidner ist ein alter Bekannter im Linux Magzin und hat schon sehr viele Artikel beigesteuert. Er arbeitet für Articon und ist dort unter anderem für die Netzwerkverwaltung, Firewalls und Internetkurse zuständig. Über mangelnde Arbeit kann er sich sicher nicht beklagen. Zu erreichen ist er unter mailto:kweidner@artinet.de |
Copyright © 1996 Linux-Magazin Verlag
Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.
Partner-Sites: [LinuxUser] [EasyLinux] [Linux-Community] [Linux Events] [OpenBytes] [Linux Magazine] [Linux Magazin Romania] [Linux Magazine Poland]
[Linux Magazine
Brasil] [Linux
Magazine Spain]