mars-nwe/doc/HOWTO.ger

416 lines
20 KiB
Plaintext

Dieses HowTo ist noch unfertig.
Aktuelle Version erhaeltlich bei:
Hardy Buchholz <hardy@kool.f.eunet.de>
ALLGEMEINES
^^^^^^^^^^^
MARS_NWE (Martin Stovers Netware-Emulator) ist ein Netware-Emulator
fuer Linux (und auch fuer Unixware). Entstanden ist der MARS_NWE
zuerst 1993 auf einer USL1.1 und wurde spaeter (1994) nach Linux
portiert. Die Anregung MARS_NWE allgemein zugaenglich zu machen, kam
durch LINWARE (von A.Dryak). Problematisch bei der Entwicklung vom
MARS_NWE ist der Umstand, dass das NCP (Netware-Core-Protokoll) keine
oeffentliche Spezifikation hat, sondern zu den Novell-Interna gehoert.
Daher sind viele Funktionen eines "echten" Netware-Servers nur schwer
realisierbar, und vieles beruht auf Vermutungen und ausprobieren.
Was kann MARS_NWE?
Inzwischen realisiert der MARS_NWE die wichtigsten Services eines
echten Netware-Servers. Im Einzelnen heisst dies:
File-Services:
Natuerlich steht an erster Stelle das zur Verfuegung stellen von
Massenspeicher und Dateien fuer verschiedene Clients. Hier hat der
MARS_NWE gerade im heterogenen Netzwerk einiges zu bieten. Als Volumes
koennen saemtliche unter Linux mountbare Filesysteme freigegeben
werden. Interessant sind dabei natuerlich vor allem auch NFS-mounted
directorys, CDROMS, selbst mit Volker Lendeckes NCPFS gemountete
Netware-Volumes eines anderen Servers koennen wieder exportiert
werden, sowie selbverstaendlich alle auf dem Host lokal vorhandenen
File-system-varianten.
Print-Services:
sind im MARS_NWE ebenfalls realisiert, allerdings in anderer Form, als
bei Netware, d.h. es existieren keine Printqueues, die mit den
Netware-Tools verwaltet werden koennen, sondern der Druckauftrag wird
mittels Uebergabe-Vezeichnissen an den Linux-Spooler weitergereicht.
Routing:
Als Router ist der MARS_NWE besonders geeignet, da er weitesgehend
automatisch zwischen den verschiedensten Welten als Router vermittelt
(u.a. auch ueber ISDN).
PIPE-Volumes:
Eine Besonderheit des MARS_NWE sind die sogenannten PIPE-Volumes, die
im Detail weiter unten erklaert werden. Hiermit kann man z.B. von
einem Dos-Client auf Unix-Shellscripte lesend und schreibend
zugreifen.
Schwachstellen, Probleme und TODO's
QUICKINST (fuer alle Ungeduldigen und Wiederholungstaeter ;-)
^^^^^^^^^
1. "make" aufrufen.
2. "config.h" evtl. anpassen.
3. "make" aufrufen.
4. "nw.ini" zum Konfigurieren des Servers bearbeiten.
5. "make install" (und dann "make install_ini" wenn neue Konf-Datei).
6. "nwserv" starten, MsDOS | WIN | WfW | WIN95 | OS/2-Clients starten,
einloggen, Spass haben ;-)
Und wenns dann doch nicht funktioniert:
INSTALLATION
^^^^^^^^^^^^
Kernel
^^^^^^
Voraussetzung um MARS_NWE laufen zu lassen ist ein Kernel mit
IPX-Option. Grundsaetzlich sollte der MARS_NWE unter allen neueren
(<=1.3.60) Kernelversionen nutzbar sein. 1.3.57 und 1.2.13 ist
ebenfalls eine fuer MARS_NWE geeignete Kernelversion, aeltere (1.3.x)
sind zum Teil problematisch, wegen Bug's im IPX-Code. Die
Kernelpatches aus dem Verzeichniss "mars_mwe/examples" sind keine
Vorraussetzung, steigern die Performance des Servers aber ganz
erheblich (ca. 30-40%). Weiter wird dringend empfohlen, die Option
FULL_INTERNAL_NET in der Kernel-Konfiguration auf NEIN zu setzen. Sind
die genannten Bedingungen erfuellt, steht der Installation vom
MARS_NWE von der Linux-Seite nichts mehr im Weg, andernfalls sollte
zuerst ein neuer Kernel erzeugt (IPX = Y, FULL_INTERNAL_NET = N, Patch
eingespielt?) und Linux neu gebootet werden (mehr dazu im
KERNEL-HOWTO).
Novell
^^^^^^
Im Augenblick (Mai 96) werden noch einige Novell-Dateien benoetigt, um
sich z.b. auf dem Server anzumelden, Printqueues einzurichten etc.
Ausserdem muss ein Verzeichniss existieren, dass spaeter als Volume
"SYS" genutzt werden kann. Als minimale Dateien werden "LOGIN.EXE",
"CAPTURE.EXE", "MAP.EXE" und vielleicht noch "SYSCON.EXE" gebraucht.
In allernaechster Zukunft sollte es von Martin Stover auch die
"mars_dosutils" geben, so dass auf die Novell-Files verzichtet werden
kann. Damit ist dann ein vollwertiger Netware-kompatibler Server als
Freeware fuer Linux verfuegbar. Die Novell-Unterverzeichnisse "LOGIN",
"PUBLIC", "SYSTEM" und "MAIL" werden beim ersten Aufruf von "nwserv"
automatisch erzeugt (dafuer sollte der Eintrag 16 in der
"nw.ini/nwserv.conf" auf 1 bleiben). Man kann also mars_nwe, nachdem
in der nwserv.conf Datei der SYS Eintrag bearbeitet wurde, erstmal
einmal starten und dann per Client versuchen einen attach zu erhalten.
Der Client muss dann ein leeres LOGIN Verzeichnis bzw. Volume (bei
vlms) vorfinden. Dann sollte sich der Client mit einem extern
gestarteten LOGIN.EXE oder entsprechendem aus mars_dosutils auf dem
Server als Supervisor einloggen und die benoetigten Dateien ins LOGIN
Verzeichniss kopieren. Dieses hat den Vorteil, dass die Dateien in der
richtigen Schreibweise gross bzw. klein in das Verzeichnis kopiert
werden. Dateinamen die nicht in das Dos-Schema passen, oder
irrtuemlich in Gross- und Kleinschreibung gemischt wurden, sind
spaeter fuer den Client schlicht nicht sichtbar (waere z.b. bei LOGIN.
EXE nicht so schoen, wenns unsichtbar bliebe ;-).
Directories
^^^^^^^^^^^
Wie bereits gesagt muss wenigstens ein Verzeichniss mit der
Novell-Directory-Struktur existieren, wofuer der "nwserv" aber mit
Eintrag 16=1 in der nwserv.conf selbst sorgt. Daneben wird ein oder
mehrere Verzeichnisse gebraucht, die als Uebergabeverzeichnisse fuer
die Printqueues und eventuell eingerichtete Pipe-Dateien dienen.
Letztere koennen aber jederzeit nachtraeglich angelegt und auch neu
konfiguriert werden, unverzichtbar ist nur das Verzeichniss mit den
Novell-Directories, dass spaeter als Volume SYS freigegeben wird.
Generell ist es bestimmt keine schlechte Idee, alle Verzeichnisse und
Files, die fuer die Clients sichtbar sein sollen, gross zu schreiben.
MARS_NWE
^^^^^^^^
Die aktuelle Version vom MARS_NWE auspacken, was jetzt wohl schon
passiert ;-) ist. Wenn alles komplett ist, gibts jetzt die
Verzeichnisse "mars_nwe", "mars_nwe/examples" und "mars_nwe/doc". Im
doc-Verzeichniss sind ein paar Texte zum MARS_NWE und im
examples-Verzeichniss finden sich u.a. die bereits besprochenen
Patches. Hat bisher alles geklappt, kann jetzt der erste "make"
aufgerufen werden. Damit werden die Dateien "mk.li" und "config.h"
erzeugt. "mk. li" ist ein Scriptfile, mit dessen Hilfe der "make" fuer
Linux angepasst wird und braucht fuer Linux normalerweise nicht
veraendert werden, die "config.h" (die eigentliche Konfigurationsdatei
fuer "make" und den Compilerlauf) sollte aber wenigstens kontrolliert
werden.
Im Einzelnen kann man hier Folgendes einstellen:
Mit DO_DEBUG wird gesteuert, ob der Debugging-Code mit compiliert
werden soll. Generell ist besser mit debug-code, denn der Debug-Level
kann dann spaeter ueber die nwserv.conf eingestellt werden.
Abhaengig vom Eintrag DO_TESTING wird der MARS_NWE nur local (im
aktuellen Verzeichniss) oder endgueltig installiert.
Die meisten folgenden Eintraege sind selbsterklaerend (MAX_CONNECTIONS
...). Um MARS_NWE mit ncpfs oder WIN95 zu betreiben sollte
WITH_NAMESPACE_CALLS = 1 gesetzt werden.
INTERNAL_RIP_SAP ist standard auf 1, soll der MARS_NWE aber nur als
Server und nicht als Router eingesetzt werden, muss es auf Null
gesetzt werden, dann muss aber auch das Routing von Hand eingerichtet
werden und es wird ein externer RIP/SAP Daemon benoetigt. Wenn dieser
Define auf Null gesetzt ist, wird beim compilieren ein tool namens
"nwrouted" erzeugt. Dies ist der Routingund IPX-Konfigurationsteil aus
MARS_NWE. Er kann z.B. verwendet werden, wenn Linux normalerweise ohne
MARS_NWE lauft, IPX-Routing aber (z.B. fuer Linux als IPX-Client)
gebraucht wird, bzw. wenn MARS_NWE nur ab und zu, dass Routing aber
generell fuer Clients benoetigt wird.
Grundsaetzlich kann MARS_NWE auf zwei Arten eingerichtet werden:
1.Man kann alle Routen "von Hand" anlegen und MARS_NWE nur als Server
einsetzen. Hat natuerlich den Nachteil, dass man selbst fuer korrektes
IPX-Routing und richtige Einstellung der Internal-Net Nummern etc.
sorgen muss, bzw. dass zusaetzliche Programme wie ipx-configure, ipxd
usw. benoetigt werden. In mars_nwe/config.h muss folgende Zeile
vorhanden sein:
#define INTERNAL_RIP_SAP 0
Wie schon gesagt, wird dabei ab Version 0.97-PL3 der "routed" erzeugt.
2.
(Der Standard-Modus) MARS_NWE legt alle Routen selbst, man kann die
entsprechenden Devices in der Conf-Datei bestimmen und der MARS_NWE
arbeitet als RIP/SAP-Router (z.B. auch ueber ISDN...). Es werden keine
zusaetzlichen Tools wie IPX_Configure etc. benoetigt.
Sind alle Defines gesetzt, kann der zweite make gestartet werden.
Damit werden die Binaries "nwserv", "ncpserv", "nwbind", "nwconn" und
"nwclient" erzeugt (wenn INTERNAL_RIP_SAP=0 war auch "nwrouted").
Bevor der MARS_NWE endgueltig installiert wird, sollte jetzt die
"nw.ini" bearbeitet werden. Diese wird vom anschliessenden "make
install" ins "/etc/"-Verzeichniss unter dem Namen "nwserv.conf"
kopiert und ist die eigentliche Konfigurationsdatei fuer den MARS_NWE.
Sollte bereits eine "nwserv.conf" im "/etc"-Verzeichniss liegen, wird
diese nicht automatisch ueberschrieben. Will man, dass die
"nwserv.conf" mit der neuen "nw.ini" ueberschrieben wird (z.B. beim
Wechseln auf eine neue MARS_NWE-Version, so muss noch ein "make
install_ini" durchgefuehrt werden.
Die "nwserf.conf" kann jederzeit nachtraeglich bearbeitet werden,
viele Einstellungen koennen mit dem Aufruf "nwserv -h" in den
laufenden Server uebernommen werden. Die Eintraege sind nummeriert,
alles nach einem "#" ist Kommentar und wird ignoriert. Die Eintraege
und ihre Bedeutung sind kurz in der "nwserv.conf" selbst kommentiert.
Im Detail wird die "nwserv.conf" weiter unten besprochen. Fuer einen
ersten Testlauf sollten die Eintraege 1,3,4, und 12 unbedingt
kontrolliert oder geaendert werden. Nachdem das passiert ist, wird der
"make install" aufgerufen, um die Binaries und die "nwserf.conf" zu
installieren.
Ist alles fehlerfrei durchgelaufen (ein paar Warnings beim
Compilerlauf zaehlen nicht ;-), kann der "nwserv" zum testen
aufgerufen werden. Danach sollten mit "ps" drei Prozesse sichtbar sein
(etwa folgendermassen):
<-------------------- schnipp --------------------------------------->
1132 psf 1 < 0:00 nwserv
1133 psf 1 N 0:00 nwbind NWE_SERVER 22.22.22.22:0.0.0.0.0.1:4.51 4001
1134 psf 1 N 0:00 ncpserv NWE_SERVER 22.22.22.22:0.0.0.0.0.1:4.51 4001
1136 pP8 1 N 0:00 ps
<-------------------- schnipp --------------------------------------->
Passiert ist folgendes:
Der Hauptprozess "nwserv" ruft die beiden Prozesse "nwbind" und
"ncpserv" auf ("ncpserv" lauert auf eventuell startende IPX-Clients).
Die Parameter hinter den beiden Prozessen nwbind und ncpserv haben
folgende Bedeutung:
NWE_SERVER: Der Name, der in den nw.ini (nwserv.conf) als
SERVER-Name angegeben wurde (Eintrag Nr.2),
oder falls nichts eingegeben wurde der Unix-
Hostname.
22.22.22.22 Internal-Net Nummer des Servers.
0.0.0.0.0.1 Node-Nummer des Servers.
4.51 Socket-Nummer.
4001 Socket, ueber den die Prozesse miteinander kom-
munizieren
Es hat also keinen Sinn, "nwbind" oder "ncpserv" als eigenstaendige
Programme aufzurufen!
Ein "cat /proc/net/ipx*" sollte jetzt in etwa folgendes zeigen:
<-------------------- schnipp --------------------------------------->
ipx:
Local_Address Remote_Address Tx_Queue Rx_Queue State Uid
22222222:4000 Not_Connected 00000000 00000000 07 000
22222222:0452 Not_Connected 00000000 00000000 07 000
22222222:0453 Not_Connected 00000000 00000000 07 000
22222222:4001 Not_Connected 00000000 00000000 07 000
22222222:0451 Not_Connected 00000000 00000000 07 000
22222222:4002 Not_Connected 00000000 00000000 07 000
22222222:4003 Not_Connected 00000000 00000000 07 000
ipx_interface:
Network Node_Address Primary Device Frame_Type
22222222 000000000001 Yes Internal None
0000000A 0000E8037ECC No eth0 802.3
0000AFFE FCFCAC100101 No isdn2 EtherII
ipx_route:
Network Router_Net Router_Node
0000AFFE Directly Connected
0000000A Directly Connected
22222222 Directly Connected
<-------------------- schnipp --------------------------------------->
Die "ipx_interfaces" sind in diesem Beispiel eine Ethernetkarte (eth0)
und ein ISDN-Interface (auch das geht!). Das erste "Interface" ist der
Server mit seiner Internal-Net Nummer. "ipx_route" zeigt die aktuellen
Netzwerk-Routen, die vom nwserv verwaltet werden, d.h. die beiden
Netzwerke 0000AFFE und 0000000A sind augenblicklich erreichbar. "ipx"
zeigt die Sockets auf denen der Server lauscht. Meldet sich nun ein
IPX-Client auf dem Netz (Start von NETX oder mit VLM), so wird fuer
jeden Client ein Prozess "nwconn" gestartet, der die Connection
verwaltet. Wenn der Client erkannt wurde und alles funktioniert hat,
dann zeigt ein "ps" unter anderem folgendes:
<-------------------- schnipp --------------------------------------->
51 psf 5 < 0:00 /sbin/nwserv
53 psf 5 N 0:00 nwbind NWE_SERVER 22.22.22.22:0.0.0.0.0.1:4.51 4001
54 psf 5 N 0:00 ncpserv NWE_SERVER 22.22.22.22:0.0.0.0.0.1:4.51 4001
...
342 psf 5 N 0:00 nwconn 54 0.0.0.a:0.20.cb.0.1a.e8:40.3 1 4001
<-------------------- schnipp --------------------------------------->
Hier ist ein Client dazugekommen mit folgenden Daten:
Netzwerk-Nummer (nicht Internal-Net): 0.0.0.A
Kartennummer (Physikalisch): 0.20.cb.0.1a.e8
Socket-Nummer: 40.3
Connection Nummer: 1
Die letzte Nummer (4001) ist eine MARS_NWE interne Socketnummer.
Auf der Client-Seite sollte jetzt der Server mit SLIST sichtbar sein:
<-------------------- schnipp --------------------------------------->
Known NetWare File Servers Network Node Address Status
-------------------------- ------- ------------ ------
NWE_SERVER [22222222][ 1]Default
Total of 1 file servers found
<-------------------- schnipp --------------------------------------->
Auch die Dateien im Verzeichniss SYS:\LOGIN des Servers sollten jetzt
sichtbar sein (wenn nicht, ist moeglicherweise die Option "k" gesetzt
und die File-Namen sind auf der Linux-Seite grossgeschrieben oder
umgekehrt?. Siehe auch Kapitel Novell, weiter oben).
NWSERV.CONF
Die Datei "nw.ini" ist waerend der Installation als Vorlage fuer die
eigentliche Konfigurationsdatei "nwserv.conf" angelegt und bearbeitet
worden. Alle relevanten Einstellungen des MARS_NWE (ausser den
Compilereinstellungen in der "config.h") werden hier vorgenommen.
Einige davon koennen sogar waehrend der Laufzeit des Servers mittels
"nwserv -h" uebernommen werden.
In letzter Zeit hat Winfried Truemper die Kommentare ueberarbeitet und
erweitert, so dass viele Parameter jetzt in der Datei selber erklaert
werden.
Hier sollen nur ein paar Einstellungen diskutiert werden, die immer
wieder Fragen aufwerfen:
Mindesten ein Eintrag 1 (Volumes) muss vorhanden sein. Wie
schon im Kapitel Novell gesagt, gibt es auf Netware-Servern eine
minimale Directory-Struktur die aus den Verzeichnissen "LOGIN",
PUBLIC, "SYSTEM" und "MAIL" besteht, und in der standardmaessig
bestimmte Dateien (Login-Scripte, Map-, Capture- und Login-Commands
etc.) abgelegt sind. Damit der Client auf den Server Zugreifen kann
muessen diese also vorhanden sein. Mit Eintrag 16=1 werden diese beim
ersten Start von "nwserv" angelegt. Der Volume-Name ist ueblicherweise
"SYS".
Beim Anlegen und Eintragen der Optionen fuer das Volume SYS unbedingt
auf Gross- und Kleinschreibung achten, sonst sind diese Dateien
nachher fuer den Client nicht sichtbar. Volumes
koennen mit NFS gemountete Verzeichnisse, CD-Roms, Floppys und
beliebige unter Linux mountbare Filesystems sein. Die einzige
Einschraenkung besteht in der Beschraenkung auf entweder alles gross
oder klein geschrieben und der Dos-Namensgebung fuer die Files
(xxxxxxxx.xxx).
Eine Besonderheit sind beim MARS_NWE die sogenannten PIPE-Volumes.
Hier koennen spaeter Shell-Scripte abgelegt werden, auf die vom
Dos-Client aus lesend und schreibend zugegriffen werden kann (siehe
PIPE-Volumes, weiter unten).
Eintrag 3 ist fuer die Internal-Net Nummer. Diese ist nur fuer den
Server und muss einmalig im gesamten Netzwerk sein. Mit einer Null als
Eintrag, wird die IP-Nummer des Linux-Hosts genommen, die ja
ueblicherweise einmalig im Netz ist. Die Node-Nummer ist bei
Netware-Servern 1, sollte also auch hier nicht anders eingestellt
werden. Die Internal-Net Nummer einzurichten ist zwingend notwendig
wenn der Server auch als Router arbeiten soll (mehr als ein
Net-device), oder mehr als ein Server im Netz aktiv ist, sollte aber
generell geschehen.
Bei Netware gibt es zwei Typen von Netzwerknummern, die interne und
externe Netzwerknummer. Die hier eingestellte interne wird verwendet,
damit nur solche Pakete vom Server empfangen werden, die auch direkt
fuer ihn bestimmt sind. Wenn mehrere Net-devices im Server
konfiguriert sind, dann uebernimmt der Server automatisch
Routing-Aufgaben. In diesem Fall sollen Pakete, die nicht fuer den
Server bestimmt, sind ja nur weitergeleitet werden. Die in der
Netzwerkkarte enthaltene physikalische Netzwerknummer ist daher
natuerlich ungeeignet.
Die Server unterscheiden sich aus Sicht der Arbeitsstationen nur durch
ihre interne Netznummer, Pakete werden von den Clients nur an diese
geschickt, der Server adressiert seine Paeckchen an den Client mit
Absender = interne Netznummer und Empfaenger = externe Netznummer. Die
externe Netzwerkadresse (in Eintrag 4) muss nun mit der Netzwerknummer
des LAN's uebereinstimmen, das an das hier konfigurierte Device
angeschlossen ist. Der Frame-Typ muss natuerlich auch mit dem
uebereinstimmen, der auf diesem LAN gueltig ist (Standard bei
Netware-Netzen ist meist 802.3, 802.2 ist bei einigen neueren (Netware
3.12 ..) zu finden.
Neuerdings kann in der "nwserv.conf" auch ein Autodetect der
Net-Devices eingestellt werden. Dies kann natuerlich nur
funktionieren, wenn an diesem Device mindestens ein anderer
Netware-Server haengt, der korrekt eingerichtet ist, damit vom
MARS_NWE die externe Netzwerknummer und der Frame-Typ vom laufenden
Datenverkehr abgeleitet werden kann.
Eintraege 7 - 13 legen die Security- und Login-Details fest. Als
Besonderheit bei Eintrag 7 gilt: auch wenn die 8 (allow empty passwds)
eingetragen ist, muss der Supervisor ein Passwort haben (zumindest,
wenn der Root auf dem Linux-Rechner eines hat). Die Optionen fuer
Eintrag 7 (Passwd-Handling) sind hirarchisch gestaffelt, wobei die
Null nur verschluesseltes Passworthandling zulaesst, und damit die
sicherste Variante darstellt. Die unter 12 und 13 einzutragenden
Usernamen und Passworte werden beim ersten Start von "nwserv" in die
Bindery-Dateien (*.pag und *.dir-Files in /etc/) eingetragen. Danach
koennen (und sollten in der Praxis auch) diese Eintraege wieder aus
der "nwserv.conf" entfernt werden.
FILE-SERVICES
^^^^^^^^^^^^^
PINT-QUEUES
^^^^^^^^^^^
PIPE-VOLUMES
^^^^^^^^^^^^
CLIENTS INSTALLIEREN
^^^^^^^^^^^^^^^^^^^^
FAQ's
^^^^^
TIPS UND LESESTOFF
^^^^^^^^^^^^^^^^^^
EMAIL-ADRESSEN
^^^^^^^^^^^^^^