Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
voip:asterisk18:config [01.12.2010 19:35. ] – iax.conf dokumentiert 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 | ||
+ | |||
+ | </ | ||
+ | |||