Channel-Einstellungen

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

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 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

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

bandwidth = [low|medium|high]

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

Beispiel:

bandwidth = low

allow

allow = [all|Name des Codecs]

Bestimmte Soundcodecs können gezielt erlaubt (allow) oder verboten (disallow) werden (siehe 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 permit).

Beispiel:

disallow = all
allow = ulaw
allow = gsm

disallow

disallow = [all|Name des Codecs]

Siehe allow (allow).

codecpriority

codecpriority = [caller|host|disabled|reqonly]

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

Beispiel:

codecpriority = caller

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 amaflags).

Beispiel:

amaflags = documentation

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>

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 (defaultip).

Beispiele:

host = 192.168.0.201

host = dynamic

defaultip

defaultip = [IP-Adresse]

Die defaultip-Einstellung ergänzt host=dynamic (siehe 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

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

Das nächste Beispiel ist nicht sinnvoll, 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

deny = [IP-Adresse]/[Netzmaske]

Siehe permit (permit).

Beispiel:

deny = 0.0.0.0/0.0.0.0

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 (secret) angegeben.
md5
In diesem Challenge/Response-Verfahren wird eine MD5-Prüfsumme übertragen. Das Passwort wird mit secret (secret) angegeben.
rsa
Das sicherste Verfahren durch öffentliche und private Schlüssel. Diese Schlüssel werden bei inkeys (inkeys) und outkeys (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

secret = [Passwort]

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

Beispiel:

secret = meinpasswort

inkeys

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

Legt für die Authentifizierungsmethode rsa (siehe 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

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

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-Context 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

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 unterschiedliche Sprachbausteine zu benutzen.

Beispiel:

language = de

context

context = [Context]

Der Context dem Benutzer dieser Verbindung zugeordnet werden.

Beispiel:

context = default

regcontext

regcontext = [Context]

Sie können einen Context 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 Contexte können nacheinander aufgeführt werden; als Trennungszeichen wird ein & verwendet.

Beispiel:

regcontext = from-iax

regexten

regexten = [Nummer]

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

Beispiel:

regexten = 3000

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 trunk).

Beispiel:

jitterbuffer = yes

forcejitterbuffer

forcejitterbuffer = [yes|no]

Normalerweise ist es Aufgabe der Endgeräte einen Jitter-Buffer [91] 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

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

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

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.[92].

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

Beispiel:

trunk = yes

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

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

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



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

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