Bereit für StaSi 2.0 - Teil 3
January 10, 2008 | Chaos 10, 3174 | 13:42
in letzter zeit habe ich etwas freizeit damit verbracht, mich mit der open source pbx software asterisk für linux zu beschäftigen. es ist ein sehr mächtiges system, mit dem man isdn und voip systeme beliebig miteinander verknüpfen kann. man kann seine eigene telefonanlage implementieren mit funktionen, die klassischerweise providern, firmen-pbx systemen und telefonanbietern vorbehalten waren.

dabei kam mir die idee, wie man solch ein asterisk system dazu nutzen kann, es den StaSi 2.0 behörden etwas zu erschweren, die eigenen telefonverbindungsdaten nachzuvollziehen. gleichzeitig kann man seine mobiltelefongebüren extrem reduzieren und ein paar nette spielereien wie anrufbeantworter oder telefonmenüs realisieren.
benötigt werden ein linux system (z.b. ubuntu), die aktuelle asterisk software, ein voip account bei einem sip provider der einem eine festnetznummer zur weiterleitung ins voip netz (direct inward dialing - DID) zur verfügung stellt und gleichzeitig die möglichkeit bietet, vom voip netz in das reguläre telefonnetz zu telefonieren (direct outward dialing - DOD) - am besten mit zwei kanälen und einer flatrate für fest- und mobilnetze.

den asterisk server kann man nun mit den zugangsdaten des sip providers füttern und anschliessend so konfigurieren, dass er callback beherrscht. der von mir angestrebte ablauf eines anrufs soll nun folgendermassen aussehen:
- mit meinem handy rufe ich die DID nummer meines asterisk servers an, lasse es einige male klingeln und lege wieder auf.
- der asterisk server nimmt meinen anruf wahr und merkt sich meine callerID
- der asterisk server ruft mich über DOD auf meiner telefonnummer zurück.
- ich nehme den anruf entgegen und gebe dem anrufenden asterisk ein vorher festgelegtes numerisches passwort
- der asterisk server verifiziert mein passwort und gibt mir das freizeichen deszweiten DOD kanals.
- mittels dtmf tönen kann ich nun eine beliebige telefonnummer eingeben und der asterisk vermittelt den anruf
findet man einen günstigen sip anbieter mit DID und DOD, kann man über diese methode einiges an geld sparen, da bei jedem gespräch lediglich der asterisk server der anrufende teilnehmer ist. die verbindungsdaten des eigenen telefons zeigen ausschließlich die anrufe des asterisk servers und vielleicht hat man ja auch das glück einen ausländischen sip provider zu finden oder einen, der die DID/DOD verbindungsdaten nicht speichert…
genial wäre es, wenn man mehrere asterisk server über ein tor-ähnliches netzwerk via ssh tunnel miteinander verbinden würde, deren exit points verschiedene DOD provider sind. vielleicht kommt so etwas ja in naher zukunft - ich selbst habe leider zuwenig ahnung vom programmieren, geschweige denn zeit, so etwas zu realisieren.

hier nun ein kurzes how-to, wie man asterisk auf einem linux system installiert und für die oben beschriebene methode konfiguriert:
1. Asterisk Installation
Dependencies Installieren:
sudo -s (als root arbeiten)
uname -r (kernelversion herausfinden -> 2.6.XXXXX)
apt-get install linux-sources linux-headers-XXXXX (ergebnis von “uname -r”)
apt-get install build-essential autoconf automake libtool flex bison libssl-dev libnewt-dev libncurses5-dev
Quellen herunterladen und entpacken:
cd /usr/local/src
wget http://downloads.digium.com/pub/asterisk/asterisk-1.4.17.tar.gz
wget http://downloads.digium.com/pub/asterisk/asterisk-addons-1.4.5.tar.gz
tar xzvf asterisk-1.4.17.tar.gz
tar xzvf asterisk-addons-1.4.5.tar.gz
Quellen kompilieren und installieren:
cd /usr/local/src/asterisk-1.4.17/
./configure
make
make install
make samples
cd /usr/local/src/asterisk-addons-1.4.5/
./configure
make
make install

2. Asterisk konfigurieren
SIPLOGIN, SIPPASSW und SIPPROVIDER.TLD mit den entsprechenden daten des eigenen sip anbieters (z.b. sipgate.de) ersetzen. CALLERIDNUM ist die Telefonnummer des Telefons, welches dazu berechtigt sein soll, die Callbacks auszulösen und zu erhalten. TELEFONNUMMER ist die beliebige Telefonnummer, welche im Display als Anrufer des Rückrufs erscheinen soll (z.B. die DID Nummer)
/etc/asterisk/sip.conf
[general] SIPLOGIN
port = 5060
bindaddr = 0.0.0.0
context = sip-in
qualify = no
disable = all
allow = alaw
allow = ulaw
allow = g729
allow = gsm
allow = slinear
srvlookup = yes
canreinvite = yes
regcontext = local-sip
register =:SIPPASSW@SIPPROVIDER.TLD/001
[sip-out]SIPLOGIN
type=friend
insecure=very
nat=yes
username=
fromuser=SIPLOGIN
fromdomain=SIPPROVIDER.TLD
secret=SIPPASSW
host=SIPPROVIDER.TLD
qualify=yes
/etc/asterisk/extensions.conf
[sip-in]CALLERIDNUM
exten => 001,1,NoOp(Incoming call from # ${CALLERID(num)})
exten => 001,n,GotoIf($[ "${CALLERID(num)}" = ""]?callback,s,1)
[callback] TELEFONNUMMER >>
exten => s,1,NoOp(Auflegen und Rueckruf)
exten => s,2,Hangup()
exten => h,1,System(echo channel: SIP/${CALLERID(num)}@sip-out > /tmp/${CALLERID(num)})
exten => h,2,System(echo context: disa-out >> /tmp/${CALLERID(num)})
exten => h,3,System(echo extension: ${CALLERID(num)} >> /tmp/${CALLERID(num)})
exten => h,4,System(echo priority: 1 >> /tmp/${CALLERID(num)})
exten => h,5,System(echo callerid: /tmp/${CALLERID(num)})
exten => h,6,System(echo sleep 10 > /tmp/${CALLERID(num)}.2)
exten => h,7,System(echo cp /tmp/${CALLERID(num)} /var/spool/asterisk/outgoing >> /tmp/${CALLERID(num)}.2)
exten => h,8,System(chmod 775 /tmp/${CALLERID(num)}.2)
exten => h,9,System(/tmp/${CALLERID(num)}.2)
exten => h,10,Hangup()
[local-sip]
exten = s,1,Dial(SIP/${EXTEN}@sip-out)
exten = s,2,Hangup
[disa-out]
exten => s,1,Authenticate(6373)
exten => s,2,Read(FONNUM)
exten => s,3,Dial(SIP/${FONNUM}@sip-out)

3. Asterisk starten
Mit dem Befehl “asterisk” lässt sich der asterisk server starten und mit anschließendem “asterisk -r” kann man sich in die konsole einloggen, wo man statusmeldungen etc. bekommt. weitere infos findet man beim googlen…
die realisierung wurde umgesetzt mit den informationen aus folgenden links:
tecchannel.de workshop: asterisk verbindung zu sip
nerdvittles: getting remote dialtone with asterisk
phreak on!

2 Comments »
RSS feed for comments on this post. TrackBack URI























Hi,
super Beitrag habe noch eine Frage die Firma Sparrruf hat eine möglichkeit des callbacks welche mich für zu Hause Interressiert und zwar ruft man die Nummer von sparruf an und hängt die Zierufnummer einfach hintendran sozusagen als durchwahl. Dasgerät weist ab und ruft zurück. Gleichzeitig wird die Verbindung zur Zielrufnummer angewählt und die Verbinbdung kommt Zustande.
Der Vorteil man kann seine Festnetztrufnummer+Zielrufnummer gleich im Telefonbuch abspeichern und muß nicht über den umständlichen Weg des Tonfolgen senden gehen. Hast du vielleicht eine Idee wie man dies Implementieren könnte?
Comment by Machpela — March 18, 2008 #
hi machpela,
das ist seitens des asterisk relativ einfach zu implementieren, aber ich habe noch keinen voip provider mit dialin nummer gefunden, der angehängte nummern mit überträgt. sipgate & co. ignorieren einfach den kram, der nach der nummer kommt - auch mit * und # als trenner.
Comment by kiritan:flux — March 23, 2008 #