Asterisk Grundkonfiguration
Ü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.
logger.conf
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
modules.conf
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
sip.conf
general
Der Kanaltyp SIP1) wird über die zentrale Konfigurationsdatei sip.con definiert.
Im ersten Schritt definieren wir erst einmal den Voicemailserver-Port und auch aktivieren die deutschen Sprachprompts.
# vim /etc/asterisk/sip.conf
; Django 17.03.2010 zentrale Rufnummer für den Voicemailserver
vmexten=60
; Django 17.03.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) bindport=5060 ; UDP Port to bind to (SIP standard port for unencrypted UDP bindaddr=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 canreinvite=no host=dynamic [public-phone](!,basic-options) ; another template inheriting basic-options nat=no canreinvite=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:
- 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 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) bindport=5060 ; UDP Port to bind to (SIP standard port for unencrypted UDP bindaddr=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 canreinvite=no host=dynamic [public-phone](!,basic-options) ; another template inheriting basic-options nat=no canreinvite=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 [11] callerid=Testr <11> type=friend username=11 secret=12qwasyx mailbox=11 host=dynamic domain=192.168.1.1 canreinvite=no language=de callgroup=1 pickupgroup=1 [12] callerid=Test <12> type=friend username=12 secret=yaq12wsx mailbox=12 host=dynamic domain=192.168.1.1 canreinvite=no callgroup=1 pickupgroup=1 [13] callerid=Test <13> type=friend username=13 secret=xsw21qay mailbox=13 host=dynamic domain=192.168.1.1 canreinvite=no callgroup=1 pickupgroup=1 [14] callerid=Test <14> type=friend username=14 secret=21wqsaxy mailbox=14 host=dynamic domain=192.168.1.1 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
Asterisk 1.6.0.26, Copyright (C) 1999 - 2010 Digium, Inc. and others. Created by Mark Spencer <markster@digium.com> Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details. This is free software, with components licensed under the GNU General Public License version 2 and other licenses; you are welcome to redistribute it under certain conditions. Type 'core show license' for details. ========================================================================= Connected to Asterisk 1.6.0.26 currently running on office (pid = 15522) 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 Nat ACL Port Status 14/14 (Unspecified) D 5060 Unmonitored 13/13 (Unspecified) D 5060 Unmonitored 12/12 (Unspecified) D 5060 Unmonitored 11/11 (Unspecified) D 5060 Unmonitored 4 sip peers [Monitored: 0 online, 0 offline Unmonitored: 4 online, 0 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 angemeldteten Teilnehmer.
asterisk*CLI> sip show peers Name/username Host Dyn Nat ACL Port Status 14/14 192.168.1.61 D 5060 Unmonitored 13/13 (Unspecified) D 5060 Unmonitored 12/12 (Unspecified) D 5060 Unmonitored 11/11 (Unspecified) D 5060 Unmonitored 4 sip peers [Monitored: 0 online, 0 offline Unmonitored: 4 online, 0 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 asterisk*CLI> * Name : 14 Secret : <Set> MD5Secret : <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 Mailbox : 14 VM Extension : 60 LastMsgsSent : 32767/65535 Call limit : 0 Dynamic : Yes Callerid : "Test" <14> MaxCallBR : 384 kbps Expire : 2689 Insecure : no Nat : RFC3581 ACL : No T.38 support : No T.38 EC mode : Unknown T.38 MaxDtgrm: -1 CanReinvite : 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.1.61 Port 5060 Defaddr->IP : 0.0.0.0 Port 5060 Transport : UDP Def. Username: 14 SIP Options : (none) Codecs : 0x8000e (gsm|ulaw|alaw|h263) Codec Order : (none) Auto-Framing : No 100 on REG : No Status : Unmonitored Useragent : snom360/6.5.15 Reg. Contact : sip:14@192.168.1.61:5060;line=6xwyo7k7 Qualify Freq : 60000 ms Sess-Timers : Accept Sess-Refresh : uas Sess-Expires : 1800 secs Min-Sess : 90 secs