8.6. SIP
- Es ist ein offenes Protokoll.
- Die Spezifikation war von Anfang an als RFC 3261 für jeden Entwickler kostenlos einsehbar.
Anmerkung
8.6.1. Das SIP-NAT-Problem
Anmerkung
Anmerkung
rtp.conf
eingestellt
werden.8.6.2. SIP-Geräte in der extensions.conf
extensions.conf
werden Kanäle zu
SIP-Geräten in der Form
SIP/Gerätename
angegeben. Um einen
beliebigen SIP-User über das Internet zu erreichen, verwendet man
SIP/user
@domain
,
für einen User auf einem Proxy gibt man
SIP/proxy
/user
oder
SIP/user
@proxy
an, wobei der Proxy als Abschnitt definiert sein muss (siehe Abschnitt 8.6.4, „Geräte-Einstellungen“).sip show peers
- Listet alle SIP-Peers auf (auch Friends).
sip show users
- Listet alle SIP-User auf (auch Friends).
sip show registry
- Zeigt den Status der Hosts, bei denen wir uns anmelden.
sip debug
bzw.sip set debug
- Zeigt SIP-Debug-Meldungen.
8.6.3. Globale Einstellungen
sip.conf
im Abschnitt [general]
vorgenommen. Hier sollen aber nur die
wichtigsten und gebräuchlichsten Parameter beschrieben werden; weitere
Erklärungen zu exotischen Parametern finden Sie in der
sip.conf
.context
context = Contextname
context=default
allowguest
allowguest = [yes|no]
yes
allowguest=no
allowtransfer
allowtransfer = [yes|no]
allowtransfer=yes
realm
realm = Hostname
asterisk
oder ein ggf. in
asterisk.conf
eingestellter Systemname. Verwenden
Sie hier den Host- oder Domain-Namen Ihres Servers.realm=ast1.beispiel.de
bindport
bindport = Portnummer
bindport=5060
bindaddr
bindaddr = IP-Adresse
bindaddr=0.0.0.0
TOS-Flags (tos_sip
, tos_audio
,
tos_video
)
tos
“. In der Regel sollte man diese Werte
angeben (per Default sind sie nicht gesetzt):tos_sip=cs3 ; für SIP-Pakete (Kommunikationsaufbau) tos_audio=ef ; für RTP-Audio-Pakete tos_video=af41 ; für RTP-Video-Pakete
Sprach-Codecs (allow
, disallow
)
allow
und disallow
können bestimmte
Sprachcodecs erlaubt oder nicht erlaubt werden. Außer den bekannten
Codecs gibt es all
für alle. Dabei ist die Reihenfolge
wichtig.; Beispiel: Alle Codecs außer ilbc erlauben: allow=all disallow=ilbc ; Beispiel: nur die Codecs gsm und ulaw erlauben: disallow=all allow=gsm allow=ulaw
language
language = Sprachkürzel
language=de
dtmfmode
dtmfmode = Modus
rfc2833
- (Default) Informationsnachrichten nach RFC 2833 senden.
info
- Als SIP-INFO-Nachrichten senden.
inband
- DTMF-Töne „inband“ als Audio senden.
auto
- Verwendet
rfc2833
wenn möglich, sonstinband
.
dtmfmode=rfc2833
videosupport
videosupport = [yes|no]
videosupport=yes
maxcallbitrate
maxcallbitrate = Übertragungsrate
384
(für 384 Kbit/s).maxcallbitrate=384
g726nonstandard
g726nonstandard = [yes|no]
doc/rtp-packetization.txt
, ab Asterisk 1.4). Dies
sollte nur eingestellt werden, wenn Sie Probleme mit z. B. Grandstream-
oder Sipura-Telefonen haben, die fälschlicherweise G726-32 aushandeln,
obwohl sie AAL2-G726-32 meinen.g726nonstandard=no
rtpkeepalive
rtpkeepalive = Intervall
rtpkeepalive=5 ; alle 5 Sekunden Keep-Alive-Pakete senden
t38pt_udptl
t38pt_udptl = [yes|no]
no
. Kann pro Kanal deaktiviert, aber
nicht ohne diese Einstellung aktiviert werden.t38pt_udptl=yes
register
register =>user
[:passwort
[:authuser
]]@host
[:port
][/extension
]
extensions.conf
definiert sein, damit Anrufe von diesem Proxy empfangen werden können.
Ohne Angabe der Extension gilt s
.; eingehende Anrufe von sip-provider.de an die Extension 999 leiten:
register => 123456:passwort@sip-provider.de/999
; eingehende Anrufe von sip-provider an die Extension 999 leiten:
register => 123456:passwort@sip-provider/999
[sip-provider]
...
externip
externip = IP-Adresse
externip=123.45.67.89
externhost
externhost = Hostname
externip
“, nur dass stattdessen
der eigene öffentliche Hostname angegeben wird (der natürlich per DNS
auflösbar sein muss).externhost=hanspeter.dyndns.net
localnet
localnet = Adressraum
localnet=192.168.0.0/255.255.0.0 localnet=10.0.0.0/255.0.0.0 localnet=172.16.0.0/12 localnet=169.254.0.0/255.255.0.0
canreinvite
canreinvite = [yes|nonat|update|update,nonat]
- yes
- (Default) Normale Einstellung. Asterisk versucht, den kürzesten Audio-Pfad zu verwenden.
- nonat
- Nur umleiten, wenn sich die Teilnehmer nicht hinter einem NAT befinden (sofern das für Asterisk erkennbar ist).
- update
- Statt
INVITE
- sollenUPDATE
-Pakete zum Umleiten verwendet werden. Kann mitnonat
alsupdate,nonat
kombiniert werden.
canreinvite=nonat
jbenable
jbenable = [yes|no]
no
jbenable=yes
jbforce
jbforce = [yes|no]
jbenable
aktiviert sein.) Default: no
jbforce=no
jbmaxsize
jbmaxsize = Länge
jbmaxsize=200
jbresyncthreshold
jbresyncthreshold = Länge
jbresyncthreshold=500
jbimpl
jbimpl = [fixed|adaptive]
fixed
- (default) Der klassische Jitter-Buffer mit fester Größe (immer
jbmaxsize
). adaptive
- Der neue Algorithmus mit variabler Größe (das ist auch der Jitter-Buffer von IAX2).
jbimpl=adaptive
8.6.4. Geräte-Einstellungen
[sip-provider-in] ; für Anrufe, die über unseren SIP-Provider eingehen ; Wir kennen die Caller-ID der eingehenden Anrufe noch nicht, daher ; wird type=peer und der Abgleich per Hostname verwendet type=peer host=sip.provider.de context=from-provideroder so:
[sip-provider-out] type=peer ; da nur ausgehende Anrufe secret=geheim username=apfelmus ; unser User fromuser=apfelmus ; brauchen viele SIP-Provider host=sip.provider.de ; Host des Providers port=5060 ; Port auf dem Host des Providers call-limit=5 ; max. 5 gleichzeitige ausgehende Anrufe zulassen
type
des
Kanals (user
| peer
) nicht alle Parameter
sinnvoll sind. In der sip.conf
finden sich Beispiele
zu exotischen Parametern.type
type = [user|peer|friend]
user
- Ein Gerät, das sich zum Anrufen mit uns verbindet (z. B. ein lokales Telefon).
peer
- Ein Gerät, mit dem wir uns verbinden, oder ein Gerät, das sich mit uns verbindet, und das wir anhand des Host-Namens zuordnen.
friend
user
undpeer
in einem Abschnitt.
type=peer
context
context = Contextname
context=from-birnenbrei
secret
secret = Passwort
secret=geheim
username
username = Benutzername
username=apfelmus
fromuser
fromuser = Benutzername
fromuser=apfelmus
host
host = [Hostname
|dynamic]
dynamic
wird angegeben, wenn der Hostname des Geräts nicht bekannt ist, da er
dynamisch vergeben wird (oft zusammen mit defaultip
gebraucht).host=siphost.provider.de
defaultip
defaultip = IP-Adresse
host=dynamic
) zu erreichen, der sich noch nicht bei uns
registriert hat.defaultip=192.168.0.33
port
port = Portnummer
port=5060
call-limit
call-limit = Anzahl
type=friend
wäre
call-limit=1
ein Anruf für den peer
und einer
für den user
.call-limit=1
callerid
callerid =Vorname
Nachname
<Nummer
>
callerid=Hans Meier <1234>
nat
nat = [yes|no]
host=192.168.0.42 nat=no
mailbox
mailbox =Nummer
[@Context
][,Nummer
[@Context
][,...
]]
default
) zu. Dadurch werden die entsprechenden
MWI[41]-Nachrichten an das Gerät geschickt – z. B. für ein
Blinklicht bei neuen Nachrichten. Es können auch mehrere Mailboxen
angegeben werden.mailbox=1234@default
subscribemwi
subscribemwi = [yes|no]
mailbox
“) nur dann, wenn das Gerät danach
fragt.subscribemwi=yes
vmexten
vmexten = Extension
asterisk
(so auch in einigen
Endgeräten, z. B. snom, voreingestellt).vmexten=asterisk
Sprach-Codecs (allow
, disallow
)
allow
und disallow
können bestimmte
Sprachcodecs erlaubt oder nicht erlaubt werden (siehe „Sprach-Codecs (allow
, disallow
)“).regexten
regexten = Extension
regexten=1234
qualify
qualify = [yes|no|Wartezeit
]
yes
) nicht mit einem Pong antwortet, gilt es als nicht
erreichbar.qualify=5000
callgroup
callgroup = Gruppen
-
(Bindestrich) angegeben werden. Gruppennummern gehen von
0 bis 63.callgroup=2,4-7 ; setzt die Gruppen 2,4,5,6,7
pickupgroup
pickupgroup = Gruppen
callgroup
angegebenen Gruppen Pickup (das
Heranholen von Gesprächen) erlaubt ist.pickupgroup=2,4-6 ; Pickup für die Gruppen 2,4,5,6 erlauben
IP-Adressen-Beschränkung (deny
,
permit
)
permit
und deny
können
IP-Adressräume, aus denen sich das Gerät bei uns registrieren kann,
erlaubt oder verboten werden (nicht zu verwechseln mit
allow
/ disallow
!). Dabei ist die Reihenfolge
wichtig.; Verbinden nur von 192.168.0.* erlauben geht so: deny=0.0.0.0/0.0.0.0 ; alle verbieten permit=192.168.0.0/255.255.255.0 ; 192.168.0.* erlauben
setvar
setvar =Variablenname
=Wert
setvar=KUNDENNR=1234
rfc2833compensate
rfc2833compensate = [yes|no]
rfc2833compensate=yes
[35] Das fragen sich viele! ;-)
[36] IP-Adressen aus dem privaten Bereich beginnen beispielsweise mit 10. oder mit 192.168., lauten also zum Beispiel 10.128.1.16 oder 192.168.1.3.
[37] Es gibt mittlerweile viele unterschiedliche Formen von NAT-Gateways, mit zum Teil sehr spezieller Funktionsweise. Hier werden lediglich das grundlegende Funktionsprinzip eines NAT-Gateways und die damit verbundenen Auswirkungen beschrieben.
[38] In seltenen Fällen nutzen Firmen trotz der Verwendung von offiziellen IP-Adressen auch für interne Rechner ein NAT-Gateway. Oft tun sie das, weil sie zum Beispiel die Größe des Netzes nach außen maskieren möchten und sich generell gewisse Sicherheitsvorteile davon erhoffen.