Copyright © 2001 Alexander Neundorf
LISa stellt eine Art von „Netzwerkumgebung“ auf der Grundlage von TCP/IP bereit. Es wird weder SMB noch sonst etwas benötigt.
Dieses Handbuch behandelt sowohl den LAN Informationsserver (LISa) als auch den eingeschränkten (restricted) LAN Informationsserver (resLISa)
Inhaltsverzeichnis
Beispiele
LISa stellt eine Art von „Netzwerkumgebung“ auf der Grundlage von TCP/IP bereit. Es wird weder SMB noch sonst etwas benötigt.
Es ist vollständig unabhängig von KDE/Qt™.
Die Liste der aktiven Rechner wird über TCP-Port 7741 bereitgestellt.
LISa kann Rechner auf zwei Arten finden:
Wenn man LISa einen Bereich von IP-Adressen gibt, sendet LISa eine Anforderung für ein ICMP-Echo an alle angegebenen IP-Adressen und erwartet die Antworten.
Gibt man die Befehlszeilenoption "*"
an, so führt LISa den Befehl nmblookup aus. Der Befehl nmblookup gehört zum Samba-Paket, muss also aus diesem installiert werden. nmblookup "*"
sendet ein Broadcast-Paket an alle erreichbaren Netzwerke und alle Rechner mit dem SMB-Protokoll antworten auf diese Anfrage.
In der Einrichtungsdatei muss man einen Bereich von IP-Adressen angeben, der von LISa überprüft werden soll.
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.
Die Rechner werden durch Anfrage eines ICMP-Echos überprüft. Damit ICMP-Echos versendet oder empfangen werden können, muss das Programm in der Lage sein, so genannte „raw sockets“ zu öffnen. Dazu sind root
-Rechte erforderlich. Diese socket wird direkt nach dem Programmstart geöffnet. Danach werden die root-Rechte automatisch zurückgegeben (siehe auch main.cpp
und strictmain.cpp
).
Wenn LISa so konfiguriert ist, dass es nmblookup verwendet, führt es den Befehl popen("nmblookup\"*\"")
aus und wertet dessen Ergebnis aus.
Da ICMP-Anfragen und Broadcasts einigen Netzwerkverkehr verursachen, versuchen mehrere Server in einem Netzwerk zu kooperieren. Vor einem Ping (oder nmblookup) senden sie einen Broadcast auf Port 7741.
Wenn ein Rechner auf dieses Broadcast antwortet, wird die Liste der laufenden Rechner über TCP-Port 7741 von diesem Rechner bezogen und kein Ping (oder nmblookup) durchgeführt.
Falls kein Rechner antwortet, beginnt der ursprüngliche Rechner, die anderen Rechner anzupingen (oder nmblookup 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 nmblookup) durchführt.
Mit anderen Worten: die Server sind faul und arbeiten nach dem Prinzip „Ich tue nur dann etwas, wenn sich wirklich niemand anderer findet, der diese Arbeit für mich erledigt“.
Eine weitere Funktion soll die Netzwerkbelastung reduzieren.
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.
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.
Das hat eine große Wirkung auf die Server, die nicht selbst Ping-Anfragen (oder nmblookup) senden, da sie nur von einem Benutzer verwendet werden, und kaum eine Wirkung auf den Server, der die Ping-Anfragen (oder nmblookup) durchführt, da dieser Server von allen anderen Servern des Netzwerkes abgefragt wird.
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.
Das erste Client-Programm für LISa ist ein Ein-/Ausgabemodul für KDE 2. Der Benutzer kann lan://localhost/
oder lan:/
eingeben, um Kontakt zu LISa auf dem lokalen System herzustellen.
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 lan://Der_Servername/
).
Wenn man nicht möchte, dass LISa an Broadcasts teilnimmt sondern stattdessen immer selbst Ping-Anfragen durchführt, kann man die Befehlszeilenoption --port
oder -p
verwenden. Das ist aber nicht empfehlenswert!
Falls man ein SIGHUP an LISa sendet, liest das Programm die Einrichtungsdatei neu ein. Wenn man ein SIGUSR1 an LISa sendet, werden einige Statusinformationen auf stdout ausgegeben.
Die Daten werden in einem einfachen Format über die Socket gesendet: <Dezimale IP-Adresse in der Byteordnung des Netzwerkes><Ein Leerzeichen 0x20> <Name des Rechners><Ein abschließendes '\0'><Neue Zeile '\n'<
und die letzte Zeile 0 succeeded <'\n'>
Zum Beispiel:
17302538 Irgendein_Rechner.Irgendeine_Domain.de
18285834 linux.Irgendeine_Domain.de
17827082 nameserver.Irgendeine_Domain.de
0 succeded
Das sollte leicht zu parsen sein.
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.
Wenn im Netzwerk sehr strenge Sicherheitsvorschriften herrschen oder man keinen zusätzlichen Port geöffnet haben will, kann man resLISa verwenden.
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 nmblookup verwendet werden.
resLISa stellt seine Informationen auch nur über eine lokale Socket bereit, also nicht über das Netzwerk. Der Name dieser Socket ist /tmp/resLisa-Benutzername
, sodass mehrere Benutzer auf dem gleichen Rechner resLISa gleichzeitig verwenden können.
Da also kein Sicherheitsrisiko von resLISa ausgeht, kann das Programm setuid root
installiert werden. root
-Rechte werden direkt nach dem Programmstart wieder zurückgegeben (siehe auch strictmain.cpp
). Sie werden nur benötigte, um eine Socket zum Senden der ICMP-Anfragen zu öffnen.
Das Programm sendet und empfängt keine Broadcasts. Der erste Client ist ebenfalls ein Ein/Ausgabe-Module für KDE 2 (zum Beispiel rlan:/
in Konqueror).
Eine Beispiel-Einrichtungsdatei:
PingAddresses = 192.168.100.0/255.255.255.0;192.168.100.10-192.168.199.19;192.168.200.1;192-192.168-168.100-199.0-9; PingNames = bb_mail; AllowedAddresses = 192.168.0.0/255.255.0.0 BroadcastNetwork = 192.168.100.0/255.255.255.0 SearchUsingNmblookup = 1 #versuche auch nmblookup FirstWait = 30 #30 hundertstel Sekunden SecondWait = -1 #nur ein Versuch #SecondWait = 60 #zwei Versuche mit 0.6 Sekunden Wartezeit dazwischen UpdatePeriod = 300 #Aktualisierung alle 300 Sekunden DeliverUnnamedHosts = 0 #Unbenannte Rechner nicht veröffentlichen MaxPingsAtOnce = 256 #Maximal 256 ICMP-Anfragen gleichzeitig
Dies ist wohl der wichtigste Eintrag.
Hiermit werden die Adressen festgelegt, die angepingt werden sollen. Man kann mehrere durch Semikolon getrennte Bereiche angeben.
Es gibt vier Wege, Adressen festzulegen:
192.168.100.0/255.255.255.0, d.h. eine IP-Adresse und die zugehörige Netzwerkmaske.
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 IP-Adresse-Netzwerkmaske muss durch einen Schrägstrich „/“ 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 .
Zum Beispiel: 192.168.100.10-192.168.199.19
Eine IP-Adresse als Start des Bereiches und eine IP-Adresse als Ende des Bereiches, der angepingt wird.
Die Adressen werden durch ein „-“ voneinander getrennt.
Der Bereich in diesem Beispiel enthält 199-100+1=100, 100*256=25.600, 25.600+(19-10+1)=25.590 Adressen
Eine IP-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
Bei diesem Beispiel beginnen alle IP-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.
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 „-“.
Die IP-Adresse oder der Rechnernamen des Rechners, an dem man interessiert ist.
Dieser Eintrag kann auch leer gelassen werden.
PingNames
Hier können zusätzlich Rechnernamen angegeben werden, die angepingt werden sollen. Die Namen müssen durch Semikolons getrennt werden.
Dieser Eintrag kann auch leer gelassen werden.
AllowedAddresses
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 „;“ getrennt. Leerzeichen zwischen den Adressen sind nicht erlaubt!
Zum Beispiel: 192.168.0.0/255.255.0.0;192.169.0.0
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.
BroadcastNetwork
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
SearchUsingNmblookup
Hier kann man 0
oder 1
eintragen. 1
bedeutet, dass LISa den Befehl nmblookup "*"
ausführt und die Ausgabe dieses Befehls auswertet. Das erzeugt weniger Netzwerkverkehr wie das Anpingen, aber nur Rechner, auf denen das SMB-Protokoll installiert ist (Windows®-Rechner oder Rechner mit Samba), antworten auf diesen Befehl.
Wenn man diese Option auswählt und außerdem IP-Adressen zum Anpingen angibt, wird zuerst nmblookup ausgeführt, bevor das Pingen beginnt. Es werden nur die Adressen angepingt, die sich nicht schon auf den Befehl nmblookup gemeldet haben. Das verringert die Netzwerklast ein wenig.
FirstWait
Wenn LISa pingt, also ICMP-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.
SecondWait
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 -1
setzt.
Auf der anderen Seite kann es eine gute Idee sein, diesen Wert ein klein wenig höher zu wählen als den für FirstWait
, 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).
UpdatePeriod
Das Intervall, nach dem LISa seine Rechnerliste aktualisiert. Nach dieser Zeit startet LISa wieder ein Ping oder nmblookup oder lädt die Liste von dem LISa-Server, der das Anpingen durchführt.
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.
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.
DeliverUnnamedHosts
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.
Die Nützlichkeit dieser Funktion ist etwas umstritten. Sie wurde eingerichtet für z. B. 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.
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.
Beispiel 4.1. FIXME
Wenn man sich in einem kleinen Netzwerk mit 24-Bit-Netzmaske, also bis zu 26 Rechnern, befindet:
PingAddresses = 192.168.100.0/255.255.255.0 AllowedAddresses = 192.168.100.0/255.255.255.0 BroadcastNetwork = 192.168.100.0/255.255.255.0 SearchUsingNmblookup = 0 #nmblookup nicht verwenden FirstWait = 20 #20 Hundertstel Sekunden SecondWait = 30 #30 Hundertstel Sekunden beim zweiten Versuch UpdatePeriod = 300 #Aktualisierung 300 Sekunden DeliverUnnamedHosts = 0 #Rechner ohne Namen werden nicht veröffentlicht
Beispiel 4.2. Einrichtungsdatei für Rechner, die lediglich SMB verwenden
Wenn man nur an Rechnern interessiert ist, die das SMB-Protokoll verwenden, und sich keine Router im Netzwerk befinden:
AllowedAddresses = 192.168.100.0/255.255.255.0 BroadcastNetwork = 192.168.100.0/255.255.255.0 SearchUsingNmblookup = 1 #nmblookup verwenden UpdatePeriod = 300 #rktualisierung nach 300 Sekunden DeliverUnnamedHosts = 0 #Rechner ohne Namen werden nicht veröffentlicht
Beispiel 4.3. Einrichtungsdatei für sowohl nmblookup als auch Pingen
Das gleiche Netzwerk, aber sowohl nmblookup als auch Pingen wird verwendet.
PingAddresses = 192.168.100.0/255.255.255.0 PingNames = bb_mail AllowedAddresses = 192.168.0.0/255.255.0.0 BroadcastNetwork = 192.168.100.0/255.255.255.0 SearchUsingNmblookup = 1 #nmblookup verwenden FirstWait = 30 #30 sundertstel Sekunden SecondWait = -1 #nur ein Versuch #SecondWait = 60 #zwei Versuche und 0.6 Sekunden Wartezeit beim zweiten Versuch UpdatePeriod = 300 #rktualisierung nach 300 Sekunden DeliverUnnamedHosts = 0 #Rechner ohne Namen werden nicht veröffentlicht MaxPingsAtOnce = 256 #bis zu 256 ICMP-Echo-Anfragen werden auf einmal gesendet
Beispiel 4.4. Einrichtungsdatei für resLISa
Eine Konfiguration für resLISa. PingAdresses und BroadcastNetwork wird von resLISa nicht verwendet.
PingNames = bb_mail;irgendein_Rechner;irgendein_anderer_Rechner AllowedAddresses = 192.168.0.0/255.255.0.0 SearchUsingNmblookup = 1 # nmblookup verwenden FirstWait = 30 #30 Hundertstel Sekunden SecondWait = -1 #yur ein Versuch #SecondWait = 60 #zwei Versuche und 0,6 Sekunden Wartezeit beim zweiten Versuch UpdatePeriod = 300 #rktualisierung nach 300 Sekunden DeliverUnnamedHosts = 1 #Rechner ohne Namen werden auch veröffentlicht MaxPingsAtOnce = 256 #bis zu 256 ICMP-Echo-Anfragen werden auf einmal gesendet
Die folgenden Befehlszeilenoptionen werden unterstützt:
-v
, --version
Gibt kurze Versionsinformationen aus.
-h
, --help
Gibt einen Überblick über die Befehlszeilenoptionen
-u
, --unix
Zuerst nach der Datei $
, dann nach der Datei HOME
/.lisarc/etc/lisarc
suchen. Das ist die Standardeinstellung.
-k
, --kde1
Zuerst nach der Datei $
suchen und dann nach HOME
/.kde/share/config/lisarc$
.KDEDIR
/share/config/lisarc
-K
, --kde2
Nach der Datei lisarc
in jedem vom Befehl kde-config
zurückgegebenen Ordner suchen.--path
config
-c
, --config=
DATEI
Die Datei DATEI
einlesen und nicht nach anderen Einrichtungsdateien suchen.
-p
, --port
PORTNR
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.
Wird das Hangup-Signal an LISa oder resLISa gesendet, wird das Programm veranlasst, die Einrichtungsdatei neu einzulesen (killall
).-HUP lisa
Wenn man das User1-Signal an LISa oder resLISa sendet, wird das Programm veranlasst, einige Statusinformationen an die Standardausgabe zu senden (killall
). Ist die Konsole, von der LISa/resLISa gestartet wurde, schon beendet, ist die Ausgabe nicht sichtbar.-USR1 lisa
LISa und resLISa Copyright 2000, 2001, Alexander Neundorf
Frank Schütte (F.Schuette AT t-online.de)
Viel Spaß, Alexander Neundorf (neundorf AT kde.org)
Diese Dokumentation ist unter den Bedingungen der GNU Free Documentation License veröffentlicht.
Dieses Programm ist unter den Bedingungen der GNU General Public License veröffentlicht.
Inhaltsverzeichnis
LISa und resLISa benötigen die Bibliothek libstdc++ (nur die String-Klasse wird verwendet). Weder Qt™ noch KDE werden benötigt.
Um LISa auf Ihrem System zu kompilieren und zu installieren, geben Sie folgende Befehle im Hauptordner der Programm-Quellen von LISa ein:
%
./configure
%
make
%
make install
Da LISa autoconf und automake benutzt, sollte es dabei keine Schwierigkeiten geben. Sollten dennoch Probleme auftauchen, wenden Sie sich bitte an die KDE-Mailinglisten.
Sowohl resLISa als auch LISa öffnen eine so genannte „raw socket“ für das Senden und Empfangen von ICMP-Echo-Anfragen (Pings). Dazu werden root
-Rechte benötigt.
LISa bietet einen Service auf TCP-Port 7741 an und sollte von root
installiert und beim Hochfahren des Systems gestartet werden. Wie das zu erreichen ist, hängt sehr vom jeweiligen Betriebssystem ab.
resLISa ist für den Start durch einen Benutzer programmiert, es bietet dem Netzwerk keinerlei Serverdienste an. Es muss mit setuid root
installiert werden.
resLISa kann bei der Verwendung des Ein-/Ausgabemodul rlan
von KDE 2 automatisch gestartet werden.
LISa liest die Einrichtungsdatei lisarc
, resLISa dagegen reslisa
. Wenn man beide Programme von KControl konfigurieren will, muss man sie mit der Option -K
starten.
Ein/Ausgabe-Modulenen zu den Einrichtungsdateien sind im Kapitel Kapitel 5, Befehlszeilenoptionen und allgemeine Benutzung zu finden.
Would you like to make a comment or contribute an update to this page?
Send feedback to the KDE Docs Team