Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
voip:asterisk:config [17.03.2010 21:55. ] – Dokumentation der sip.conf begonnen djangovoip:asterisk:config [19.03.2010 20:11. ] (aktuell) django
Zeile 1: Zeile 1:
 +====== Asterisk Grundkonfiguration ======
  
 +{{voip:asterisk.gif|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.
 +
 +===== 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
 +<code>[general]
 +[logfiles]
 +console => notice,warning,error
 +messages => notice,warning,error</code>
 +===== modules.conf =====
 +Den Modullademechanismus von Asterisk bestimmen wir über die Konfigurationsdatei **modules.conf**. 
 +  # egrep -v '(^\s+;|^;|^$)' /etc/asterisk/modules.conf 
 +<code>[modules]
 +autoload=yes
 +preload => func_strings.so
 +noload => pbx_gtkconsole.so
 +load => res_musiconhold.so
 +noload => chan_alsa.so
 +noload => chan_console.so</code>
 +===== sip.conf =====
 +==== general ====
 +Der Kanaltyp **SIP**((**S**ession **I**nitiation **P**rotokoll)) 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
 +<code>; Django 17.03.2010 zentrale Rufnummer für den Voicemailserver
 +vmexten=60</code>
 +<code>; Django 17.03.2010 deutsche Promts für alle ausgeben
 +language=de</code>
 +Die Gesamt-Konfiguration beschränkt sich demnach erst einmal auf:
 +  # egrep -v '(^\s+;|^;|^$)' /etc/asterisk/sip.conf
 +<code>[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</code>
 +==== phones ====
 +Im zweiten Anlauf definieren wir uns nun unsere SIP-Endgeräte. Hierzu legen uns nun pro Endstelle einen Eintrag, nach folgendem Muster an.
 +<code>[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"</code>
 +
 +----
 +
 +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 MWI((**M**essage **W**aiting **I**ndication)), 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 (RTP((**R**eal **T**ime **P**rotocol)) ) 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 "//ge**NAT**teten//" 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
 +<code>[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</code>
 +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
 +<code>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></code>
 +Unsere zuvor definierten SIP-Teilnehmerkönnen wir uns nun mit der Abfrage **sip show peers** anzeigen lassen.
 +<code>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]</code>
 +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.
 +<code>asterisk*CLI> sip show peers
 +Name/username              Host            Dyn Nat ACL Port     Status     
 +14/14                      192.168.1.61              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]</code>
 +Die Details unseres Users //14// können wir uns mit Hilfe des Befehls **sip show peer** ausgeben lassen.
 +<code>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</code>
  • voip/asterisk/config.txt
  • Zuletzt geändert: 19.03.2010 20:11.
  • von django