Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |||
| voip:asterisk18:config [04.08.2011 06:12. ] – [language] django | voip:asterisk18:config [20.04.2018 08:59. ] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== Asterisk Grundkonfiguration ====== | ||
| + | |||
| + | {{voip: | ||
| + | \\ | ||
| + | Über die Konfigurationsdateien im Verzeichnis // | ||
| + | \\ | ||
| + | Wir bearbeiten nun die einzelnen Konfigurationsdateien, | ||
| + | |||
| + | ===== 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 "// | ||
| + | full => notice, | ||
| + | Für den Regelbetrieb wird sich unsere Konfiguration aber auf nachfolgende Zeilen beschränken: | ||
| + | # egrep -v ' | ||
| + | < | ||
| + | [logfiles] | ||
| + | console => notice, | ||
| + | messages => notice, | ||
| + | ===== modules.conf ===== | ||
| + | Den Modullademechanismus von Asterisk bestimmen wir über die Konfigurationsdatei **modules.conf**. | ||
| + | # egrep -v ' | ||
| + | < | ||
| + | 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 **SIP**((**S**ession **I**nitiation **P**rotokoll)) 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 / | ||
| + | < | ||
| + | vmexten=60</ | ||
| + | < | ||
| + | language=de</ | ||
| + | Die Gesamt-Konfiguration beschränkt sich demnach erst einmal auf: | ||
| + | # egrep -v ' | ||
| + | < | ||
| + | context=default | ||
| + | allowoverlap=no | ||
| + | udpbindaddr=0.0.0.0 | ||
| + | tcpenable=no | ||
| + | tcpbindaddr=0.0.0.0 | ||
| + | srvlookup=yes | ||
| + | vmexten=60 | ||
| + | language=de | ||
| + | [authentication] | ||
| + | [basic-options](!) | ||
| + | dtmfmode=rfc2833 | ||
| + | context=from-office | ||
| + | type=friend | ||
| + | [natted-phone](!, | ||
| + | nat=yes | ||
| + | directmedia=no | ||
| + | host=dynamic | ||
| + | [public-phone](!, | ||
| + | nat=no | ||
| + | directmedia=yes | ||
| + | [my-codecs](!) | ||
| + | disallow=all | ||
| + | allow=ilbc | ||
| + | allow=g729 | ||
| + | allow=gsm | ||
| + | allow=g723 | ||
| + | allow=ulaw | ||
| + | [ulaw-phone](!) | ||
| + | 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. | ||
| + | < | ||
| + | callerid=" | ||
| + | type=" | ||
| + | username=" | ||
| + | secret=" | ||
| + | mailbox=" | ||
| + | host=" | ||
| + | domain=" | ||
| + | canreinvite=" | ||
| + | callgroup=" | ||
| + | pickupgroup=" | ||
| + | |||
| + | ---- | ||
| + | |||
| + | 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 **<> | ||
| + | === type === | ||
| + | Über den **type** wird festgelegt, in welcher Richtung der Teilnehmer Verbindungen aufbauen kann/darf. Folgende Richtungen sind festlegbar: \\ | ||
| + | <uml w=210> | ||
| + | ( \n\nAsterisk - Server\n\n ) -left-|> : | ||
| + | :User: --|> ( \n\nAsterisk - Server\n\n ) | ||
| + | :Friend: -up-|> | ||
| + | :Friend: < | ||
| + | </ | ||
| + | \\ 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)), | ||
| + | === host === | ||
| + | Festlegung des Hostnamen bzw. Adresse des Endgerätes/ | ||
| + | === 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 "// | ||
| + | * **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. | ||
| + | | ||
| + | === pickupgroup === | ||
| + | Definiert die Pickup-Gruppe(n) für das Endgerät, über die in Verbindung mit dem vorgenannten **callgroup**-Definitionen Anrufe herangeholt (// | ||
| + | | ||
| + | |||
| + | ---- | ||
| + | |||
| + | Somit ergibt sich für unsere grundlegende Erstinstallation folgende Konfiguration. | ||
| + | # egrep -v ' | ||
| + | < | ||
| + | context=default | ||
| + | allowoverlap=no | ||
| + | udpbindaddr=0.0.0.0 | ||
| + | tcpenable=no | ||
| + | tcpbindaddr=0.0.0.0 | ||
| + | srvlookup=yes | ||
| + | vmexten=60 | ||
| + | language=de | ||
| + | [authentication] | ||
| + | [basic-options](!) | ||
| + | dtmfmode=rfc2833 | ||
| + | context=from-office | ||
| + | type=friend | ||
| + | [natted-phone](!, | ||
| + | nat=yes | ||
| + | directmedia=no | ||
| + | host=dynamic | ||
| + | [public-phone](!, | ||
| + | nat=no | ||
| + | directmedia=yes | ||
| + | [my-codecs](!) | ||
| + | disallow=all | ||
| + | allow=ilbc | ||
| + | allow=g729 | ||
| + | allow=gsm | ||
| + | allow=g723 | ||
| + | allow=ulaw | ||
| + | [ulaw-phone](!) | ||
| + | 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 | ||
| + | < | ||
| + | asterisk*CLI> | ||
| + | </ | ||
| + | Unsere zuvor definierten SIP-Teilnehmerkönnen wir uns nun mit der Abfrage **sip show peers** anzeigen lassen. | ||
| + | < | ||
| + | Name/ | ||
| + | 12/12 (Unspecified) | ||
| + | 13/13 (Unspecified) | ||
| + | 14/14 (Unspecified) | ||
| + | Testaccount_11/ | ||
| + | 4 sip peers [Monitored: 0 online, 0 offline Unmonitored: | ||
| + | Sobald sich das erste SIP-Endgerät am Asterisk-Server erfolgreich angemeldet hat, wird uns dies auf der Konsole entsprechend gemeldet. | ||
| + | < | ||
| + | Eine erneute Abfrage der peers zeigt nun den angemeldeten Teilnehmer. | ||
| + | < | ||
| + | Name/ | ||
| + | 12/12 (Unspecified) | ||
| + | 13/13 (Unspecified) | ||
| + | 14/14 192.168.10.51 | ||
| + | Testaccount_11/ | ||
| + | 4 sip peers [Monitored: 0 online, 0 offline Unmonitored: | ||
| + | Die Details unseres Users //14// können wir uns mit Hilfe des Befehls **sip show peer** ausgeben lassen. | ||
| + | < | ||
| + | |||
| + | |||
| + | * Name : 14 | ||
| + | Secret | ||
| + | MD5Secret | ||
| + | Remote Secret: <Not set> | ||
| + | Context | ||
| + | Subscr.Cont. : <Not set> | ||
| + | Language | ||
| + | AMA flags : Unknown | ||
| + | Transfer mode: open | ||
| + | CallingPres | ||
| + | Callgroup | ||
| + | Pickupgroup | ||
| + | MOH Suggest | ||
| + | Mailbox | ||
| + | VM Extension : 60 | ||
| + | LastMsgsSent : 32767/65535 | ||
| + | Call limit : 0 | ||
| + | Max forwards : 0 | ||
| + | Dynamic | ||
| + | Callerid | ||
| + | MaxCallBR | ||
| + | Expire | ||
| + | Insecure | ||
| + | Force rport : No | ||
| + | ACL : No | ||
| + | DirectMedACL : No | ||
| + | T.38 support : No | ||
| + | T.38 EC mode : Unknown | ||
| + | T.38 MaxDtgrm: -1 | ||
| + | DirectMedia | ||
| + | PromiscRedir : No | ||
| + | User=Phone | ||
| + | Video Support: No | ||
| + | Text Support : No | ||
| + | Ign SDP ver : No | ||
| + | Trust RPID : No | ||
| + | Send RPID : No | ||
| + | Subscriptions: | ||
| + | Overlap dial : No | ||
| + | DTMFmode | ||
| + | Timer T1 : 500 | ||
| + | Timer B : 32000 | ||
| + | ToHost | ||
| + | Addr-> | ||
| + | Defaddr-> | ||
| + | Prim.Transp. : UDP | ||
| + | Allowed.Trsp : UDP | ||
| + | Def. Username: 14 | ||
| + | SIP Options | ||
| + | Codecs | ||
| + | Codec Order : (none) | ||
| + | Auto-Framing : No | ||
| + | 100 on REG : No | ||
| + | Status | ||
| + | Useragent | ||
| + | Reg. Contact : sip: | ||
| + | Qualify Freq : 60000 ms | ||
| + | Sess-Timers | ||
| + | Sess-Refresh : uas | ||
| + | Sess-Expires : 1800 secs | ||
| + | Min-Sess | ||
| + | RTP Engine | ||
| + | Parkinglot | ||
| + | Use Reason | ||
| + | ===== iax.conf ===== | ||
| + | ==== general ==== | ||
| + | Der Kanaltyp **IAX**((**I**nter **A**sterisk e**X**change)) 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 | ||
| + | Wie auch schon bei der Konfiguration bei der **sip.conf**, | ||
| + | # vim / | ||
| + | < | ||
| + | language=de</ | ||
| + | Anschließend definieren wir noch, dass die Überprüfung der Anrufberechtigung im eigenen Netzwerk, deaktiviert werden soll. Somit ist sichergestellt, | ||
| + | # vim / | ||
| + | < | ||
| + | calltokenoptional=192.168.10.0/ | ||
| + | Die Gesamt-Konfiguration beschränkt sich demnach erst einmal auf: | ||
| + | # egrep -v ' | ||
| + | < | ||
| + | language=de | ||
| + | bandwidth=low | ||
| + | disallow=lpc10 | ||
| + | jitterbuffer=no | ||
| + | forcejitterbuffer=no | ||
| + | autokill=yes | ||
| + | calltokenoptional=192.168.10.0/ | ||
| + | [guest] | ||
| + | type=user | ||
| + | context=default | ||
| + | callerid=" | ||
| + | [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. | ||
| + | < | ||
| + | callerid=" | ||
| + | type=" | ||
| + | username=" | ||
| + | secret=" | ||
| + | mailbox=" | ||
| + | host=" | ||
| + | transfer=" | ||
| + | language=" | ||
| + | |||
| + | ---- | ||
| + | |||
| + | 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 **<> | ||
| + | === 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)), | ||
| + | === host === | ||
| + | Festlegung des Hostnamen bzw. Adresse des Endgerätes/ | ||
| + | === transfer === | ||
| + | Ähnlich wie schon bei der Konfiguration der SIP-Channnels, | ||
| + | === 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 ' | ||
| + | < | ||
| + | language=de | ||
| + | bandwidth=low | ||
| + | disallow=lpc10 | ||
| + | jitterbuffer=no | ||
| + | forcejitterbuffer=no | ||
| + | autokill=yes | ||
| + | calltokenoptional=192.168.10.0/ | ||
| + | [guest] | ||
| + | type=user | ||
| + | context=default | ||
| + | callerid=" | ||
| + | [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=" | ||
| + | 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 | ||
| + | < | ||
| + | asterisk*CLI></ | ||
| + | Unseren gerade eben definierten IAX-Teilnehmer können wir uns nun mit der Abfrage **iax2 show peers** anzeigen lassen. | ||
| + | < | ||
| + | Name/ | ||
| + | 33/33 192.168.10.51 | ||
| + | demo/ | ||
| + | 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. | ||
| + | < | ||
| + | Die Details unseres Users 33 können wir uns mit Hilfe des Befehls **iax2 show peer** ausgeben lassen. | ||
| + | < | ||
| + | * Name : 33 | ||
| + | Secret | ||
| + | Context | ||
| + | Parking lot : | ||
| + | Mailbox | ||
| + | Dynamic | ||
| + | Callnum limit: 0 | ||
| + | Calltoken req: No | ||
| + | Trunk : No | ||
| + | Encryption | ||
| + | Callerid | ||
| + | Expire | ||
| + | ACL : No | ||
| + | Addr-> | ||
| + | Defaddr-> | ||
| + | Username | ||
| + | Codecs | ||
| + | Codec Order : (none) | ||
| + | Status | ||
| + | Qualify | ||
| + | |||
| + | </ | ||
| + | |||