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/ |
Die folgenden Parameter können für die einzelnen Channel definiert werden. Einige können aber auch im Abschnitt [general]
verwendet werden.
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
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"
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
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
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
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
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
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>
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
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
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
deny = [IP-Adresse]/[Netzmaske]
Siehe permit
(Abschnitt 4.4.11, „permit
“).
Beispiel:
deny = 0.0.0.0/0.0.0.0
auth = [plaintext|md5|rsa]
Zum Identifizieren des anderen Peers/Users stehen 3 Methoden, zur Auswahl: plaintext
, md5
und rsa
.
plaintext
secret
(Abschnitt 4.4.14, „secret
“) angegeben.md5
secret
(Abschnitt 4.4.14, „secret
“) angegeben.rsa
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.
secret = [Passwort]
Legt das Passwort für die Authentifizierungsmethoden plaintext
oder md5
fest (siehe Abschnitt 4.4.13, „auth
“).
Beispiel:
secret = meinpasswort
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
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
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
angeben. Um mehrere Mailboxen mit einem einzigen Peer zu verknüpfen, müssen Sie den mailbox@context
mailbox
-Befehl mehrmals verwenden.
Beispiel:
mailbox = 1000
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
context = [Kontext]
Der Kontext dem Benutzer dieser Verbindung zugeordnet werden.
Beispiel:
context = default
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
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
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
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
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
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
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
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
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
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/)
© by Stefan Wintermeyer