Asterisk Grundkonfiguration

Asterisk Logo

Über die Konfigurationsdateien im Verzeichnis /etc/asterisk/ wird das Verhalten unserer Asteriskinstallation beinflusst.

Wir bearbeiten nun die einzelnen Konfigurationsdateien, die wir der Reihe nach durchgehen. Wie gewohnt bearbeiten wir die mitgelieferten Vorgabedateien und versehen diese mit entsprechenden Kommentaren. In aller Regel werden Kommentare in den Dateien mit einem Semikolon ; markiert. Somit können wir dann bei Bedarf die reinen Konfigurationsdaten mittels eines egrep-Aufrufes gerafft ausgeben.

In der Datei logger.conf werden folgende Daten der Log-Einträge unseres Asterisk-Servers definiert:

  • Art
  • Format
  • Umfang

Bei der Erstinstallation bzw. bei umfangreichen Test kann es hilfreich sein, die „Gesprächigkeit“ unseres Asterisk-Servers zu erhöhen. Hierzu aktivieren wir die bereits vorhandene Option:

full => notice,warning,error,debug,verbose

Für den Regelbetrieb wird sich unsere Konfiguration aber auf nachfolgende Zeilen beschränken:

# egrep -v '(^\s+;|^;|^$)' /etc/asterisk/logger.conf
[general]
[logfiles]
console => notice,warning,error
messages => notice,warning,error

Den Modullademechanismus von Asterisk bestimmen wir über die Konfigurationsdatei modules.conf.

# egrep -v '(^\s+;|^;|^$)' /etc/asterisk/modules.conf 
[modules]
autoload=yes
preload => func_strings.so
noload => pbx_gtkconsole.so
load => res_musiconhold.so
noload => chan_alsa.so
noload => chan_console.so

general

Der Kanaltyp SIP1) wird über die zentrale Konfigurationsdatei sip.conf definiert.
Im ersten Schritt definieren wir erst einmal den Voicemailserver-Port und auch aktivieren die deutschen Sprachprompts.

# vim /etc/asterisk/sip.conf
; Django 26.11.2010 zentrale Rufnummer für den Voicemailserver
vmexten=60
; Django 26.11.2010 deutsche Promts für alle ausgeben
language=de

Die Gesamt-Konfiguration beschränkt sich demnach erst einmal auf:

# egrep -v '(^\s+;|^;|^$)' /etc/asterisk/sip.conf
[general]
context=default                 ; Default context for incoming calls
allowoverlap=no                 ; Disable overlap dialing support. (Default is yes)
udpbindaddr=0.0.0.0             ; IP address to bind UDP listen socket to (0.0.0.0 binds to all)
tcpenable=no                    ; Enable server for incoming TCP connections (default is no)
tcpbindaddr=0.0.0.0             ; IP address for TCP server to bind to (0.0.0.0 binds to all interfaces)
srvlookup=yes                   ; Enable DNS SRV lookups on outbound calls
vmexten=60
language=de
[authentication]
[basic-options](!)                ; a template
        dtmfmode=rfc2833
        context=from-office
        type=friend
[natted-phone](!,basic-options)   ; another template inheriting basic-options
        nat=yes
        directmedia=no
        host=dynamic
[public-phone](!,basic-options)   ; another template inheriting basic-options
        nat=no
        directmedia=yes
[my-codecs](!)                    ; a template for my preferred codecs
        disallow=all
        allow=ilbc
        allow=g729
        allow=gsm
        allow=g723
        allow=ulaw
[ulaw-phone](!)                   ; and another one for ulaw-only
        disallow=all
        allow=ulaw

phones

Im zweiten Anlauf definieren wir uns nun unsere SIP-Endgeräte. Hierzu legen uns nun pro Endstelle einen Eintrag, nach folgendem Muster an.

[ID]
callerid="Name der Endstelle"
type="User-Type"
username="Username"
secret="Passwort"
mailbox="Mailboxrufnummer"
host="Host-Type"
domain="Registrar"
canreinvite="RTP-Medienstrom Definition"
callgroup="Call-Gruppe"
pickupgroup="Pickup-Gruppe"

Im einzelnen haben die Parameter folgende Bedeutung:

[ID]

ID des SIP-Teilnehmers mit welcher dieser Teilnehmer beim Asterisk-Server bekannt ist. Neben einer reinen numerischen Angabe kann man auch mit Namen und/oder alphanumerischen Kombinationen arbeiten. Der Übersichtlichkeit halber empfiehlt es sich, die ID analog der Rufnummer zu verwenden.

callerid

Überschreibt vom Gerät gesendete die Caller-ID. Diese CallerID besteht in der Regel aus zwei Teilen, dem CallerIDName und CallerIDNum. Mit Hilfe der spitzen Klammern <>, welche die Rufnummer umklammert wird die Nummer vom Namen anbgetrennt.

type

Über den type wird festgelegt, in welcher Richtung der Teilnehmer Verbindungen aufbauen kann/darf. Folgende Richtungen sind festlegbar:
PlantUML Graph
Ein user kann also _nur_ anrufen, ein peer _nur_ angerufen werden und ein friend darf beides.

username

Username, mit dem sich das Endgerät bei der Anmeldung beim Asterisk-Server meldet.

secret

Passwort, welches das Endgerät zusammen mit dem vorgenannten Username bei der Anmeldung am Asterisk-Server verwendet.

mailbox

Definition der Mailbox-Nummer die dem Endgerät zugeordnet werden soll. Dieser Eintrag wird auch für die MWI2), also der Anzeigen von neuen Nachrichten am Endgerät via LED oder Displaynachricht.

host

Festlegung des Hostnamen bzw. Adresse des Endgerätes/Partners. dynamic gibt man an, wenn der Hostname bzw. die IP-Adresse des Hosts nicht bekannt ist, da diese Daten dynamisch vergeben werden.

domain

Festlegung des Domainnamens bzw. der IP-Adresse unseres Asterisk-Servers.

canreinvite

Normalerweise versucht der Asterisk-Server für den Mediendatenstrom (RTP3) ) den direkten Weg von Teilnehmer A zum Teilnehmer B einzuschlagen. Soll der Astrisk-Server auf Eingaben während des Gespräches reagieren, oder wenn sich die Geräte in einem „geNATteten“ Netzwerk befinden, so muss der Server als Proxy fungieren. Mit der Option canreinvite kann kann nun der RTP-Datenstrom beeinflusst werden.

  • yes (default) Normale Einstellung. Asterisk versucht, den direkten RTP-Datenstrom zwischen den beiden Partnern zu etablieren.
  • nonat Den RTP-Medienstrom nur umleiten, wenn sich die Teilnehmer nicht hinter einem NAT befinden und dies für den Asterisk-Server erkennbar ist.
  • update Zum Umleiten sollen anstatt INVITE- UPDATE-Pakete verwendet werden.

callgroup

Definition einer oder mehrerer Call-Groups für das Endgerät. Mehrere Gruppen werden dabei mittels Komma und eine Reihe von Gruppen mit einem Minus - getrennt. Es können insgasamt 64 Gruppen, von 0 bis 63 definiert werden.

 callgroup=6,13-15       ; setzt die Gruppen 6, 13, 14 und 15

pickupgroup

Definiert die Pickup-Gruppe(n) für das Endgerät, über die in Verbindung mit dem vorgenannten callgroup-Definitionen Anrufe herangeholt (pick-up) erlaubt sein soll.

 pickupgroup=6,13-15     ; Pickup für die Gruppen 6, 13, 14 und 15 definieren

Somit ergibt sich für unsere grundlegende Erstinstallation folgende Konfiguration.

# egrep -v '(^\s+;|^;|^$)' /etc/asterisk/sip.conf
[general]
context=default                 ; Default context for incoming calls
allowoverlap=no                 ; Disable overlap dialing support. (Default is yes)
udpbindaddr=0.0.0.0             ; IP address to bind UDP listen socket to (0.0.0.0 binds to all)
tcpenable=no                    ; Enable server for incoming TCP connections (default is no)
tcpbindaddr=0.0.0.0             ; IP address for TCP server to bind to (0.0.0.0 binds to all interfaces)
srvlookup=yes                   ; Enable DNS SRV lookups on outbound calls
vmexten=60
language=de
[authentication]
[basic-options](!)                ; a template
        dtmfmode=rfc2833
        context=from-office
        type=friend
[natted-phone](!,basic-options)   ; another template inheriting basic-options
        nat=yes
        directmedia=no
        host=dynamic
[public-phone](!,basic-options)   ; another template inheriting basic-options
        nat=no
        directmedia=yes
[my-codecs](!)                    ; a template for my preferred codecs
        disallow=all
        allow=ilbc
        allow=g729
        allow=gsm
        allow=g723
        allow=ulaw
[ulaw-phone](!)                   ; and another one for ulaw-only
        disallow=all
        allow=ulaw
[Testaccount_11]
callerid=Wohnzimmer <11>
type=friend
username=11
secret=12qwasyx
mailbox=11
host=dynamic
domain=192.168.10.40
canreinvite=no
language=de
callgroup=1
pickupgroup=1
[12]
callerid=Esszimmer <12>
type=friend
username=12
secret=yaq12wsx
mailbox=12
host=dynamic
domain=192.168.10.40
canreinvite=no
callgroup=1
pickupgroup=1
[13]
callerid=Diele <13>
type=friend
username=13
secret=xsw21qay
mailbox=13
host=dynamic
domain=192.168.10.40
canreinvite=no
callgroup=1
pickupgroup=1
[14]
callerid=Keller <14>
type=friend
username=14
secret=21wqsaxy
mailbox=14
host=dynamic
domain=192.168.10.40
canreinvite=no
callgroup=1
pickupgroup=1

Sollte der Server noch nicht gestartet worden sein, holen wir dies nun nach.

 # service asterisk start

Anschließend verbinden wir uns mit der Asterisk-Konsole mit folgendem Aufruf:

# asterisk -r
Verbosity is at least 3
asterisk*CLI>

Unsere zuvor definierten SIP-Teilnehmerkönnen wir uns nun mit der Abfrage sip show peers anzeigen lassen.

asterisk*CLI> sip show peers
Name/username              Host                                    Dyn Forcerport ACL Port     Status     
12/12                      (Unspecified)                            D          0        Unmonitored 
13/13                      (Unspecified)                            D          0        Unmonitored 
14/14                      (Unspecified)                            D          0        Unmonitored 
Testaccount_11/11          (Unspecified)                            D          0        Unmonitored 
4 sip peers [Monitored: 0 online, 0 offline Unmonitored: 0 online, 4 offline]

Sobald sich das erste SIP-Endgerät am Asterisk-Server erfolgreich angemeldet hat, wird uns dies auf der Konsole entsprechend gemeldet.

      -- Registered SIP '14' at 192.168.10.61 port 5060

Eine erneute Abfrage der peers zeigt nun den angemeldeten Teilnehmer.

asterisk*CLI> sip show peers
Name/username              Host                                    Dyn Forcerport ACL Port     Status     
12/12                      (Unspecified)                            D          0        Unmonitored 
13/13                      (Unspecified)                            D          0        Unmonitored 
14/14                      192.168.10.51                            D          5061     Unmonitored 
Testaccount_11/11          (Unspecified)                            D          0        Unmonitored 
4 sip peers [Monitored: 0 online, 0 offline Unmonitored: 1 online, 3 offline]

Die Details unseres Users 14 können wir uns mit Hilfe des Befehls sip show peer ausgeben lassen.

asterisk*CLI> sip show peer 14


  * Name       : 14
  Secret       : <Set>
  MD5Secret    : <Not set>
  Remote Secret: <Not set>
  Context      : default
  Subscr.Cont. : <Not set>
  Language     : de
  AMA flags    : Unknown
  Transfer mode: open
  CallingPres  : Presentation Allowed, Not Screened
  Callgroup    : 1
  Pickupgroup  : 1
  MOH Suggest  : 
  Mailbox      : 14
  VM Extension : 60
  LastMsgsSent : 32767/65535
  Call limit   : 0
  Max forwards : 0
  Dynamic      : Yes
  Callerid     : "Keller" <14>
  MaxCallBR    : 384 kbps
  Expire       : 3533
  Insecure     : no
  Force rport  : No
  ACL          : No
  DirectMedACL : No
  T.38 support : No
  T.38 EC mode : Unknown
  T.38 MaxDtgrm: -1
  DirectMedia  : No
  PromiscRedir : No
  User=Phone   : No
  Video Support: No
  Text Support : No
  Ign SDP ver  : No
  Trust RPID   : No
  Send RPID    : No
  Subscriptions: Yes
  Overlap dial : No
  DTMFmode     : rfc2833
  Timer T1     : 500
  Timer B      : 32000
  ToHost       : 
  Addr->IP     : 192.168.10.51:5061
  Defaddr->IP  : (null)
  Prim.Transp. : UDP
  Allowed.Trsp : UDP
  Def. Username: 14
  SIP Options  : (none)
  Codecs       : 0x80000008000e (gsm|ulaw|alaw|h263|testlaw)
  Codec Order  : (none)
  Auto-Framing :  No 
  100 on REG   : No
  Status       : Unmonitored
  Useragent    : Zoiper rev.5415
  Reg. Contact : sip:14@192.168.10.51:5061;rinstance=2d6a419d01d09ccc;transport=UDP
  Qualify Freq : 60000 ms
  Sess-Timers  : Accept
  Sess-Refresh : uas
  Sess-Expires : 1800 secs
  Min-Sess     : 90 secs
  RTP Engine   : asterisk
  Parkinglot   : 
  Use Reason   : No

general

Der Kanaltyp IAX4) wird über die zentrale Konfigurationsdatei iax.conf definiert. IAX ist ein Protokoll, welches speziell für Asterisk entwickelt und genutzt wird. Es können damit sowohl Verbindungen zwischen einzelnen Asterisk-Servern als auch die Kommunikation zu Endgeräten ermöglciht werden. Als aktuelle Version findet die Version 2 (IAX2) Verwendung.
Wie auch schon bei der Konfiguration bei der sip.conf, aktivieren wir im ersten Schritt auch hier die deutschen Sprachprompts.

# vim /etc/asterisk/iax.conf
; Django 01.12.2010 deutsche Promts für alle ausgeben
language=de

Anschließend definieren wir noch, dass die Überprüfung der Anrufberechtigung im eigenen Netzwerk, deaktiviert werden soll. Somit ist sichergestellt, dass unser Zoiper-Client mit unserem Asterisk-Server kommunizieren kann.

# vim /etc/asterisk/iax.conf
; Django 01.12.2010
calltokenoptional=192.168.10.0/255.255.255.0

Die Gesamt-Konfiguration beschränkt sich demnach erst einmal auf:

# egrep -v '(^\s+;|^;|^$)' /etc/asterisk/iax.conf
[general]
language=de
bandwidth=low
disallow=lpc10                  ; Icky sound quality...  Mr. Roboto.
jitterbuffer=no
forcejitterbuffer=no
autokill=yes
calltokenoptional=192.168.10.0/255.255.255.0
[guest]
type=user
context=default
callerid="Guest IAX User"
[iaxtel]
type=user
context=default
auth=rsa
inkeys=iaxtel
[iaxfwd]
type=user
context=default
auth=rsa
inkeys=freeworlddialup
[demo]
type=peer
username=asterisk
secret=supersecret
host=216.207.245.47

phones

Im zweiten Anlauf definieren wir uns nun unsere SIP-Endgeräte. Hierzu legen uns nun pro Endstelle einen Eintrag, nach folgendem Muster an.

[ID]
callerid="Name der Endstelle"
type="User-Type"
username="Username"
secret="Passwort"
mailbox="Mailboxrufnummer"
host="Host-Type"
transfer="IAX-Medienstrom Definition"
language="Sprachewahl der Meldungen"

Im einzelnen haben die Parameter folgende Bedeutung:

[ID]

ID des IAX-Teilnehmers mit welcher dieser Teilnehmer beim Asterisk-Server bekannt ist. Neben einer reinen numerischen Angabe kann man auch mit Namen und/oder alphanumerischen Kombinationen arbeiten. Der Übersichtlichkeit halber empfiehlt es sich, die ID analog der Rufnummer zu verwenden.

callerid

Überschreibt vom Gerät gesendete die Caller-ID. Diese CallerID besteht in der Regel aus zwei Teilen, dem CallerIDName und CallerIDNum. Mit Hilfe der spitzen Klammern <>, welche die Rufnummer umklammert wird die Nummer vom Namen abgetrennt.

type

Über den type wird festgelegt, in welcher Richtung der Teilnehmer Verbindungen aufbauen kann/darf. Folgende Richtungen sind festlegbar:

  • Asterisk ⇔ friend
  • Asterisk ⇒ peer
  • Asterisk ⇐ user

Ein user kann also _nur_ anrufen, ein peer _nur_ angerufen werden und ein friend darf beides.

username

Username, mit dem sich das Endgerät bei der Anmeldung beim Asterisk-Server meldet.

secret

Passwort, welches das Endgerät zusammen mit dem vorgenannten Username bei der Anmeldung am Asterisk-Server verwendet.

mailbox

Definition der Mailbox-Nummer die dem Endgerät zugeordnet werden soll. Dieser Eintrag wird auch für die MWI5), also der Anzeigen von neuen Nachrichten am Endgerät via LED oder Displaynachricht.

host

Festlegung des Hostnamen bzw. Adresse des Endgerätes/Partners. dynamic gibt man an, wenn der Hostname bzw. die IP-Adresse des Hosts nicht bekannt ist, da diese Daten dynamisch vergeben werden.

transfer

Ähnlich wie schon bei der Konfiguration der SIP-Channnels, kann hier definiert werden, ob der Mediendatenstrom direkt zwischen Clients erfolgen darf/soll oder eben nicht.

language

Über diese Option kann die Sprache der Meldungen beim Client unabhängig von der globalen Definition geändert werden.


Somit ergibt sich für unsere IAX-Erstinstallation folgende Konfiguration.

# egrep -v '(^\s+;|^;|^$)' /etc/asterisk/iax.conf
[general]
language=de
bandwidth=low
disallow=lpc10                  ; Icky sound quality...  Mr. Roboto.
jitterbuffer=no
forcejitterbuffer=no
autokill=yes
calltokenoptional=192.168.10.0/255.255.255.0
[guest]
type=user
context=default
callerid="Guest IAX User"
[iaxtel]
type=user
context=default
auth=rsa
inkeys=iaxtel
[iaxfwd]
type=user
context=default
auth=rsa
inkeys=freeworlddialup
[demo]
type=peer
username=asterisk
secret=supersecret
host=216.207.245.47
[33]
callerid="Zoiper 33 - IAX Phone <33>"
type=friend
username=33
secret=Z|pf3gl@t$cha!
mailbox=60
host=dynamic
transfer=no
language=de

Sollte der Server noch nicht gestartet worden sein, holen wir dies nun nach.

# service asterisk start

Lief der Telephonieserver bereist, starten wir diesen einfach durch.

# service asterisk restart

Anschließend verbinden wir uns mit der Asterisk-Konsole mit folgendem Aufruf:

# asterisk -r
Verbosity is at least 3
asterisk*CLI>

Unseren gerade eben definierten IAX-Teilnehmer können wir uns nun mit der Abfrage iax2 show peers anzeigen lassen.

asterisk*CLI> iax2 show peers
Name/Username    Host                 Mask             Port          Status    
33/33            192.168.10.51   (D)  255.255.255.255  4570          Unmonitored
demo/asterisk    216.207.245.47  (S)  255.255.255.255  4569          Unmonitored
2 iax2 peers [0 online, 0 offline, 2 unmonitored]
asterisk*CLI>

Sobald sich der IAX-Client am Asterisk-Server erfolgreich registriert hat, wird uns dies auf der Konsole entsprechend gemeldet.

    -- Registered IAX2 '33' (AUTHENTICATED) at 192.168.10.51:4570

Die Details unseres Users 33 können wir uns mit Hilfe des Befehls iax2 show peer ausgeben lassen.

  * Name       : 33
  Secret       : <Set>
  Context      : 
  Parking lot  : 
  Mailbox      : 60
  Dynamic      : Yes
  Callnum limit: 0
  Calltoken req: No
  Trunk        : No
  Encryption   : No
  Callerid     : "Zoiper 33 - IAX Phone" <33>
  Expire       : 31
  ACL          : No
  Addr->IP     : 232.44.190.178 Port 0
  Defaddr->IP  : 0.0.0.0 Port 0
  Username     : 33
  Codecs       : 0x703 (g723|gsm|g729|speex|ilbc)
  Codec Order  : (none)
  Status       : Unmonitored
  Qualify      : every 60000ms when OK, every 10000ms when UNREACHABLE (sample smoothing Off)

1)
Session Initiation Protokoll
2) , 5)
Message Waiting Indication
3)
Real Time Protocol
4)
Inter Asterisk eXchange
Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
  • voip/asterisk18/config.txt
  • Zuletzt geändert: 20.04.2018 08:59.
  • (Externe Bearbeitung)