<para>&lisa; stellt eine Art von <quote>Netzwerkumgebung</quote> auf der Grundlage von TCP/IP bereit. Es wird weder <acronym>SMB</acronym> noch sonst etwas benötigt.</para>
<para>Dieses Handbuch behandelt sowohl den <acronym>LAN</acronym> Informationsserver (&lisa;) als auch den eingeschränkten (restricted) <acronym>LAN</acronym> Informationsserver (&reslisa;)</para>
<para>&lisa; stellt eine Art von <quote>Netzwerkumgebung</quote> auf der Grundlage von TCP/IP bereit. Es wird weder <acronym>SMB</acronym> noch sonst etwas benötigt.</para>
<para>Wenn man &lisa; einen Bereich von <acronym>IP</acronym>-Adressen gibt, sendet &lisa; eine Anforderung für ein <acronym>ICMP</acronym>-Echo an alle angegebenen <acronym>IP</acronym>-Adressen und erwartet die Antworten.</para>
<para>Gibt man die Befehlszeilenoption <option>"*"</option> an, so führt &lisa; den Befehl <command>nmblookup</command> aus. Der Befehl <command>nmblookup</command> gehört zum Samba-Paket, muss also aus diesem installiert werden. <command>nmblookup</command> <option>"*"</option> sendet ein Broadcast-Paket an alle erreichbaren Netzwerke und alle Rechner mit dem <acronym>SMB</acronym>-Protokoll antworten auf diese Anfrage.</para>
<para>In der Einrichtungsdatei muss man einen Bereich von IP-Adressen angeben, der von &lisa; überprüft werden soll.</para>
<para>In den meisten Fällen handelt es sich dabei um die Netzwerkadresse/Teilnetz-Angabe. Damit überprüft &lisa; jeden Rechner des eigenen Teilnetzes, daraufhin, ob er läuft.</para>
<para>Die Rechner werden durch Anfrage eines <acronym>ICMP</acronym>-Echos überprüft. Damit <acronym>ICMP</acronym>-Echos versendet oder empfangen werden können, muss das Programm in der Lage sein, so genannte <quote>raw sockets</quote> zu öffnen. Dazu sind <systemitem class="username">root</systemitem>-Rechte erforderlich. Diese socket wird direkt nach dem Programmstart geöffnet. Danach werden die root-Rechte automatisch zurückgegeben (siehe auch <filename>main.cpp</filename> und <filename>strictmain.cpp</filename>).</para>
<para>Wenn &lisa; so konfiguriert ist, dass es <command>nmblookup</command> verwendet, führt es den Befehl <literal>popen("nmblookup\"*\"")</literal> aus und wertet dessen Ergebnis aus.</para>
<para>Da <acronym>ICMP</acronym>-Anfragen und Broadcasts einigen Netzwerkverkehr verursachen, versuchen mehrere Server in einem Netzwerk zu kooperieren. Vor einem Ping (oder <command>nmblookup</command>) senden sie einen Broadcast auf Port 7741.</para>
<para>Wenn ein Rechner auf dieses Broadcast antwortet, wird die Liste der laufenden Rechner über <acronym>TCP</acronym>-Port 7741 von diesem Rechner bezogen und kein Ping (oder <command>nmblookup</command>) durchgeführt.</para>
<para>Falls kein Rechner antwortet, beginnt der ursprüngliche Rechner, die anderen Rechner anzupingen (oder <command>nmblookup</command> zu senden) und öffnet eine Socket, die auf die oben genannten Broadcasts reagiert. Wenn der Rechner eine Antwort auf das Broadcast erhält, öffnet er keine Socket, um auf Broadcasts zu reagieren. Daher sollte idealerweise immer genau ein Rechner diese Socket offen haben. Dieser Rechner ist der einzige, der die Ping-Anfragen ( oder <command>nmblookup</command>) durchführt. </para>
<para>Mit anderen Worten: die Server sind faul und arbeiten nach dem Prinzip <quote>Ich tue nur dann etwas, wenn sich wirklich niemand anderer findet, der diese Arbeit für mich erledigt</quote>.</para>
<para>Eine weitere Funktion soll die Netzwerkbelastung reduzieren.</para>
<para>Angenommen &lisa; wurde für ein zehnminütiges Aktualisierungsintervall konfiguriert. Wenn man nicht sehr häufig auf diesen Server zugreift, verändert er sein Aktualisierungsintervall selbstständig. Angenommen, während des gesamten Intervalls greift niemand auf den Server zu (weder vom eigenen Rechner noch von anderen Rechnern des Netzwerks). In diesem Fall wird die Aktualisierung durchgeführt und danach das Intervall verdoppelt, d.h. die nächste Aktualisierung findet nach 20 Minuten statt.</para>
<para>Das passiert insgesamt 4 mal, wenn also niemand den Server mit Aktualisierungsintervall 10 Minuten während eines langen Zeitraumes verwendet, steigt das Intervall auf maximal 160 Minuten, beinahe 3 Stunden. Falls dann jemand auf den Server zugreift, erhält er eine bis zu 160 Minuten alte Liste. Dieser Zugriff setzt das Aktualisierungsintervall wieder zurück auf 10 Minuten und startet sofort mit der Aktualisierung, wenn die Letzte mehr als 10 Minuten her ist. Wenn man also eine veraltete Liste erhält, kann man einige Sekunden später eine aktuelle Liste abrufen.</para>
<para>Das hat eine große Wirkung auf die Server, die nicht selbst Ping-Anfragen (oder <command>nmblookup</command>) senden, da sie nur von einem Benutzer verwendet werden, und kaum eine Wirkung auf den Server, der die Ping-Anfragen (oder <command>nmblookup</command>) durchführt, da dieser Server von allen anderen Servern des Netzwerkes abgefragt wird.</para>
<para>Auf diese Weise ist es möglich, das viele Rechner des Netzwerkes den Serverprozess starten und die Netzbelastung dennoch gering bleibt. Für den Benutzer ist es unerheblich zu wissen, ob es einen anderen Server (z.B. einen Name-Server oder File-Server oder Ähnliches) gibt, auf dem &lisa; läuft. Er kann &lisa; lokal starten und &lisa; findet selbstständig und unsichtbar für den Benutzer heraus, ob es einen aktiven Server gibt.</para>
<para>Das erste Client-Programm für &lisa; ist ein Ein-/Ausgabemodul für &kde; 2. Der Benutzer kann <userinput>lan://localhost/</userinput> oder <userinput>lan:/</userinput> eingeben, um Kontakt zu &lisa; auf dem lokalen System herzustellen.</para>
<para>Falls es einen Rechner gibt, der immer läuft und von dem der Benutzer weiß, dass er &lisa; gestartet hat, kann er seinen &lisa;-Client direkt mit diesem Server verbinden (mit dem genannten Ein-/Ausgabemodul durch <userinput>lan://Der_Servername/</userinput>).</para>
<para>Wenn man nicht möchte, dass &lisa; an Broadcasts teilnimmt sondern stattdessen immer selbst Ping-Anfragen durchführt, kann man die Befehlszeilenoption <option>--port</option> oder <option>-p</option> verwenden. Das ist aber nicht empfehlenswert!</para>
<para>Falls man ein <command>SIGHUP</command> an &lisa; sendet, liest das Programm die Einrichtungsdatei neu ein. Wenn man ein <command>SIGUSR1</command> an &lisa; sendet, werden einige Statusinformationen auf stdout ausgegeben.</para>
<para>Die Daten werden in einem einfachen Format über die Socket gesendet: <computeroutput><Dezimale IP-Adresse in der Byteordnung des Netzwerkes><Ein Leerzeichen 0x20> <Name des Rechners><Ein abschließendes '\0'><Neue Zeile '\n'<</computeroutput> und die letzte Zeile <computeroutput>0 succeeded <'\n'></computeroutput> </para>
<para>Falls man sich in einem Netzwerk mit sehr strikten Sicherheitseinstellungen befindet, könnten einige Leute die Ping-Anfragen als einen möglichen Angriff auf den Rechner auffassen. Wenn man damit Probleme hat, sollte man die eingeschränkte Version &reslisa; verwenden.</para>
<para>Wenn im Netzwerk sehr strenge Sicherheitsvorschriften herrschen oder man keinen zusätzlichen Port geöffnet haben will, kann man &reslisa; verwenden.</para>
<para>Mit &reslisa; kann man keine ganzen Netzwerke oder Adressbereiche anpingen, man kann &reslisa; nur bis zu 64 Rechnernamen in der Einrichtungsdatei übergeben. Diese Rechner werden angepingt. Außerdem kann immer <command>nmblookup</command> verwendet werden.</para>
<para>&reslisa; stellt seine Informationen auch nur über eine lokale Socket bereit, also nicht über das Netzwerk. Der Name dieser Socket ist <filename>/tmp/resLisa-Benutzername</filename>, sodass mehrere Benutzer auf dem gleichen Rechner &reslisa; gleichzeitig verwenden können.</para>
<para>Da also kein Sicherheitsrisiko von &reslisa; ausgeht, kann das Programm setuid <systemitem class="username">root</systemitem> installiert werden. <systemitem class="username">root</systemitem>-Rechte werden direkt nach dem Programmstart wieder zurückgegeben (siehe auch <filename>strictmain.cpp</filename>). Sie werden nur benötigte, um eine Socket zum Senden der <acronym>ICMP</acronym>-Anfragen zu öffnen.</para>
<para>Das Programm sendet und empfängt keine Broadcasts. Der erste Client ist ebenfalls ein Ein/Ausgabe-Module für &kde; 2 (zum Beispiel <userinput>rlan:/</userinput> in &konqueror;).</para>
<para>192.168.100.0/255.255.255.0, d.h. eine <acronym>IP</acronym>-Adresse und die zugehörige Netzwerkmaske.</para>
<para>Dabei muss es sich nicht um die Netzwerkadresse und Netzmaske des eigenen Netzwerkes handeln. Wenn man zum Beispiel 10.0.0.0/255.0.0.0 als eigene Adresse hat, kann man 10.1.2.0/255.255.255.0 angeben, falls man nur an den Rechnern dieses Netzwerkes interessiert ist. Die Kombination aus <acronym>IP</acronym>-Adresse-Netzwerkmaske muss durch einen Schrägstrich <quote>/</quote> getrennt sein. Die Adresse muss auch keine Rechneradresse des gewünschten Netzwerkes sein, z.B. 10.12.34.67/255.0.0.0 bewirkt das Gleiche wie 10.0.0.0/255.0.0.0 .</para>
<para>Eine <acronym>IP</acronym>-Adresse als Start des Bereiches und eine <acronym>IP</acronym>-Adresse als Ende des Bereiches, der angepingt wird.</para>
<para>Die Adressen werden durch ein <quote>-</quote> voneinander getrennt.</para>
<para>Der Bereich in diesem Beispiel enthält 199-100+1=100, 100*256=25.600, 25.600+(19-10+1)=25.590 Adressen</para>
<para>Eine <acronym>IP</acronym>-Adresse wird als vier dezimale Zahlen dargestellt. Für jede dieser vier Zahlen kann getrennt ein Bereich angegeben werden: 192-192.169-171.100-199.0-9 </para>
<para>Bei diesem Beispiel beginnen alle <acronym>IP</acronym>-Adressen mit 192, die zweite Zahl liegt zwischen 169 und 171 einschließlich, die Dritte zwischen 100 und 199 und die letzte Zahl liegt zwischen 0 und 9 einschließlich. Das sind 1*3*100*10=3.000 Adressen.</para>
<para>Diese Möglichkeit ist vermutlich nur in seltenen Fällen nützlich. Man muss immer Bereiche für alle vier Nummern angeben, jeweils getrennt durch <quote>-</quote>.</para>
<para>Diese Einstellung ist ebenfalls wichtig. &lisa; pingt nur Rechner an, akzeptiert Anfragen und antwortet auf Broadcasts, wenn der sendende Rechner im Bereich der erlaubten Adressen ist. Man kann bis zu 32 Netzwerkadressen/Netzwerkmasken oder einzelne Adressen angeben. Sie werden durch <quote>;</quote> getrennt. Leerzeichen zwischen den Adressen sind nicht erlaubt!</para>
<para>Ein komplettes Netzwerk und eine einzelne Adresse sind möglich. Diese Einstellung sollte so restriktiv wie möglich sein. Die eigene Netzwerkadresse/Netzwerkmaske ist eine gute Einstellung.</para>
<para>Hier kann genau eine Netzwerkadresse/Netzwerkmaske eingetragen werden. An dieses Netzwerk werden Broadcasts gesendet. Hier sollte die eigene Netzwerkadresse/Subnetzmaske eingetragen sein, also zum Beispiel: 192.168.0.0/255.255.0.0</para>
<para>Hier kann man <parameter>0</parameter> oder <parameter>1</parameter> eintragen. <parameter>1</parameter> bedeutet, dass &lisa; den Befehl <command>nmblookup</command> <option>"*"</option> ausführt und die Ausgabe dieses Befehls auswertet. Das erzeugt weniger Netzwerkverkehr wie das Anpingen, aber nur Rechner, auf denen das <acronym>SMB</acronym>-Protokoll installiert ist (&Windows;-Rechner oder Rechner mit Samba), antworten auf diesen Befehl.</para>
<para>Wenn man diese Option auswählt und außerdem <acronym>IP</acronym>-Adressen zum Anpingen angibt, wird zuerst <command>nmblookup</command> ausgeführt, bevor das Pingen beginnt. Es werden nur die Adressen angepingt, die sich nicht schon auf den Befehl <command>nmblookup</command> gemeldet haben. Das verringert die Netzwerklast ein wenig.</para>
<para>Wenn &lisa; pingt, also <acronym>ICMP</acronym>-Echo-Anfragen sendet, sendet &lisa; eine Anzahl Pings auf einmal und wartet dann die in Hundertstel Sekunden angegebene Zeit auf Antwort. Werte zwischen 5 und 50 sind geeignet. Die höchste Einstellung ist 99 (das entspricht 0,99 Sekunden, eine sehr lange Zeit). Dieser Wert sollte so klein wie möglich sein, sodass gerade noch alle Rechner rechtzeitig antworten können.</para>
<para>Es kann sein, das nicht alle laufenden Rechner sich auf die erste Anfrage von &lisa; melden. Um das Resultat zu verbessern, kann &lisa; eine zweite Anfrage starten. Dieses Mal werden nur Rechner angepingt, die auf die erste Anfrage nicht geantwortet haben. Wenn man mit der ersten Anfrage bereits gute Resultate erzielt, kann man die zweite Anfrage deaktivieren, indem man SecondWait auf <userinput>-1</userinput> setzt.</para>
<para>Auf der anderen Seite kann es eine gute Idee sein, diesen Wert ein klein wenig höher zu wählen als den für <option>FirstWait</option>, da die im ersten Versuch nicht gefundenen Rechner vielleicht langsamer oder weiter entfernt sind und daher einige Millisekunden länger zur Antwort benötigen. Übliche Werte liegen zwischen 5 und 50. Durch -1 wird diese Option deaktiviert. Der Maximalwert ist 99 (0,99 Sekunden sind eine sehr lange Zeit).</para>
<para>Das Intervall, nach dem &lisa; seine Rechnerliste aktualisiert. Nach dieser Zeit startet &lisa; wieder ein Ping oder <command>nmblookup</command> oder lädt die Liste von dem &lisa;-Server, der das Anpingen durchführt.</para>
<para>Mögliche Werte liegen zwischen 30 Sekunden und 1800 Sekunden (eine halbe Stunde). Wenn man ein großes Netzwerk hat, sollte man das Intervall nicht zu klein machen (um die Netzwerkbelastung zu reduzieren). Werte zwischen 300 und 900 Sekunden (5 bis 15 Minuten) sind geeignet.</para>
<para>Man sollte daran denken, das sich das Aktualisierungsintervall bis zu viermal verdoppelt, wenn auf den Server nicht zugegriffen wird. Das Intervall kann also 19 Mal so groß werden wie der eingestellte Wert. Dieser Wert wird zurückgesetzt, sobald wieder jemand auf den Server zugreift.</para>
<para>Falls eine Echo-Anfrage von einer IP-Adresse empfangen wird, von der &lisa; den Rechnernamen nicht bestimmen kann, wird diese Adresse nur dann am Port ausgegeben, wenn diese Option auf 1 gesetzt ist.</para>
<para>Die Nützlichkeit dieser Funktion ist etwas umstritten. Sie wurde eingerichtet für &zb; Switches oder andere Geräte des Netzwerkes, denen keine Namen zugeordnet wurde und die nicht veröffentlicht werden müssen. Falls man diese Geräte geheim halten will ;-), sollte man die Option auf 0 setzen. Im Zweifelsfall sollte man die Option auf 0 setzen.</para>
<para>&lisa; sendet eine Anzahl Pings gleichzeitig und wartet dann auf die Antworten. Standardmäßig werden 256 Pings auf einmal gesendet. Dieser Wert muss in der Regel nicht geändert werden. Falls man diesen Wert zu groß wählt, können die internen Empfangspuffer für die Echo-Anfragen zu klein werden, ein sehr kleiner Wert verlangsamt die Aktualisierung erheblich.</para>
<title>Einrichtungsdatei für Rechner, die lediglich <acronym>SMB</acronym> verwenden</title>
<para>Wenn man nur an Rechnern interessiert ist, die das <acronym>SMB</acronym>-Protokoll verwenden, und sich keine Router im Netzwerk befinden:</para>
<para>Zuerst nach der Datei <filename>$<envar>HOME</envar>/.lisarc</filename>, dann nach der Datei <filename>/etc/lisarc</filename> suchen. Das ist die Standardeinstellung.</para>
<para>Zuerst nach der Datei <filename>$<envar>HOME</envar>/.trinity/share/config/lisarc</filename> suchen und dann nach <filename>$<envar>TDEDIR</envar>/share/config/lisarc</filename>.</para>
<para>Nach der Datei <filename>lisarc</filename> in jedem vom Befehl <userinput><command>tde-config</command> <option>--path</option> <parameter>config</parameter></userinput> zurückgegebenen Ordner suchen.</para>
<para>Der Server wird auf diesem Port gestartet. Wenn man diese Option bei &lisa; verwendet, kann &lisa; nicht mit anderen Servern im Netzwerk kooperieren. Diese Option ist für &reslisa; nicht verfügbar.</para>
<para>Wird das Hangup-Signal an &lisa; oder &reslisa; gesendet, wird das Programm veranlasst, die Einrichtungsdatei neu einzulesen (<userinput><command>killall</command> <option>-HUP lisa</option></userinput>).</para>
<para>Wenn man das User1-Signal an &lisa; oder &reslisa; sendet, wird das Programm veranlasst, einige Statusinformationen an die Standardausgabe zu senden (<userinput><command>killall</command> <option>-USR1 lisa</option></userinput>). Ist die Konsole, von der &lisa;/&reslisa; gestartet wurde, schon beendet, ist die Ausgabe nicht sichtbar.</para>
<para>&lisa; und &reslisa; benötigen die Bibliothek libstdc++ (nur die String-Klasse wird verwendet). <emphasis>Weder</emphasis> &Qt; <emphasis>noch</emphasis> &kde; werden benötigt.</para>
<para>Sowohl &reslisa; als auch &lisa; öffnen eine so genannte <quote>raw socket</quote> für das Senden und Empfangen von <acronym>ICMP</acronym>-Echo-Anfragen (Pings). Dazu werden <systemitem class="username">root</systemitem>-Rechte benötigt.</para>
<para>&lisa; bietet einen Service auf <acronym>TCP</acronym>-Port 7741 an und sollte von <systemitem class="username">root</systemitem> installiert und beim Hochfahren des Systems gestartet werden. Wie das zu erreichen ist, hängt sehr vom jeweiligen Betriebssystem ab.</para>
<para>&reslisa; ist für den Start durch einen Benutzer programmiert, es bietet dem Netzwerk keinerlei Serverdienste an. Es muss mit setuid <systemitem class="username">root</systemitem> installiert werden.</para>
<para>&reslisa; kann bei der Verwendung des Ein-/Ausgabemodul <userinput>rlan</userinput> von &kde; 2 automatisch gestartet werden.</para>
<para>&lisa; liest die Einrichtungsdatei <filename>lisarc</filename>, &reslisa; dagegen <filename>reslisa</filename>. Wenn man beide Programme von &kcontrol; konfigurieren will, muss man sie mit der Option <option>-K</option> starten.</para>
<para>Ein/Ausgabe-Modulenen zu den Einrichtungsdateien sind im Kapitel <xref linkend="command-line-options"/> zu finden.</para>