Achtung: Der Artikel ist völlig veraltet. Ich empfehle den Betrieb eines eigenen kleinen Asterisk-SIP-Servers auf auf einem Raspberry Pi, der sich bei mir seit Jahren bewährt hat:
Asterisk als SIP-Server auf einem Raspberry Pi – Zusammenfassung der Installation und Konfiguration – 15. März 2021: Seit einem halben Jahr läuft bei mir ein SIP-Server mit Asterisk auf einem Raspberry Pi 3 B+. Meine nachfolgenden Beiträge beschreiben die Installation des Betriebssystems Raspbian für die erste Inbetriebnahme des Raspberry, die Installation und Konfiguration von Asterisk, die Installation von Fail2Ban und der VoIP Blacklist VoiIPBL für den Schutz vor unerlaubten Eindringlingen und was bei einem Stromausfall zu beachten ist, um das System wieder herstellen zu können. – weiter – |
Nach 9 Jahren Pause habe ich mit Erfolg dieses Projekt wieder in Angriff genommen. Mit der kostenlosen Software Asterisk (für Windows oder Linux) lassen sich mit wenig Konfigurationsaufwand Haustelefonanlagen im eigenen Netzwerk realisieren, die sich auch über das Internet erweitern lassen, womit man dann seinen eigenen kleinen SIP-Provider geschaffen hat, mit dem sich im Prinzip weltweit kostenlos telefonieren lässt. Asterisk ist eigentlich ein Programm für Linux. Wer kein Linux hat, kann auch eine kostenlose Version für Windows wählen, auf die die nachfolgende, kochbuchartige Anleitung basiert. Wer seinen eigenen SIP-Server permanent durchlaufen lassen möchte, kann ihn auf einem Raspberry Pi installieren.
Nachtrag vom 10.03.2019: Inzwischen ist seit dem Februar 2019 aus dem Projekt eine vollwertige Nebenstelleanlage auf einer Fritz!Box 7170 mit Zugang zu öffentlichen Telefonnetzen geworden. Ausführliche Beschreibung in zwei Teilen:
1. Telefonanlage mit Asterisk auf einer Fritz!Box als SIP-Server
2. Nebenstellenanlage mit Asterisk auf einer Fritz!Box 7170
Viel Erfolg beim Nachmachen! Zum Üben und als Einstieg für totale Anfänger ist es aber immer noch praktisch auf Windows mit AsteriskWin32 anzufangen. Allerdings klappt es unter Windows nur als Telefonanlage ohne Zugang zum öffentlichen Telefonnetz und ohne Einbindung fremder Sip-Server. Telefonate über das Internet gelingen von Nebenstelle zu Nebenstelle. Nur ist es keine Dauerlösung seinen Windows-Rechner 24 Stunden am Tag und 365 Tage im Jahr durchlaufen zu lassen.
Wie soll ich mit Asterisk beginnen?
Auf jeden Fall so, dass man mit geringstem Aufwand Erfolgserlebnisse verbuchen kann. Das motiviert tiefer in die Konfiguration von Asterisk einzusteigen. Zuerst installieren wir Asterisk auf Windows und dann konfigurieren wir eine kleine Haustelefonanlage mit zwei Telefonanlagen. Danach versuchen wir mit dieser Haustelefonanlage über das Internet zu telefonieren. Schließlich erweitern wir die Telefonanlage mit Anrufbeantwortern. Wer Linux bzw. Ubuntu verwendet, kann diese Experimente natürlich vorzugsweise mit der Linux-Version von Asterisk vornehmen. Für mich ist Windows für Experimente mit Asterisk recht praktisch. Für den Dauerbetrieb eines kleinen Mini-Sip-Server empfiehlt sich eine Raspberry Pi oder eine alte Fritz!Box, die noch einen Telnet-Zugang erlaubt. Mehr dazu weiter unten im Text.
Was brauche ich für meine Experimente?
Wir benötigen einen telefoniefähigen Router oder z.B. eine als Client geschaltete Fritz!Box Fon und einen Rechner mit Windows 2000, XP, Win7 für für die Windows-Version von Asterisk. AsteriskWin32 habe ich auf Windows XP und Windows 7 getestet. Auf Windows 10 läuft es bei mir leider nicht. Diesem Rechner, auf dem Asterisk läuft, müssen wir eine statische IP zuweisen. Selbstverständlich benötigen wir für eine Haustelefonanlage noch mindestens zwei Telefone, die zum Beispiel über ein Fritz!Box betrieben werden.
Es reichen ganz normale analoge Telefone aus, die wir mit dem Router oder der Fritz!Box Fon verbinden. Als Telefone gebe ich schnurlosen den Vorzug, weil mit diesen die Experimente bequemer durchzuführen sind. Wollen wir mit unserer Haustelefonanlage noch über das Internet telefonieren, benötigen wir zusätzlich einen Internet-Anschluss.
Wo bekomme ich Asterisk (AsteriskWin32) für Windows?
Das kostenlose Windows-Programm AsteriskWin32 von WillVoiceliegt unter http://www.asteriskwin32.com/ zum Download bereit. Dort gehen wir auf Download und laden uns die 17 MByte große Version Setup.60.exe herunter, welche auf Asterisk 1.2.14 beruht.
Installation von AsteriskWin32
Das Programm wird mit einer Installationsroutine geliefert. Zu beachten ist nur, dass wir nicht wie vom Programm vorgeschlagen es unter c:\cygroot installieren, sondern vorher einen Ordner Asterisk anlegen und dort das Programm unter Laufwerksbuchstabe:\Asterisk\cygroot installieren. Außerdem wählen wir wie in der Voreinstellung angegeben die volle Installation:
Konfigurationsdateien von AsteriskWin32 anpassen
AsteriskWin32 kommt mit einer Vielzahl von vorkonfigurierten Konfigurationsdateien daher, die unsere Experimente und andere Dienste von Windows (z.B. Soundkarte) stören würden. Deshalb deaktivieren einige der Dateien, indem wir sie umtaufen, z.B. erhalten sie statt der Endung .conf die Endung .conf1 und werden dadurch nicht mehr angesprochen. Die Konfigurationsdateien befinden sich im Ordner Laufwerksbuchstabe:\Asterisk\cygroot\asterisk\etc. Folgende Dateien habe ich umgetauft:
alsa.conf
celliax.conf
dundi.conf
enum.conf
features.conf
iax.conf
iaxprov.conf
indications.conf
manager.conf
meetme.conf
modem.conf
osp.conf
phone.conf
privacy.conf
res_odbc.conf
sip_notify.conf
skinny.conf
vpb.conf
zapata.conf
voicemail.conf
indications.conf
extensions.conf
sip.conf
In die iax.conf und celliax.conf schreiben wir nur [general] hinein. Weiter steht dort nichts. Sicherlich muss man nicht alle aufgeführten Conf-Dateien umbenennen. Aber so funktioniert es bei mir. Auf jeden Fall sollte man die celliax.conf verändern, da sie die Soundkarte anspricht, was zu Fehlermeldungen und unter Umständen zum Absturz des Rechners führt.
Erstellen neuer Konfigurationsdateien für eine Haustelefonanlage mit zwei Telefonen
Für unsere ersten Experimente müssen wir nur die Konfigurationsdateien indications.conf, extensions.conf und sip.conf verändern. Das machen wir mit dem Windows-Programm Notepad. Andere Textverarbeitungsprogramme wie Word sind wegen ihrer Steuerzeichen ungeeignet.
indications.conf
Die indications.conf erzeugt die landesspezifischen Klingeltöne. Für Deutschland muss sie wie folgt aussehen:
[general]
country=de
[de]
description = Germany
ringcadance = 1000,4000
dial = 425
ring = 425/1000,0/4000
busy = 425/480,0/480
congestion = 425/480,0/480
callwaiting = 425/2000,0/6000
dialrecall = 425/500,0/500,425/500,0/500,425/500,0/500,1600/100,0/900
record = 1400/500,0/15000
info = 950/330,0/200,1400/330,0/200,1800/330,0/1000
Die ursprüngliche indications.conf ist auf us, also auf die us-amerikanischen Klingeltöne eingestellt. Wir können sie auch in der mitgelieferten Form belassen.
sip.conf
Die sip.conf ist zusammen mit der extensions.conf die wichtigste Konfigurationsdatei für unsere Haustelefonanlage. Wir müssen für die Haustelefonanlage im Prinzip nur die sip.conf und extensions.conf neu schreiben. Die nachfolgend vorgestellte sip.conf können wir fast unverändert übernehmen. Nur unter localnet muss die IP abgeändert werden, wie es im Kommentar beschrieben ist. Wenn wir nur zwei Haustelefone verbinden möchten, reicht folgender Inhalt aus, den wir herauskopieren können.
[general]
port=5060 ; Dieser Port wird für die Kommunikation der Telefone benötigt.
bindport=5060
context=telefone ; [telefone] muss in der extensions.conf vorkommen.
bindaddr=0.0.0.0 ; Mit 0.0.0.0 werden alle Geräte im Netzwerk angsprochen.
disallow=all ; damit werden erst einmal alle Codec
; (Übertragungsarten) ausgeschlossen.
allow=gsm ; und der Reihe nach absteigend zugelassen, wenn sie mit „allow“
allow=ulaw ; gekennzeichnet sin.
allow=alaw
localnet=192.168.1.65/255.255.255.0 ; Das ist die
; IP-Adresse des Rechners, auf dem
; der Asterisk-Server installiert wurde.
; Das ist die einzige Anpassung der Konfiguration.
nat=yes ; kann auch auf no stehen, wird mit yes nur für
; Verbindungen hinter dem Router über das Internet beötigt.
insecure=invite
qualify=yes ; Mit „yes“ können wir kontrollieren,
; ob die Telefone im LAN oder über das Internet
; erreicht werden. Mit „no“ abschalten.
; Haustelefon 1
[1001] ; die Telefonnummer des ersten Haustelefons
type=friend ; mit friend darf vom Telefon sowohl gerufen als auch angerufen werden.
context=a ; kommt in der extensions.conf vor
secret=abc ; Das Passwort (Kennwort), hier abc, kann auch weggelassen werden
host=dynamic ; Asterisk findet die IP-Adresse des Telefons bzw. der Fritz!Box oder
; des Routers automatisch.
username=1001 ; muss mit der Telefonnummern in den eckigen
; Klammern übereinstimmen.
canreinvite=no
port=5060
dtmfmode=rfc2833 ; bestimmt, wie die Wählzeichen erzeugt werden.
; Haustelefon 2
[1002] ; das zweite Haustelefon mit der Nummer 1002.
type=friend
context=a
secret=abc
host=dynamic
username=1002
canreinvite=no
port=5060
dtmfmode=rfc2833
callerid = „Hans Mustermann“ <1002>
; die callerid ist optional und lässt den Namen des Anrufers
; auf dem Diplay erscheinen. Der Name muss in
; Anführungszeichen stehen.
Mehr ist das nicht. Die Kommentare sind mit einem Semikolon (;) eingeleitet. Die beiden Telefone haben die Nummern 1001 und 1002. Die IP des Rechners mit dem Asterisk lautet in diesem Beispiel 192.186.1.65, was wir unter dem Eintrag localnet eventuell noch anpassen müssen.
extensions.conf
In die extensions.conf müssen wir die Wählregeln der beiden Telefone eintragen:
[general]
[telefone]
[a]
exten => 1001,1,Dial(SIP/1001,60,r)
exten => 1002,1,Dial(SIP/1002,60,r)
Das ist alles! Nach 60 Sekunden wird das Klingeln abgebrochen. Würden wir „exten => 1001,1,Dial(SIP/1002,60,r)“ schreiben, hätte dies zur Folge, das Telefon 1002 klingelt, wenn wir 1001 wählen. Aber solche Scherze wollen wir ja vermeiden.
Einrichten der beiden Haustelefone
Wie man die beiden Haustelefone einrichtet, möchte ich am Beispiel der Fritz!Box Fon zeigen. Bei anderen Fabrikaten wird es so ähnlich sein. Die Fritz!Box Fon kann sowohl als Router oder als Client geschaltet werden. Als Client ist sie wie ein Computer ein zusätzliches Gerät in einem Netzwerk (LAN). Sowohl als Router oder Client besitzt die Fritz!Box eine IP-Adresse, über welche die angeschlossenen analogen Telefone gefunden werden können.
Die Fritz!Box Fon hat auf ihrer Rückseite zwei mit Fon1 und Fon1 gekennzeichnete Anschlüsse, mit denen wir die „hundsgewöhnlichen“ analogen Telefone verbinden. Das Verbindungskabel hat an beiden Enden RJ11-Stecker (http://de.wikipedia.org/wiki/RJ-Steckverbindung). Es reicht, wenn die beiden mittleren Adern vorhanden sind. Die Adern können auch vertauscht sein. Das macht nichts.
Die Fritz!Box wird wie folgt konfiguriert. Wir geben als Adresse im Web-Browser die IP der Fritz!Box ein. Dann gehen wir auf Einstellungen -Telefonie – Internetelefonie. Dort angekommen klicken wir auf „Neue Internetrufnummer“. Es öffnet sich eine Oberfläche, die wie folgt aussieht, nachdem wir die Daten für das Telefon 1 angemeldet haben:
Einträge für das Telefon 1 mit der Nummer 1001. Das Kennwort lautet „abc“. Unter Registrar tragen wir die IP-Nummer des Rechners ein, auf dem Asterisk installiert wurde. Anschließend auf „Übernehmen“ klicken und das Telefon 2 eintragen. Eventuell „Internetrufnummer für die Anmeldung verwenden“.
Entsprechend müssen wir die Daten für das Telefon 2 unter „Neue Internetrufnummer“ eintragen. Die zwei Haustelefone erscheinen dann wie folgt in der Fritz!Box auf der Liste der registrierten Telefone:
Nun gehen wir zur Sicherheit in der Fritz!Box Fon auf Einstellungen -Telefonie – Telefoniegeräte und stellen die beiden Telefone so ein, dass sie nicht auf ihre eigenen Telefonnummern reagieren können. Eventuell kann dies notwendig sein.
Starten von Asterisk
Auf unserem Desktop finden wir das Symbol „PBX Manager & Console“, welches wir anklicken, um das Fenster von Asterisk zu öffnen, das nachfolgend abgebildet ist:
Damit Asterisk läuft, müssen wir noch Menüleiste -Tools – PBX Start ausführen. Eventuell muss dieser Vorgang wiederholt werden. Nach einer Weile oder dem Neustart des Rechners sehen wir die beiden Telefone 1001 und 1002 im Asterisk-Fenster. Da wir einige Konfigurationsdateien entfernt hatten, erscheinen beim Start einige Warnhinweise, die uns nicht weiter interessieren.
Bei anderen Versionen ist der Reihe nach Menüleiste Commands – Peers – SIP zu wählen, um die angemeldeten Telefone zu sehen.
In der unteren schwarzen Leiste CLI> können wir den Befehl sip show peer 1001 ausführen:
Wir sehen dann, an welchem Gerät das Telefon erfolgreich angmeldet ist. Wenn wir jetzt auf die Startseite der Fritz!Box gehen, sehen wir auf ihrer Startseite (hoffentlich) durch grüne Punkte gekennzeichnete die erfoglreiche Anmeldung der beiden Telefone 1001 und 1002.
Nun können wir innerhalb unseres lokalen Netzwerkes telefonieren! Vom Telefon 1 wählen wir *126#1002 und vom Telefon 2 wählen wir *127#1001.
Über das Internet telefonieren
Mit wenigen Erweiterungen in der sip.conf und extensions.conf können wir auch über das Internet telefonieren. Der Abschnitt [general] der sip.conf muss dann wie folgt erweitert werden:
[general]
port=5060
bindport=5060
context=telefone
bindaddr=0.0.0.0
disallow=all
allow=gsm
allow=ulaw
allow=alaw
srvlookup=yes ; muss auf yes stehen
externhost=blabla.dyndns.org ; Hier tragen wir eine feste IP-Adresse ein, die wir uns bei DynDNS
; besorgt haben.
; externip=83.266.11.73 ; Alternative: IP-Adresse unseres Internetanschlusses, falls sich
; diese nicht ändert.
localnet=192.168.1.65/255.255.255.0
nat=yes ; damit die IP-Adresse des LAN für das Internet umgesetzt wird.
insecure=invite
qualify=3000
maxexpirey=36000
defaultexpirey=600
tos=0x04
registerattempts=0 ; versucht sich ewig zu connecten.
registertimeout=1 ; kontrolliert jede Sekunde die Internet-Verbindung
Die „feste IP-Adresse“ wie blabla.dyndns.com, welche wir unter externhost eintragen, können wir uns z.B bei http://www.dyndns.com/ kostenlos beschaffen. Entsprechend müssen wir in unserem Router diese IP-Adresse noch eintragen, damit die dynamische IP regelmäßig aktualisiert wird. Unsere aktuelle IP-Adresse, welche wir alternativ unter externip eintragen könnten, können wir z.B. unter http://www.aktuelle-ip.de/ erfahren.
Meine IP |
Das obige kleine Widget von https://www.meine-aktuelle-ip.de zeigt die aktuelle IP-Adresse des eigenen Internetanschlusses, welche wir unter externip eintragen können. Leider ändert sich diese externe IP-Adresse mit der Zeit.
Außerdem müssen wir in der sip.conf ein drittes Telefon einrichten, das über das Internet erreichbar ist:
[1003]
type=friend
context=a
secret=wasweisich ; das ist ein fiktives Kennwort
host=dynamic
username=1003
canreinvite=no
port=5060
dtmfmode=rfc2833
Dies geschieht also nach demselben Muster, das wir bereits von den beiden Haustelefonen kennen. Dieses Telefon mit der Nummer 1003 muss natürlich noch seinen entsprechenden Eintrag in der extensions.conf erhalten, so dass die vollständige extensions.conf wie folgt aussieht:
[general]
[telefone]
[a]
exten => 1001,1,Dial(SIP/1001,60,r)
exten => 1002,1,Dial(SIP/1002,60,r)
exten => 1003,1,Dial(SIP/1003,60,r)
Mehr müssen wir nicht an der sip.conf und extensions.conf verändern. Eine gute Beschreibung der Asterisk-Befehle ist unter http://www.voip-info.org/wiki/view/Asterisk+config+sip.conf zu finden.
Zu guter letzt muss sich der Anschluss 1003 noch am anderen Ende des Internets anmelden. Dies erfolgt z.B. in der Fritz!Box des auswärtigen Telefons nach demselben Prinzip, wie bereits weiter oben beschrieben. Aber unter Registrar muss dort jetzt blabla.dyndns.org:5060 bzw. 83.266.11.73:5060 stehen.
Nachdem wir die beiden Konfigurationsdateien sip.conf und extensions.conf verändert haben, müssen diese noch von Asterisk übernommen werden. Das können wir mit Menüleiste – Tools – PBX Reload erledigen. Jetzt brauchen wir noch etwas Geduld und Glück, bis unser Asterisk die Rückmeldung vom auswärtigen Telefon erhält und wir können über das Internet kostenlose Telefongespräche mit unserem minimalistischen SIP-Provider führen.
NAT-Probleme beim Router: Leider gibt es mit manchen Routern Schwierigkeiten, mit der Außenwelt zu Verbindung aufzunehmen. Oft wird das Telefongespräch nach ein paar Minuten abgebrochen oder es wird nur der Ton in eine Richtung übertragen Dem Thema hat sich http://www.voip-info.org/wiki/v …. tions ausführlich gewidmet.
Fazit: Zum Üben ist AsteriskWin32 auf jeden Fall eine interessante Methode, um sich mit Asterisk und SIP vertraut zu machen. Wer kostenlos über das Internet telefonieren möchte, braucht aber keinen eigenen SIP-Server. Es gibt genügend VoIP-Anbieter, welche kostenlose Telefonnummern anbieten, mit denen man innerhalb des glechen Anbieters kostenlos telefonieren kann. Unter IP-Telefonie gibt es eine unvollständige Liste der VoIP-Anbieter. Bemerkenswert dabei ist, dass Telefonnummern solcher VoIP-Provider auch für eine Haustelefon-Anlage eingesetzt werden können, wenn der Router Tag und Nacht läuft und mit dem Internet verunden ist.
Anmeldung der Nummer 10 in der Fritz!Box 7360. Unter Registrar ist diesem Fall die Locale IP desjenigen Rechners einzutragen, auf dem der Asterisk-SIP-Server läuft. Nach dem Doppelpunkt kommt der Port des SIP-Servers. Hier Port 5064, üblich ist der Port 5060. „Anmeldung immer über eine Internetverbindung“ in diesem Fall nicht ankreuzen, da sich die Fritzbox im gleichen LAN wie der Asterisk-Server befindet. Wegen des Scrollens ist die Darstellung auf zwei Bilder verteilt.
Anmeldung der Nummer 1003 in CSipSimple für Android-Smartphones. Rot vertuscht ist die IP-Adresse meines Internetanschlusses, über den der Asterisk-Server betrieben wird. Da der SIP-Server hier den Port 5064 verwendet, muss dies hinter dem Doppelpunkt stehen.
Nachtrag vom 29.12.2018 zur Portweiterleitung: Nach langer Pause habe ich das Projekt wieder angepackt. Zum Einsatz kam auf Windows 7 die Version Asterisk 1.2.26.2, Download Setup-066b.exe. Installiert habe ich die „Full Installation“.
Die Konfigurationsdateien befinden sich im Pfad C:\cygroot\asterisk\etc. Dort habe ich folgende Dateien durch Umtaufen deaktiviert: alsa.conf, celliax.conf und iax.conf. Kann sein, dass es nicht notwendig ist.
Das Ziel war es jetzt auch über das Internet telefonieren zu können. Dazu muss der NAT des Routers überwunden werden und einige Portfreigaben im Router vorgenommen werden.
In meinem Router (Neatgear) ließ sich der Port 5060 nicht weiterleiten. Stattdessen konnte ich UDP Port 5061 bis 5068 weiterleiten. Nur UDP wählen. Bei TCP geht es nicht. UDP und TCP gleichzeitig führte zu Angriffen, bei denen jemand durch Probieren die Passwörter der Nummern-Accounts knacken möchte.
Da versehentlich UDP und TCP im Router geöffnet wurden, kam es zu Angriffen aus Frankreich, um die Passwörter der Telefon-Accounts zu knacken.
Portforwarding in meinem Router. Nur UDP öffnen. Unter „Internal IP Adress“ ist die Locale statische IP des Rechners, auf dem sich der Asterisk-SIP-Server befindet, einzutragen.
Im Router sollte bei Verbindungproblemen „SIP ALG“ abgeschaltet sein, wie dies hier bereits unter „NAT Filtering“ der Fall ist.
In der sip.conf ersetzte ich alle Portei“nträge 5060 durch 5064. Folglich musste ich auch bei der Anmeldung in der Fritz!Box oder CSipSimple als Registrar z.B. 94.333.11.450:5064 eingeben. Dabei enstspricht die 94.333.11.450 der IP meines Internetanschlusses, den ich über https://www.wieistmeineip.de/ herausfinde. Diese IP muss auch unter externip in der sip.conf eingetraten sein. Befinden sich die Nummer innerhalb des eigenen LANs z.B. auf der Fritz!Box, muss als Registrar die lokale IP des Rechners, auf dem der Asterisk-Sip-Server läuft gewählt werden, z.B. 192.168.1.123:5064.
Weiterhin habe ich für RTP die UDP-Ports 5004 bis 5023 im Router unter Portforwarding weitergeleitet. Entsprechend muss dann die rtp.conf wie folgt konfiguriert sein.
Inhalt der gesamten rtp.conf für die RTP-Ports
Die Asterisk-Software auf dem USB-Stick an einer älteren Fritz!Box (hier Fritz!Box 7170) verwandelt diese in einen Sip-Server, über den sich Telefonate innerhalb des LANS und über das Internet abwickeln lasssen. Der Sip-Server stellt also eine kleine Mini-Telefongesellschaft für Gratis-Telefonate dar ( die Anleitung dazu unter Telefonanlage mit Asterisk auf einer Fritz!Box als SIP-Server ).