IAX[42] ist das Inter-Asterisk-eXchange-Protokoll, also das Asterisk-eigene VoIP-Protokoll, das bevorzugt verwendet werden soll.
Braucht die Welt eigentlich noch ein VoIP-Protokoll, wo es doch schon SIP, H.323 etc. und eine Reihe proprietärer Protokolle gibt? Darüber lässt sich natürlich streiten. IAX hat aber einige Vorteile. Hier die wichtigsten, neben weiteren technischen Details:
- Geringer Overhead: Im Vergleich zu beispielsweise SIP (und dem darin verwendeten RTP) hat IAX als reines UDP-Protokoll ein deutlich besseres Nutzdaten-Overhead-Verhältnis.
- NAT/Firewall-tauglich: Trotz solcher Hürden kann IAX problemlos Anrufe initiieren und entgegennehmen etc. Es muss nur ein einziger Firewall-Port freigegeben werden (bei SIP mindestens 3).
- Einfaches Protokoll: Es müssen keinerlei Strings geparst werden, was IAX kaum anfällig für Speicherüberläufe macht.
- Gesprächstransfers: Gespräche können sowohl über einen zentralen Server laufen als auch direkt zwischen zwei Teilnehmern.
Trunking: Dadurch kann über die gleiche Datenleitung eine viel höhere Anzahl von simultanen Gesprächen geführt werden.
Am Anfang der iax.conf
steht immer der
Eintrag [general]
. Ähnlich wie bei der
sip.conf
werden im [general]
-Abschnitt
allgemeine Parameter übergeben. Darunter kommt dann die Definition der
einzelnen Channels.
Als Beispiel für die Möglichkeiten des IAX-Protokolls verbinden wir zwei voneinander unabhängige Telefonanlagen mit dem IAX-Protokoll. So können Gespräche von der einen zur anderen Anlage geführt werden und müssen nicht über das Festnetz geroutet werden.
Es gibt zwei Anlagen mit jeweils zwei Telefonen (1000 und
1001). Die Anlagen heißen ast1
und ast2
. Jede
Anlage soll in der Lage sein, Gespräche an die andere Anlage mit dem
IAX-Protokoll zu übermitteln. Dazu wird eine Vorwahl benutzt. Die
Vorwahl 0901
verbindet zur Anlage ast1
, und
0902
verbindet zur Anlage ast2
. Die Anlage
ast1
besitzt in diesem Beispiel die IP-Adresse
192.168.0.101
und die Anlage ast2
die
IP-Adresse 192.168.0.102
.
Die iax.conf
enthält folgende Konfiguration:
[ast2] type = friend host = 192.168.0.102 secret = 1234 context = test-telefone permit = 0.0.0.0/0.0.0.0
Die
extensions.conf
enthält folgende Konfiguration:
[via-asterisk2] exten => 09021000,1,Dial(IAX2/ast2/1000) exten => 09021001,1,Dial(IAX2/ast2/1001) ; ^ ^ ^ ^ ; | | | | ; virt.Vorwahl ext Verbindung ext
Die iax.conf
enthält folgende Konfiguration:
[ast1] type = friend host = 192.168.0.101 secret = 1234 context = test-telefone permit = 0.0.0.0/0.0.0.0
Die
extensions.conf
enthält folgende Konfiguration:
[via-asterisk1] exten => 09011000,1,Dial(IAX2/ast1/1000) exten => 09011001,1,Dial(IAX2/ast1/1001)
Die folgenden Parameter können nur im [general]
-Teil
definiert werden, sind also gültig für alle Channels. Sie können hier
außerdem auch einige der in „Channel-Einstellungen“
beschriebenen Einstellungen verwenden.
bandwidth = [low|medium|high]
Dient als Gruppierung verschiedener Soundcodecs. Auf diese
Weise kann man einfacher bestimmte Situationen definieren. Das ist eine
komfortable Alternative zu allow
und disallow
(„allow
“).
high
- Erlaubt alle Codecs: G.723.1, GSM, ulaw (G.711), alaw, G.726, ADPCM, slinear, LPC10, G.729, Speex, iLBC. Sollte nur bei Verbindungen ab 10 Mbit/s verwendet werden.
medium
- Verbietet die Codecs slinear, ulaw und alaw.
low
- Verbietet zusätzlich die Codecs G.726 und ADPCM.
Beispiel:
bandwidth = low disallow = lpc10 ; hat schlechte Qualität
allow = [all|Name des Codecs]
Bestimmte Soundcodecs können gezielt erlaubt
(allow
) oder verboten (disallow
) werden.
Default ist allow=all
. Die möglichen Codecs sind:
g723.1
, gsm
, ulaw
,
alaw
, g726
, slinear
,
plc10
, adpcm
, g729
,
speex
, ilbc
, h261
,
h263
und der Platzhalter all
. Siehe auch
bandwidth
(„bandwidth
“)
für eine komfortable Einstellung. allow
und
disallow
können mehrmals verwendet werden und sind damit
eine Ausnahme.
Beispiel:
disallow = all allow = ulaw allow = gsm
codecpriority = [caller|host|disabled|reqonly]
Definiert, welcher Teilnehmer einer eingehenden Verbindung die
höhere Priorität bei der Verhandlung des Soundcodecs hat. Default:
host.
caller
- Der Anrufer hat Vorrang vor dem Host.
host
- Der Host hat Vorrang vor dem Anrufer.
disabled
- Codec-Präferenzen werden nicht berücksichtigt.
reqonly
- Codec-Präferenzen werden ignoriert, und der Anruf wird nur dann akzeptiert, wenn der angeforderte Codec verfügbar ist.
Beispiel:
codecpriority = caller
authdebug = [yes|no]
Standardmäßig ist ein minimales Debugging bei der Autorisierung
von IAX-Verbindungen eingestellt. Dies kann mit
authdebug=no
deaktiviert werden.
Beispiel:
authdebug = no
autokill = [yes|Timeout in Millisekunden]
Falls autokill
nicht gesetzt ist, versucht
Asterisk einen nicht erreichbaren Host sehr lange zu erreichen. Dies
kann bei vielen gleichzeitigen Versuchen (auf mehreren Channels) zu
Performance-Problemen führen. Mit autokill=yes
wird die
Verbindung nach 2000 Millisekunden abgebrochen. Alternativ kann man auch
die Anzahl der Millisekunden angeben.
Beispiel:
autokill = 3500
amaflags = [default|omit|billing|documentation]
AMA ist die Abkürzung für „Automatic Message Accounting“ und spezifiziert uunter anderem Standardmechanismen zur Erzeugung und Übermittlung von Anrufprotokollen (Call Data Records bzw. Call Detail Records bzw. CDRs; auf Deutsch auch Kommunikationsdatensatz, KDS, genannt).
Mit omit
werden keine Aufzeichnungen
gemacht.
Beispiel:
amaflags = billing
bindaddr = [IP-Adresse]
Definiert die IP-Adresse, auf der Verbindungsanfragen
beantwortet werden. Default: 0.0.0.0
für alle
Adressen.
Beispiel:
bindaddr = 0.0.0.0
bindport = [Port-Nummer]
Definiert den Netzwerkport, auf dem Verbindungsanfragen beantwortet werden. Der Default-Port für IAX (IAX2!) ist 4569 (IAX Version 1: 5036).
Wichtig | |
---|---|
Diese Einstellung muss immer vor dem
|
Beispiel:
bindport = 4569
delayreject = [yes|no]
Diese Einstellung kann auf yes
gesetzt werden, um
eventuelle Brute-Force-Attacken (zum Passwortknacken) abzuschwächen.
Dann wird nach jedem falschen Einlogversuch 1000 Millisekunden (also 1
Sekunde) gewartet, bis der nächste Versuch akzeptiert wird. Default:
no.
Beispiel:
delayreject = yes
language = [en|de|...]
Konfiguriert die Sprache für den entsprechenden Channel. Die
gobale Standardsprache ist Englisch. Die Sprache, die gesetzt ist, wird
vom Kanal als Informationselement gesendet. Diese Einstellung wird auch
von Anwendungen wie SayNumber()
gelesen, die für
verschiedene Sprachen unterschiedliche Sprachbausteine
verwenden.
Beispiel:
language = de
mailboxdetail = [yes|no]
Wenn mailboxdetail
auf yes
gesetzt
ist, wird dem Apparat des Mailboxbenutzers die Anzahl der neuen (und die
der alten) Nachrichten übermittelt (zur Anzeige auf dem Display o. Ä.).
Ansonsten wird nur signalisiert, dass es neue Nachrichten gibt, ohne die
Anzahl zu nennen.
Diese Einstellung ist bei neueren Asterisk-Versionen nicht mehr
verfügbar. Mittlerweile verhält sich Asterisk immer (standardkonform)
wie mailboxdetail=yes.
Beispiel:
mailboxdetail = yes
tos = [...]
ToS steht für „Type of Service“; das sind Flags im
IP-Header, die von manchen Routern ausgelesen und befolgt werden. Damit
kann das Routingverhalten optimiert werden. Die empfohlene Einstellung
für IAX ist tos=ef
. ef steht für Expedited Forwarding, also
etwa Express-Übertragung, was nach geringer Latenz, geringer Verlustrate
und wenig Jitter verlangt. Default ist none
(wegen der
Rückwärtskompatibilität).
Die Vielzahl der möglichen Werte soll hier nicht weiter
beschrieben werden, Wenn Sie sich dafür interessieren, lesen Sie die
Spezifizierung von Differentiated Services in RFC 2474 und die
IANA-DSCP[43]. Hier folgt nur ein ins Deutsche übersetzter Auszug aus
der Asterisk beiliegenden Datei doc/README.tos
(1.2) / doc/ip-tos.txt
(1.4):
Die zulässigen Werte für die tos*-Einstellungen sind:
Außerdem kann man auch deren numerische Pendants angeben (z.
B. Die Werte =========================================== Konfig.- Parameter Empfohlene Datei Einstellung ------------------------------------------- sip.conf tos_sip cs3 sip.conf tos_audio ef sip.conf tos_video af41 ------------------------------------------- iax.conf tos ef ------------------------------------------- iaxprov.conf tos ef =========================================== Für den größtmöglichen Nutzen müssen Sie sicherstellen, dass Ihre Netzwerk-Hardware ToS unterstützt (ggf. aktivieren). Für Cisco-Geräte siehe „Enterprise QoS Solution Reference Network Design Guide“[44] , für Linux-Systeme siehe „Linux Advanced Routing & Traffic Control HowTo“[45]. | ||
--doc/ip-tos.txt |
Beispiel:
tos = ef
adsi = [yes|no]
ADSI (Analog Display Services Interface)[46] sind verschiedene Datendienste für analoge Telefone mit einem Display, z. B. blinkende LED/Anzeige im Display bei wartenden Nachrichten etc.
Falls Sie kompatible Telefone haben, können Sie diesen Dienst aktivieren.
Beispiel:
adsi = yes
register => username[:password]@remote-host
Ist unser Asterisk-Server nur über eine dynamische IP-Adresse
erreichbar (also kein DNS, sondern nur eine IP-Adresse), so muss er sich
bei jedem IP-Adresswechsel bei seiner Gegenstelle neu registrieren,
sonst weiß die Gegenstelle nicht, an welche IP-Adresse sie Gespräche
durchstellen soll. Dazu wird register =>
verwendet.
Beachten Sie, dass register
-Angaben nur benutzt
werden, wenn das entfernte Ende Sie als Peer und
host=dynamic
eingestellt hat.
Das grundlegende Format einer Registerangabe sieht wie folgt aus:
register =>
username[:password]@remote-host
Alternativ können Sie, indem Sie den Namen eines geeigneten
RSA-Schlüssels[47] in eckige Klammern ([]
) setzen, einen
RSA-Schlüssel spezifizieren:[48]
register =>
username:[rsa-key-name]@remote-host
Standardmäßig werden Registeranfragen über Port 4569 gesendet.
Sie können aber durch Anhängen von
:
(also z. B.
Portnummer
:4444
) an den Hostnamen explizit einen anderen
angeben.
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. einem Benutzer-Endgerät, das sich mit uns
verbindet) oder einem peer
(z. B. einem 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
( 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, den Bindestrich und den
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 „bandwidth
“).
Beispiel:
bandwidth = low
allow = [all|Name des Codecs]
Bestimmte Soundcodecs können gezielt erlaubt
(allow
) oder verboten (disallow
) werden (siehe
„allow
“). Dabei ist zu beachten, das
eventuell 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
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 = [default|omit|billing|documentation]
AMA ist die Abkürzung für „Automatic Message
Accounting“ und spezifiziert unter anderem Standardmechanismen
zur Erzeugung und Übermittlung von Anrufprotokollen (CDRs) (siehe „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
(„defaultip
“).
Beispiele:
host = 192.168.0.201
host = dynamic
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 = 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
bis 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
auth = [plaintext|md5|rsa]
Zum Identifizieren des anderen Peers/Users stehen drei Methoden
zur Auswahl: plaintext
, md5
und
rsa
.
plaintext
- Diese Methode ist sehr unsicher, da das Passwort im
Klartext übertragen wird. Sie 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
- Die
rsa
-Methode ist das sicherste Verfahren durch öffentliche und private Schlüssel. Diese Schlüssel werden beiinkeys
(„inkeys
“) undoutkeys
(„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 „auth
“).
Beispiel:
secret = meinpasswort
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 = [rsa-key]
Sie können die outkey
-Option verwenden, um sich
bei einem Peer mithilfe 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-Nachricht (Message Waiting
Indication) an die Knoten am Ende dieses Kanals schicken. Befindet sich
die Mailboxnummer in einem anderen Voicemail-Context 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 unterschiedliche Sprachbausteine
zu benutzen.
Beispiel:
language = de
context = [Context]
Der Context soll dem Benutzer dieser Verbindung zugeordnet werden.
Beispiel:
context = default
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 = [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 = [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 eventuell Probleme bei eingeschaltetem
trunk
(siehe „trunk
“).
Beispiel:
jitterbuffer = yes
forcejitterbuffer = [yes|no]
Normalerweise ist es die Aufgabe der Endgeräte, einen Jitter-Buffer [49] einzurichten. 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 in der Regel nicht höher als 500 einstellen, sonst kann es zu Tonaussetzern kommen.
Beispiel:
maxjitterbuffer = 400
resyncthreshold=[Wert in Millisekunden]
Der Resynchronisierungsgrenzwert wird benutzt, um den
Jitter-Bufferneu zu takten bzw. neu abzustimmen, falls eine signifikante
Änderung über wenige Frames hinweg erkannt wird. Dabei wird angenommen,
dass der Veränderung eine Verwechslung von Zeitstempeln zugrunde liegt.
Der Resynchronisierungsgrenzwert 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.[50]In Version 1.2.x arbeitet der Jitter-Buffer (siehe „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 (bzw. deren Software) kommen nicht mit
diesen Nachrichten zurecht.
Beispiel:
qualify = yes
[42] Hier ist immer IAX2, also IAX Version 2 gemeint.
[44] http://www.cisco.com/application/pdf/en/us/guest/netsol/ns432/c649/ccmigration_09186a008049b062.pdf
[46] Wird per FSK (Frequency Shift Keying, dt.: Frequenzumtastung) übertragen.
[47] Asterisk-RSA-Schlüssel finden sich normalerweise in
/var/lib/asterisk/keys/
. Sie können mittels des
astkey-Skripts eigene Schlüssel
generieren.
[48] Die eckigen Klammern sind hier Pflicht und nicht wie im Rest des Buches als Optionsangabe zu lesen.
[49] Jitter bezieht sich auf die variierende Latenz zwischen den Datenpaketen. Bei zu großen Schwankungen kann es zu Tonausfällen kommen.
[50] Zum Beispiel das bei Asterisk enthaltene Kernel-Modul
ztdummy
oder zaprtc
von Junghanns (http://www.junghanns.net/downloads/).
AMOOCON 2010
Noch kein Ticket? Dann wird es Zeit. Nur noch wenige Tage.
- Infos unter www.amoocon.de.
- twitter.com/AMOOCON