Einfache Asterisk-Konfiguration für zwei SIP-Telefone für die ersten Schritte mit Asterisk

In English——På svenska——En español——En français

Wichtiger Hinweis: Leider verfälschen die Google-Übersetzungen die Quellcodes und manche Befehle. Bitte öffnet den Quellcode in einem anderen Fenster, wie es das nachstehende Bild zeigt. Von dort lassen sich die Quellcodes auch leichter herauskopieren:

6.11.2022

Für den Einsteiger stellt dieser Artikel eine einfache Asterisk-Konfiguration vor, die es ermöglicht mit zwei Telefonen mit dem SIP-Protokoll über das Internet zu telefonieren. Wenn dies klappt, haben wir die größte Hürde für den Einstieg in Asterisk genommen.

Für den ersten Versuch benötigen wir einen Linux-Rechner, wobei ein Raspberry besonders geeignet sind. Als Telefone können vorerst zwei Smartphones mit einer Softphone-App wie zum Beispiel SessionTalk dienen. Der Linux-Rechner beziehungsweise der Raspberry ist mit einem Netzwerkkabel mit dem LAN zu verbinden. WLAN ist zu instabil und könnte eine unnötige Fehlerquelle darstellen.

Ein kleiner Raspberry Pi 3 ist bestens als Asterisk-Server geeignet.

Die Konfiguration besteht aus zwei Telefonen für die Nummern 5001 und 5002, mit denen wir über das Internet telefonieren können. Zusätzlich gibt es noch den Echotest auf der Nummer 5000.

Wir brauchen noch zwei Telefone. Weiter unten schlage ich das kostenlose Android-Softphone SessionTalk vor und erkläre dort wie der Account in die App einzutragen ist. Natürlich geht es auch mit ATAs, mit einer FritzBox oder mit SIP-IP-Telefonen.

Portweiterleitung im Router: Für das hier vorgestellte Beispiel sind im Router folgende Portweiterleitungen vorzunehmen:

UDP 5068 – 5069
UDP 10205 – 10500

Wenn möglich, ist SIP  ALG zu deaktivieren.

Installation von Asterisk: Ich gehe davon aus, dass die ersten Schritte mit Asterisk auf einem Raspberry Pi laufen. Asterisk wird installiert mit:

“sudo apt-get update”
“sudo apt-get install asterisk”

Die Konfigurationsdateien für Asterisk: Sie befinden sich sich im Pfad etc/asterisk . Wir ersetzen dort die vorhandene sip.conf, extensions.conf und rtp.conf. Wenn wir auf Windows editieren, ist die Zeichen-Kodierung UTF-8 zu verwenden. Als Editor ist Notepad++ empfehlenswert.

Nachfolgende liegen die drei Dateien in einer Zip-Datei für Download vor:

simple-asterisk-configuration for beginners_6Nov2022

Anklicken, Herunterladen, Entpacken, sip.conf anpassen und die drei Dateien nach etc/asterisk kopieren. Los gehts.

sip.conf:

; sip.conf tested on Asterisk 16.2.1 
; 6. November 2022 by Volker Lange-Janson SM5ZBS
; http://www.asteriskdocs.org/en/2nd_Edition/asterisk-book-html-chunk/asterisk-APP-A-SECT-2.html
; https://github.com/asterisk/asterisk/blob/master/configs/samples/sip.conf.sample
;
[general]
port=5068 ; don´t use 5060 Portforwarding Router UDB 5068
bindport=5068
context=myphones
bindaddr=0.0.0.0
;
; Jitter-Buffer
; http://www.asteriskdocs.org/en/2nd_Edition/asterisk-book-html-chunk/asterisk-APP-A-SECT-2.html
jbenable=yes
jbforce=yes
jbimpl=adaptive
jbmaxsize=200
jbresyncthreshold=1000
;
; *********************** Security sip.conf *******************************************
; https://www.voipmechanic.com/securing-asterisk.htm
; https://www.elastix.org/community/threads/asterisk-sip-conf-in-deep.120075/
; http://www.asteriskdocs.org/en/2nd_Edition/asterisk-book-html-chunk/asterisk-APP-A-SECT-2.html
alwaysauthreject=yes ; https://community.asterisk.org/t/alwaysauthreject/67458sip
allowguest=no
allowoverlap=no
allowtransfer=no 
allowsubscribe=no
;
; Audio-Codes
disallow=all
allow=alaw
allow=ulaw
allow=gsm
allow=g722
allow=g729
;
srvlookup=yes
;
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; +++++++ Here you have to make changes according to your raspberry +++++++++++++++++
;
; externhost= instead of your externip use a free DynDNS like noip and instert here 
; something like abcdefgh.hopto.org
externip=xx.xxx.xx.xxx 
; insert your public IP as shown on https://www.ipaddress.my/
localnet=192.168.1.111/255.255.255.0 
; 192.168.1.111 is the ip of your Raspberry Pi
; change it, if required
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
insecure=invite
maxexpirey=36000
defaultexpirey=600
canreinvite=no
qualify=yes
nat=force_rport,comedia
;
; https://www.voip-info.org/asterisk-sip-tos/
tos_sip=cs3 ; Sets TOS for SIP packets.
tos_audio=ef ; Sets TOS for RTP audio packets.
;
registerattempts=0
registertimeout=60
;
localnet=192.168.0.0/255.255.0.0
localnet=10.0.0.0/255.0.0.0
localnet=172.16.0.0/12
localnet=169.254.0.0/255.255.0.0
;
call-limit=30
busylevel=30
;
; ############################################################################
; My Phones
;
[5001] ; phone with numeber 5001
type=friend
context=myphones
secret=blabla
host=dynamic
username=5001
canreinvite=no
port=5068
dtmfmode=rfc2833
callerid = "Donald Duck" <5001>
;
[5002] ; phone with numeber 5002
type=friend
context=myphones
secret=dollars
host=dynamic
username=5002
canreinvite=no
port=5068
dtmfmode=rfc2833
callerid = "Dagobert Duck" <5002>
;

extensions.conf:

; extensions.conf for Asterisk 16.2.1
;
[general]
autofallthrough=no
static=yes
writeprotect=no
;
[myphones]
;
exten => 5001,1,Dial(SIP/5001,60,rtT)
exten => 5002,1,Dial(SIP/5002,60,rtT)
;
;
; Echo Test
exten => 5000,1,Answer()                
 same => n,Playback(demo-echotest) 
 same => n,Echo                    
 same => n,Playback(demo-echodone) 
 same => n,Hangup()               

rtp.conf:

; rtp.conf
[general]
rtpstart=10205  ; Portforwarding Router UDP 10205 - 10500
rtpend=10500
;
rtpchecksums=yes
strictrtp=yes

Die drei neuen Konfigurations-Dateien laden: Wenn wir die drei conf-Dateien nach etc/asterisk kopiert haben, müssen wir sie noch laden. Dazu befinden wir uns als root angemeldet mit

“sudo su”

unter Linux und begeben uns in die Asterisk-Konsole:

“asterisk -rvvv”

Dann Laden wir die neuen oder veränderten Konfigurationsdateien mit:

“reload”

Mit “sip reload” laden wir nur die sip.conf neu. Mit “dialplan reload” nur die extension.conf.

Die Account-Daten für die Telefone eintragen: Für die beiden Telefone gelten folgende Account-Daten, die in den ATA , der Fritzbox, einem Softphone oder einem IP-Telefon einzutragen sind. Dabei ist xx.xxx.xx.xxx die aktuelle öffentliche IP und hier im Beispiel 5068 der gewählte SIP-Port laut sip.conf.

Für das Telefon 5001:

phonenumber / user: 5001
registrar: xx.xxx.xx.xxx:5068
Passwort:  blabla

Für das Telefon 5002 gilt das Entsprechende:

phonenumber / user: 5002
registrar: xx.xxx.xx.xxx:5068
Passwort:  dollars

Statt der öffentlichen IP können wir unter “registrar” auch eine freie DynDNS wie abcdefgh.hopto.org:5068 verwenden und eintragen. Das ist zu empfehlen, wenn sich die öffentliche IP des eigenen Internetanschlusses ändert.

Wir können zum Beispiel können für die ersten Versuche die kostenlose Smartphone-App Session Talk aus dem Google Play Store herunterladen und in der App unter “Generic” die Account-Daten eintragen:

Das SIP-Softphone SessionTalk auf einem Smartphone.
SessionTalk, ein praktisches SIP-Softphone für Android und das Iphone – 1.05.2022: SessionTalk ist ein kompaktes und praktisches SIP-Softphone für Android und das Iphone. Die Einrichtung eines SIP-Accounts hat sich als einfach gestaltet. Es ist selbstverständlich kostenlos und kommt ohne Werbung aus. Zum finden ist es zum Beispiel im Google Playstore. SessionTalk ist besonders für Anfänger empfehlenswert. – weiter

Die meisten Fritz!Boxen beherrschen Telefonie mit VoiP
Einen neuen Telefonanschluss in eine Fritz!Box eintragen – 7.11.2022: Eine Schritt-für-Schritt-Anleitung wie man weitere SIP-Accounts in seine FritzBox einträgt. Die Account-Daten erhält man von seinem Telefonanbieter. – weiter

Weitere vertiefende Erklärungen:

Auf einem Raspberry Pi lässt sich ein kompletter Telefonserver betreiben, der seinen Teilnehmern über Landesgrenzen hinweg kostenloses Telefonieren von unterwegs oder daheim ermöglicht.
Asterisk-Telefonserver auf einem Raspberry Pi – Installation und Konfiguration – 2.11.2022: Diese Seite richtet sich an jene, welche einen Asterisk-Telefon-Server auf einem Raspberry Pi betreiben möchten und später ein kleines Netzwerk aus Asterisk-Servern planen, um ein eigenständiges Telefonnetz aufzubauen. Los geht es mit der Installation von Raspbian und Asterisk auf einem Raspberry Pi und dann nach Lust und Laune immer tiefer in die Programmierung von Asterisk.

Selbstverständlich muss es nicht unbedingt ein Raspberry Pi sein. Andere Linux-Rechner können selbstverständlich auch als Plattform für Asterisk dienen. Allerdings sollte ein Telefon-Server im Dauerbetrieb laufen und dafür eignet sich ein Raspberry Pi, weil er sehr wenig Strom benötigt und Hunderte von Telefon-Teilnehmern bedienen kann. – weiter