Coverbild des Asterisk Buches von Stefan Wintermeyer

Letzte Woche => Endspurt!

Montag den 29.01.07 geht das Buch in die Produktion. Bis dahin laeuft der Beta-Test noch in vollem Umfang. Bitte melden Sie Fehler! Siehe Beta-Test FAQ.

Erscheinungstermin: 03.03.07. Das Buch wird auf dem Asterisk-Tag.org in Chemnitz vorgestellt und kann dort auch erworben werden. 10 Tage spaeter wird es im Buchhandel sein. Wer nicht in Chemnitz sein kann, sollte das Buch vorbestellen: Amazon oder direkt beim Verlag

Asterisk-Schulungen und Consulting vom Autor dieses Buches finden Sie auf http://www.amooma.de. Naechste Asterisk-Schulung: 12.02. - 13.02.07 (noch 2 Plaetze frei) - Ach ja, ... wir suchen auch noch Asterisk Entwickler! => http://www.amooma.de/jobs/


4.4. Channel-Einstellungen

Die folgenden Parameter können für die einzelnen Channel definiert werden. Einige können aber auch im Abschnitt [general] verwendet werden.

4.4.1. type

type = [user|peer|friend]

Legt fest, ob es sich um eine Verbindung zu einem user (z.B. Benutzer-Endgerät, verbindet sich mit uns) oder peer (z.B. Gateway in ein anderes Asterisk-Netzwerk, zu dem wir die Verbindung herstellen) handelt. friend ist eine Kurzschreibweise um einen user und einen peer mit den gleichen Angaben zu definieren.

Beispiel:

type = peer

Warnung

Wenn Sie nicht für alle User-Einträge (type=user) IP-basierte Zugangsbeschränkungen (siehe Abschnitt 4.4.11, „permit) definiert haben, müssen Sie in der iax.conf einen Eintrag [guest] haben, bei dem Sie weder auth noch secret angeben. Andernfalls können sich beliebige User verbinden, indem sie ein Passwort erraten.

Beispiel:

[guest]
type=user
callerid="IAX-Gast-Benutzer"

4.4.2. accountcode

accountcode = [Abrechnungsnummer]

Der angegebene String wird als Dateiname für die Abrechnungsdateien im Verzeichnis /var/log/asterisk/cdr-csv/ benutzt. Verwenden Sie daher nur Kleinbuchstaben, Ziffern, Bindestrich, Unterstrich.

Beispiel:

accountcode = iax-hausmeister

4.4.3. bandwidth

bandwidth = [low|medium|high]

bandwidth dient als Gruppierung verschiedener Soundcodecs. Auf diese Weise kann man einfacher bestimmte Situationen definieren (siehe Abschnitt 4.3.1, „bandwidth).

Beispiel:

bandwidth = low

4.4.4. allow

allow = [all|Name des Codecs]

Bestimmte Soundcodecs können gezielt erlaubt (allow) oder verboten (disallow) werden (siehe Abschnitt 4.3.2, „allow). Dabei ist zu beachten, das evtl. im [general]-Bereich erlaubte Codecs erst durch ein disallow=all wieder verboten werden müssen.

Diese Parameter sind nicht zu verwechseln mit permit und deny (siehe Abschnitt 4.4.11, „permit).

Beispiel:

disallow = all
allow = ulaw
allow = gsm

4.4.5. disallow

disallow = [all|Name des Codecs]

Siehe allow (Abschnitt 4.4.4, „allow).

4.4.6. codecpriority

codecpriority = [caller|host|disabled|reqonly]

Definiert, welcher Teilnehmer der Verbindung die höhere Priorität bei der Verhandlung des Soundcodecs hat (siehe Abschnitt 4.3.4, „codecpriority).

Beispiel:

codecpriority = caller

4.4.7. amaflags

amaflags = [default|omit|billing|documentation]

AMA ist die Abkürzung für „Automatic Message Accounting“ und spezifiziert u.a. Standardmechanismen zur Erzeugung und Übermittlung von Anrufprotokollen (CDRs) (siehe Abschnitt 4.3.7, „amaflags).

Beispiel:

amaflags = documentation

4.4.8. callerid

callerid = [Name[ <Nummer>]]

Mit callerid können Sie die angezeigte Caller-ID für einen Nutzer oder ein Peer setzen. Wenn Sie ein Caller-ID-Feld für einen Benutzer definieren, werden alle Anrufe, die auf diesem Kanal eingehen, mit dieser Caller-ID verknüpft, unabhängig davon, was Ihnen das andere Ende sendet. Das ist aus Sicherheitsgründen zu empfehlen (außer, Sie vertrauen dem anderen Ende), da es sehr leicht möglich ist, seine Caller-ID zu fälschen.

Beispiel:

callerid = "Mark Spencer" <(256) 428 6000>

4.4.9. host

host=[Host|dynamic]

Als host wird entweder der Hostname oder die IP-Adresse des anderen Rechners angegeben. Bei Hosts mit dynamisch vergebenen (also wechselnden) IP-Adressen verwenden Sie den Sonderfall host=dynamic, vorzugsweise in Kombination mit der Einstellung defaultip (Abschnitt 4.4.10, „defaultip).

Beispiele:

host = 192.168.0.201

host = dynamic

4.4.10. defaultip

defaultip = [IP-Adresse]

Die defaultip-Einstellung ergänzt host=dynamic (siehe Abschnitt 4.4.9, „host). Ist ein Host noch nicht bei Ihrem Server angemeldet, versucht Asterisk, Nachrichten an die hier definierte Standard-IP-Adresse zu schicken.

Beispiel:

defaultip = 192.168.0.201

4.4.11. permit

permit = IP-Adresse[/Netzmaske]

permit und deny erlauben und beschränken die IP-Adressen, von denen Verbindungen zum entsprechenden Eintrag möglich sind. Üblicherweise wird zuerst ein deny=0.0.0.0/0.0.0.0 (alle verbieten) vorangestellt und dann mit permit die erlaubte IP-Adresse oder ein Bereich von Adressen freigegeben. Die Reihenfolge von deny und permit ist entscheidend, und beide können für mehrere Hosts/Bereiche auch mehrfach auftreten. Wenn genau ein Host gemeint ist, können Sie die Netzmaske (wäre 255.255.255.255) weglassen.

Dieses Beispiel erlaubt nur Verbindungen aus dem Bereich 192.168.0.* (Netzmaske 24 Bits, Klasse C Netzwerk):

deny = 0.0.0.0/0.0.0.0                ; alle verbieten
permit = 192.168.0.102/255.255.255.0  ; 192.168.0.* erlauben
permit = 192.168.5.5                  ; 192.168.5.5 erlauben

Alle erlauben bis auf 192.168.*.*:

permit = 0.0.0.0/0.0.0.0              ; alle erlauben
deny = 192.168.0.0/255.255.0.0        ; 192.168.*.* verbieten

Dieses Beispiel ist Blödsinn, da zuerst 192.168.0.0 - 192.168.0.127 verboten, dann aber wieder alle erlaubt werden, was die erste Regel überschreibt. So wird also nichts verboten:

deny = 192.168.0.0/255.255.255.127
permit = 0.0.0.0/0.0.0.0              ; alle erlauben

4.4.12. deny

deny = [IP-Adresse]/[Netzmaske]

Siehe permit (Abschnitt 4.4.11, „permit).

Beispiel:

deny = 0.0.0.0/0.0.0.0

4.4.13. auth

auth = [plaintext|md5|rsa]

Zum Identifizieren des anderen Peers/Users stehen 3 Methoden, zur Auswahl: plaintext, md5 und rsa.

plaintext
Sehr unsicher, da das Passwort im Klartext übertragen wird. Sollte daher nicht verwendet werden. Das Passwort wird mit secret (Abschnitt 4.4.14, „secret) angegeben.
md5
In diesem Challenge/Response-Verfahren wird eine MD5-Prüfsumme übertragen. Das Passwort wird mit secret (Abschnitt 4.4.14, „secret) angegeben.
rsa
Das sicherste Verfahren durch öffentliche und private Schlüssel. Diese Schlüssel werden bei inkeys (Abschnitt 4.4.15, „inkeys) und outkeys (Abschnitt 4.4.16, „outkey) angegeben.

Mit auth legen Sie eine durch Komma getrennte Liste von erlaubten Authentifizierungsmethoden fest.

Beispiel:

auth = rsa,md5

Wenn Sie weder auth noch secret angeben, bedeutet das, dass keine Authentifizierung notwendig ist.

4.4.14. secret

secret = [Passwort]

Legt das Passwort für die Authentifizierungsmethoden plaintext oder md5 fest (siehe Abschnitt 4.4.13, „auth).

Beispiel:

secret = meinpasswort

4.4.15. inkeys

inkeys = [rsa-key:rsa-key:...]

Legt für die Authentifizierungsmethode rsa (siehe Abschnitt 4.4.13, „auth) den öffentlichen RSA-Schlüssel des zu authentifizierenden Systems fest. Um mehr als einen RSA-Schlüssel mit einer Benutzer-Kanaldefinition zu verknüpfen, trennen Sie die Schlüsselnamen mit einem Doppelpunkt (:). Jeder dieser Schlüssel wird dann eine Verbindung für gültig erklären können.

Diese Schlüssel müssen als Dateien so benannt sein: /var/lib/asterisk/keys/schluesselname.pub

Beispiel:

inkeys = server-koblenz:server-bonn

4.4.16. outkey

outkey = [rsa-key]

Sie können die outkey-Option verwenden, um sich bei einem Peer mit Hilfe eines RSA-Schlüssels zu authentifizieren. Für ausgehende Authentifizierung kann nur ein RSA-Schlüssel verwendet werden. Der outkey wird nicht verteilt, er ist Ihr privater Schlüssel und sollte 3DES-verschlüsselt sein.

Diese Schlüssel müssen als Dateien so benannt sein: /var/lib/asterisk/keys/schluesselname.key

Beispiel:

outkey = privater-schluessel

4.4.17. mailbox

mailbox = [Mailboxname[@Mailbox-Context]]

Wenn Sie in einer Kanaldefinition einen Peer mit einer Mailbox verknüpfen, wird Voicemail eine MWI (Message Waiting Indication)-Nachricht an die Knoten am Ende dieses Kanals schicken. Befindet sich die Mailboxnummer in einem anderen Voicemail-Kontext als default, können Sie sie als mailbox@context angeben. Um mehrere Mailboxen mit einem einzigen Peer zu verknüpfen, müssen Sie den mailbox-Befehl mehrmals verwenden.

Beispiel:

mailbox = 1000

4.4.18. language

language = [en|de|...]

Konfiguriert die Sprache für den entsprechenden Channel. Die Standardsprache ist Englisch. Diese Einstellung wird von verschiedenen Anwendungen wie z.B. der Voicemailbox oder auch der Applikation SayNumber() verwendet, um verschiedene Sprachbausteine zu benutzen.

Beispiel:

language = de

4.4.19. context

context = [Kontext]

Der Kontext dem Benutzer dieser Verbindung zugeordnet werden.

Beispiel:

context = default

4.4.20. regcontext

regcontext = [Kontext]

Sie können einen Kontext definieren, der automatisch beim ersten Registrieren eines Peers ausgeführt wird. Ist mit regexten keine Extension angegeben, so wird als auszuführende Extension der Name des Peers benutzt. Dabei ist zu beachten, dass Asterisk als erstes automatisch ein NoOp mit der Priorität 1 ausführt. Als erste Priorität danach ist also die 2 zu benutzen. Mehrere Kontexte können nacheinander aufgeführt werden; als Trennungszeichen wird ein & benutzt.

Beispiel:

regcontext = from-iax

4.4.21. regexten

regexten = [Nummer]

Wird in Verbindung mit regcontext verwendet, um die Extension zu spezifizieren, die in dem konfigurierten Kontext ausgeführt werden soll. Falls regexten nicht explizit konfiguriert ist, wird der Name des Peers als Extension verwendet.

Beispiel:

regexten = 3000

4.4.22. jitterbuffer

jitterbuffer = [yes|no]

Schaltet den Jitter-Buffer an oder aus (dies gilt bei Verbindungen, bei denen Asterisk als Endgerät fungiert). Der Jitter-Buffer gleicht unterschiedliche Laufzeiten der IP-Pakete aus.

Der Jitter-Buffer hat evtl. Probleme bei eingeschaltetem trunk (siehe Abschnitt 4.4.26, „trunk).

Beispiel:

jitterbuffer = yes

4.4.23. forcejitterbuffer

forcejitterbuffer = [yes|no]

Normalerweise ist es Aufgabe der Endgeräte einen Jitter-Buffer [81] zu realisieren. Sollte dies aus irgendeinem Grund nicht oder nur schlecht funktionieren (manche Geräte haben einen schlechten Jitter-Buffer), kann man diesen Buffer auch auf Asterisk als VoIP-Brücke aktivieren.

Beispiel:

forcejitterbuffer = yes

4.4.24. maxjitterbuffer

maxjitterbuffer = [Laenge in Millisekunden]

Mit diesem Parameter wird die maximale Größe des Jitter-Buffers eingestellt. Sie sollten diesen Wert i.d.R. nicht höher als 500 einstellen, sonst kann es zu Tonaussetzern kommen.

Beispiel:

maxjitterbuffer = 400

4.4.25. resyncthreshold

resyncthreshold=[Wert in Millisekunden]

Der Resynchronisierungs-Grenzwert wird benutzt, um den Jitter-Buffer, im Falle der Erkennung einer signifikanten Änderung über wenige Frames, neu zu takten/neu abzustimmen unter der Annahme, dass der Veränderung eine Verwechslung von Zeitstempeln zugrunde liegt. Der Resynchronisierungs-Grenzwert ist definiert als die gemessene Schwankung plus dem Wert von resyncthreshold, der in Millisekunden angegeben wird.

Beispiel:

resyncthreshold = 800

4.4.26. trunk

trunk = [yes|no]

Asterisk kann bei IAX-Verbindungen zu einer bestimmten IP-Adresse (z.B. beim Verbinden von zwei Asterisk-Servern) alle Channels über einen Trunk versehen. Dadurch wird der Overhead von mehreren Verbindungen zu einer Adresse reduziert. Der Trunk-Modus funktioniert nur mit geeigneter Hardware (Digium Zaptel) oder entsprechender Emulationssoftware für timing-Zwecke[82].

Bei der Version 1.2.x arbeitet der Jitter-Buffer (siehe Abschnitt 4.4.22, „jitterbuffer) nicht gut bei eingeschaltetem Trunk-Modus.

Beispiel:

trunk = yes

4.4.27. trunkfreq

trunkfreq = [Wiederholrate in Millisekunden]

Mit trunkfreq wird in Millisekunden angegeben, wie oft Trunk-Nachrichten gesendet werden. Gilt nur, wenn trunk=yes gesetzt wurde.

Beispiel:

trunkfreq = 20

4.4.28. qualify

qualify = [yes|no|Zeit in Millisekunden]

Mit qualify=yes werden in festen Zeitabständen Ping-Nachrichten an die entfernten Peers gesendet, um herauszufinden, ob sie verfügbar sind und welche Latenz zwischen den Antworten liegt. Die Peers antworten mit Pong-Nachrichten. Ein Peer wird als nicht erreichbar angesehen, wenn innerhalb von 2000 ms noch keine Antwort vorliegt (um diese Voreinstellung zu ändern, setzen Sie qualify auf die entsprechende Anzahl an Millisekunden, die auf eine Anwort gewartet werden soll). Einige Endgeräte (/Software) kommen nicht mit diesen Nachrichten zurecht.

Beispiel:

qualify = yes

4.4.29. qualifysmoothing

qualifysmoothing = [yes|no]

Stellt ein, ob für die Verfügbarkeitsprüfung durch qualify immer der Mittelwert der letzten beiden Pong-Nachrichten verwendet werden soll. Hosts mit schlechter Verbindung könnten sonst fälschlicherweise als nicht verfügbar eingestuft werden.

Beispiel:

qualifysmoothing = yes



[81] Jitter bezieht sich auf die variierende Latenz zwischen den Datenpaketen. Bei zu großen Schwankungen kann es zu Tonausfällen kommen.

[82] z.B. das bei Asterisk enthaltene Kernel-Modul ztdummy oder zaprtc von Junghanns (http://www.junghanns.net/downloads/)