Homepage des Authors: www.staschke.de Author: Arnim Staschke 01.10.2000 last Update: 21.06.2003 v 0.5


Bei Anruf Anwahl

am Beispiel auf meinem Rechner


B. Copyright

1 Kleine Einführung

2 Konfiguration: bei Anruf Einwahl

3 Testen der Konfiguration

4 Sonstiges

5 geht nicht

6 Externe Links zum Thema




Bei Anruf Einwahl

am Beispiel auf meinem Rechner


1 Kleine Einführung


1.1 eine kleine Warnung;-)

Diese Dokumentation richtet sich an den schon etwas erfahrenen Linux Anwender. Man sollte sich bewusst sein, was man hier tut, und vor allem wissen was man tut und es auch verstehen, was man getan hat. Das ist wichtig, um eventuelle Sicherheitsrisiken richtig abschätzen zu können. Hier aufgeführt sind nur im groben die wichtigsten Schritte, auf die Systemsicherheit wird hier nicht weiter eingegangen.
Diese Dokumentation ist als grobe Richtlinie gedacht, als Denkanstoss, nicht als Anleitung! Die Verfeinerung und Verbesserung der Konfiguration muss jeder selbst vornehmen, an sein eigenes System anpassen.

Alles geschieht in eigener Verantwortung. Der Author haftet nicht für eventuelle Schäden am System oder sonst wo!
Wer damit nicht einverstanden ist, der möge bitte nicht weiterlesen.

1.2 Was soll erreicht werden?

Eine unserer eigenen Telefonnummern (MSN) wird so konfiguriert, dass einige Aktionen ausgelöst werden, sobald ein Anruf auf diese MSN eingeht. Diese Aktionen sollen aus Sicherheitsgründen nur ausgelöst werden, wenn wir von unserem eigenen Handy aus anrufen. Die Identifikation erfolgt über die übermittelte Rufnummer. Die Rufnummernübermittlung muss also aktiv sein! Andere Anrufe auf diese MSN werden ignoriert.
Unser Rechner muss natürlich laufen, um auf Telefonanrufe reagieren zu können.

Später lässt sich das Ganze weiter ausbauen, so dass der Rechner sich bei Handyanruf einwählt, die dabei dynamisch vom Provider zugewiesene IP-Adresse ausliesst, diese in eine HTML-Datei schreibt, und diese HTML-Datei per FTP in unser Homepageverzeichnis beim Provider kopiert. Dokumentaion dazu gibt es unter »Bei Einwahl die IP auf die Homepage laden» und »IP per SMS« hier auf meiner Homepage.

Wozu das Ganze gut sein soll, möchte ich nicht weiter erläutern, denn wer diese Seiten liesst, sollte wissen, was er warum tut;-)
Desweiteren sollte jedem bewusst sein, dass die ganze Aktion ein Sicherheitsloch reisst. Für Schäden ist jeder selbst verantwortlich, dass sollte klar sein. Denn mit der IP-Adresse ist Tür und Tor geöffnet, fuer jeden! Der Rechner muss alo entsprechend gesichert sein, gegen Angriffe von Aussen!

Weiterhin setze ich vorraus, dass die Dokumentation zum I4L, isdnlog, callerid.conf und so weiter gelesen wurde.

2 Konfiguration bei Anruf Einwahl


2.1 Device mit MSN konfigurieren

Wie ich festgestellt habe, muss kein ISDN-device existieren, um den Rechner per Handy-Anruf online gehen zu lassen. Es genügt scheinbar, dass eine MSN in der /etc/callerid.conf im [NUMBER]-Block definiert ist, ohne einem ISDN-device zugeordnet zu sein.
Wenn ein schon konfiguriertes ISDN-device, bzw dessen MSN verwendet wird, muss dieses device so konfigurioert werden, dass es keine Anrufe annehmen soll, da sonst dem Anrufer Telefonkosten entstehen würden;-)
Ansonsten nimmt man am einfachsten eine freie MSN für unser Vorhaben, und schreibt sie, wie weiter unten aufgefüher, in die /etc/callerid.conf, statt der 0815.

Wer möchte, kann natuerlich auch ein extra ISDN Device angelegen. Dieses Device bekommt die als MSN eine freie MSN zugewiesen. Dieses ISDN-Devise, im Folgenden ippp3 genannt, darf keine Anrufe vom Typ Sprache annehmen. Sonst würden dem Anrufer Telefongebühren entstehen.


2.2 /etc/isdn/callerid.conf anpassen

Wie unten sollte dann unsere MSN in der /etc/isdn/callerid.conf stehen:
Die Null Acht Fuffzehn-Nummer entsprechend anpassen.


[MSN]
NUMBER = 0815
SI = 1
ALIAS = Autodialout
ZONE = 1


Nun wird es interessant:-)
Man kann Programme oder sonstwas hier aus der callerid.conf heraus ausführen lassen. Genau dass machen wir jetzt, indem der obrige Block wie unten gezeigt, ergänzt wird..

[MSN]
NUMBER = 0815
SI = 1
ALIAS = Autodialout
ZONE = 1
START = {
    [FLAG]
    FLAGS = IRU
    PROGRAM = /usr/local/bin/ringdial \$2
}


Info hierzu sind in der Dokumentation zum ISDNlog enthalten. Auch die Bedeutung der FLAGS steht dort.
zB in /Path_zu_den_Paketbeschreibungen/packages/i4l/isdnlog/README

Im einzelnen kurz die Bedeutungen:
START = { Wichtig ist: Die öffnende Klammer muss in der selben Zeile stehen, wie START
FLAGS = IRU Ausführung nur bei eingehenden Anrufen, wobei I= Programmstart nur bei eingebhenden Anrufen, R= Beim klingeln Programm starten, U= Es darf nur ein Programm gestartet werden, solange das andere noch läft. Stimmt nicht ganz, aber so ungefähr.
/usr/local/bin/ringdial \$2 ringdial ist ein script, dass wir später noch erstellen werden. Das \$2 ist aber noch wichtig: Der callerid.conf ist die übermittelte Rufnummer des Anrufers bekannt, und zwar als zweite Variable (siehe README zum isdnlog!). Diese Variable $2 wird dem Script ringial beim Aufruf mit übergeben, als erster Parameter. Dazu später mehr.
Die schliessende Klammer nicht vergessen!

Thats all. Abspeichern und gut is;-)
Änderungen an der callerid.conf werden erst nach einem Neustart des ISDN-Systems übernommen. Im Zweifelsfall den Rechner rebooten.


2.3 /etc/isdn/isdnlog.isdnctrl0.options anpassen

Damit der isdnlog die Scripte oder Porogramme ausführen kann, muss der isdnlog mit dem Parameter -S gestartet werden. Bei SuSe ist das wohl standardmässig der Fall. Einstellt wird es hier in der /etc/isdn/isdnlog.isdnctrl0.options.

Hier die entsprechende Stelle (Suse 7.0)
# -S      start={yes|no}
# isdnlog soll bei diversen Event's die in der 5. Spalte der isdn.conf
# angegebenen externen Programme starten
start=yes


Änderungen am ISDN-System (isdnlog) werden erst nach einem Neustart des isdnlogs wirksam. Da jede Distribution ihre Dienste anders startet, im Zweifelsfall einen Reboot des Rechners machen;-)


2.4 Script ringdial erstellen


#! /bin/bash

if [ "$1" = "+491714711" ]; then

/usr/sbin/isdnctrl dial ippp0

fi

echo $1 >> /var/log/ringdial.log
echo `date` >> /var/log/ringdial.log
echo ------------- >> /var/log/ringdial.log


Die Handynummer ist anzupassen.
Hier wird der Parameter $2 von eben (der die Rufnummer des Anrufenden enthällt), ueberprueft. Hier muss aber nicht $2 stehen, sondern $1!!!
Und zwar weil es der ERSTE (und hier auch der einzigste) Parameter ist, der dem Script rundial übergeben wird.

Es wird überprüft, ob es sich um MEINE Handynummer handelt. Wenn ja, dann kommt die Anwahl. Wenn nein kommt gar nix;-)


Dann spezial: Die Logdatei:-)

echo $1 >> /var/log/ringdial.log
Leitet die Ausgabe von echo , also die Nummer des Anrufenden, in die Datei /var/log/rindial.log. Wenn die Datei nicht exsistiert, wird sie automatisch angelegt.

echo bla >> Datei
Leitet in Datei und hängt unten dran

echo blafasel > Datei
würde die Datei jedesmal neu erstellen.



echo `date` >> /var/log/ringdial.log

Fügt das Datum und Zeit ein, darunter

echo ------------- >> /var/log/ringdial.log

Trennstriche, der Übersichtlichket halber.

So entsteht eine Log-Datei, wo man sehen kann, wer wann angerufen hat. Alle Anrufe, die SI=1 entsprechen (Speech), werden geloggt. Nuetzlich fuer die ersten Testzwecke und man kann sehen, wie die Nummer uebermittelt wird.
Wenn alles wie gewünscht läuft, sollte man die Umleitung mit Anhängen ändern in eine Umleitung, wo die Log-Datei jedesmal neu erstellt wird. Ansonsten wird die Log-Datei immer länger und länger.
Und zwar nur in dieser Zeile des Scriptes:
echo $1 >> /var/log/ringdial.log = Umleitung mit Anhängen
echo $1 > /var/log/ringdial.log = Umleitung mit Log-Datei neu erstellen
Die anderen echo-Anweisungen bleiben unverändert mit >> erhalten. Ansonsten würde die Datei hier nochmal neu erstellt, damit währe die erste echo-Anweisung wieder gelöscht.
So hat man nur immer den jeweils letzten Anruf in der Log-Datei stehen.


Das Script ringdial speichern unter /usr/local/bin/ringdial. Ausführbar machen, Rechte auf root.root setzen.


3 Testen der Konfiguration


3.1 Script testen

Testen des Scripts (als root):

/usr/local/bin/ringdial +491714711

Es sollte, wenn alles richtig ist, eine Anwahl erfolgen.

/usr/local/bin/ringdial +491710815
Hier sollte keine Anwahl erfolgen.


3.2 Gesamttest

Man nehme sein Handy, und rufe an;-)
Erfolgt eine Anwahl, dann :-)
Erfolgt keine Anwahl, dann :-(
Tip: Nebenbei
tail -f /var/log/messages
laufen lassen.

Ein anderes Handy oder Telefon nehmen und anrufen. Es sollte keine Anwahl erfolgen.

Änderungen am ISDN-System (isdnlog) werden erst nach einem Neustart des isdnlogs wirksam. Da jede Distribution ihre Dienste anders startet, im Zweifelsfall einen Reboot des Rechners machen;-)


4 Sonstiges


4.1 andere Alternative: /etc/isdn/callerid.conf

Es gibt noch eine andere Schreibweise der /etc/isdn/callerid.conf. Statt den Programmaufruf in einem [MSN] - Block zu starten, kann ein [NUMBER] - Block erstellt werden. Der Programmaufruf kann dann hier erfolgen.

Beispiel:


MSN]
NUMBER = 4711
SI =1
ALIAS = Telefon
ZONE = 1
INTERFACE = -


[MSN]
NUMBER = 0815
SI = 7
ALIAS = ISDN-Karte
ZONE = 1


[NUMBER]
NUMBER = 0815
SI = 1
ALIAS = Autodialout
ZONE = 1
START = {
     [FLAG]
     FLAGS = IRU
     PROGRAM = /usr/local/bin/ringdial \$2
}

[..schnippel..]

Alles klar? Funktionieren sollten beide Möglichkeiten. Falls jedoch mal Probleme auftreten, könnte man die andere Syntax ausprobieren.


5 geht nicht


5.1 Fehler im initscript bei SuSE 6.4

In der /sbin/init.d/i4l_hardware befindet sich in Zeile 241 ein Tippfehler:
Statt eval I4L_HISAXDEBUG=\$$I4L_HISAXDEBUG_$I soll dort stehen:
eval I4L_HISAXDEBUG=\$I4L_HISAXDEBUG_$I
Ein $ zu viel also. Dieser Tippfehler betrifft nur die SuSE 6.4!


5.2 Fehler suchen und vielleicht auch beheben

Tja, ich bekomme anb und zu Feedback zu dieser Seite. Im Subject der Mail steht dann zumeist geht nicht:-(
Definitiv muss es aber wie oben angegeben, laufen. Bei mir, sowie anderen lief es schliesslich auch;-)
Woran es nun im Einzelnen liegt, dass das Script ringdial nicht ausgeführt wird, habe ich bis jetzt nicht rausfinden können, leider. Denn plötzlich lief alles, wieso und warum war in allen Fällen nicht nachvollziebar.

Und nocheinmal: Änderungen am ISDN-System (isdnlog) werden erst nach einem Neustart des isdnlogs wirksam. Da jede Distribution ihre Dienste anders startet, im Zweifelsfall einen Reboot des Rechners machen.

Irgendwie habe ich den isdnlog in Verdacht, das er eventuell gar nicht läuft?
Bitte das einmal testen, als root mit der Eingabe von:
ps auxwww | grep isdnlog
Die Ausgabe soll ähnlich wie folgt aussehen:
   root       113  0.6  5.5  4644 3624 ?        S    17:38   0:06
   /usr/sbin/isdnlog -f /etc/isdn/isdnlog.isdnctrl0.options /dev/isdnctrl0
   root      1841  0.0  0.7  1264  496 pts/0    S    17:53   0:00 grep isdnlog
(ungetestet, da ich kein ISDN in diesem Sinne mehr habe)

Existiert /var/log/isdn.log?
Steht in /var/log/isdn.log etwas aktuelles drin?
Stehen in der /var/log/messages Meldungen vom isdnlog? Also das Wort »isdnlog« mit zusätzlichen Angaben, wie zB:
May 18 19:42:14 route66 kernel: isdn_tty: call from xxxxxxx -> xxxxxxx ignored
May 18 19:42:14 route66 isdnlog: May 18 19:42:14 * Call to tei 127 from +49xxxxxxx,  on Autodialout  RING (3.1 kHz audio)
May 18 19:42:26 route66 isdnlog: May 18 19:42:26 tei 68 calling ? with ? HANGUP

Wenn obriges mit nein beantwortet wurde, dann läuft wohl der blöde isdnlog nicht. Blöd, weil ich nun auch nicht weiss, wie man den wo anmacht:-(
Da müsst Ihr dann selbst nach suchen, was da nicht stimmt, sorry.




Copyright
Das Copyright für diese Seiten liegt bei Arnim Staschke, Flensburg, Germany. Für die Nutzung dieser Seiten auf anderen Rechnern oder die Verbreitung dieser Seiten gilt folgendes: Die Seiten dürfen in ihrer Ursprungsform unverändert kostenlos weiterverbreitet werden, solange dieser Copyrighthinweis, der Name des Authors und die Herkunft erhalten bleibt. Die Weitergabe, die komerzielle Nutzung, auch in schriftlicher Form, gegen Gebühr oder gegen Entgelt ist untersagt, bzw. bedarf der ausdrücklichen schriftlichen Zustimmung des Authors. Links auf diese Dokumentation sowie das Kopieren auf Resourcen im Internet sind ausdruecklich erlaubt, solange ein deutlicher Hinweis auf die Herkunft und das Copyright, sowie ein Link auf die Originalseiten enthalten bleibt.


Homepage des Authors
www.staschke.de
eMail an den Author
Arnim Staschke

made by staschke 01.10.2000