[Gelöst] Asterisk als Provider für Fritz!Box SIP-Trunk

wusel-09

Mitglied
Mitglied seit
29 Mai 2009
Beiträge
230
Punkte für Reaktionen
3
Punkte
18
Moin,

ich google mir jetzt seit Tagen den Wolf, schein's sitze ich aber mit meinem Anliegen wieder einmal vor dem Busfahrer …

Anyway: Gegeben sei eine Fritz!OS-6-Fritzbox (hier: 7490), die über die neuere Option SIP-Trunk an einen Asterisk gehängt werden soll. Sagen wir mal 10 SIP-Clients (Hard-/Softphones, **62x in der FB) sollen mit Nummern aus einem Rufnummernblock versorgt werden — für Sipgate, Easybell und Co. trage ich das einfach ein und es tut.

Wenn ich aber selbst "Sipgate, Easybell und Co." sein will, bekomme ich Inbound-Calls (Asterisk => Fritz!Box) ums verrrecken nicht hin :( Die FB sagt zum "Dial(SIP/$MSN@FBox)" nur tapfer 404.

Ich habe einen "[FBox]"-Eintrag (sip.conf), über den von der FB über Asterisk schön rausgewählt werden kann. Aber ich bekomme es nicht hin, über diese von der FB aufgebaute Verbindung Calls zur FB zu schieben: Alles endete bislang in 404 :-(

Klar, ich kann 62x als "LAN-Client" konfigurieren und darüber Anrufe zustellen; 1. Problem: Fritz!OS ersetzt den Absender. 2. Problem: Asterisk kommt gelegentlich durcheinander und Anrufe von der FB kommen nicht mehr über "[FBox]" sondern über den "[62x]"-Account. Anderer Kontext => keine Kekse :(

Anyway: ich suche nach einem sip.conf-Sniplet, um eine SIP-Trunk-Gegenstelle für eine FB mit Fritz!OS6 sein zu können. Das kann eigentlich nicht schwer sein, den gegen Sipgate, Easybell, ... geht das ja, und die werden keine Agent-spezifischen Klimmzüge machen. Aber mit meinem aktuellen Sniplet bekomme ich keine Telefonate Asterisk -> FB zugstellt.
 
Zuletzt bearbeitet:
Also ich benutze das genau so, und bei mir funktioniert es. Ich brauche das zwar nur für die andere Richtung, damit die FB bei über Wahlregeln umgelenkten Anrufen die richtige Callerid verwenden kann, aber auch ankommend funktioniert.

Zeig uns doch bitte mal Deine Config.
Es sei denn, Du hast wirklich Dial(SIP/$MSN@FBox) stehen, dann kann ich Dir nämlich gleich schon sagen, an was es liegt: ${MSN}
 
Hi,

Passage aus der sip.conf:
Code:
[49000012345]
type=peer
insecure=port,invite
username=49000012345
fromuser=49000012345
secret=****
host=dynamic
qualify=yes
context=to_fb
dtmfmode=rfc2833
fromdomain=10.0.0.253
qualifyfreq=600
disallow=all
allow=ulaw
allow=alaw
;allow=g722
;allow=g726
canreinvite=yes

Einstellung FB:
Code:
Rufnummer für die Anmeldung*  Interne Rufnummer in der FRITZ!Box*

4900001234556                 1234556
666                           666
4900001234555                 1234555
4900001234550                 1234550

Benutzername   49000012345
Kennwort       ****
Registrar      10.0.0.140

Anruf ergibt:
Code:
[Jan 12 10:39:34] VERBOSE[18373][C-0000002a] pbx.c: Executing [4900001234556@sip_in_siptrunk1:8] Dial("SIP/siptrunk1-00000036", "SIP/1234556@49000012345,30,ot") in new stack
[Jan 12 10:39:34] VERBOSE[18373][C-0000002a] netsock2.c: Using SIP RTP CoS mark 5
[Jan 12 10:39:34] VERBOSE[18373][C-0000002a] app_dial.c: Called SIP/1234556@49000012345
[Jan 12 10:39:34] VERBOSE[18373][C-0000002a] app_dial.c: Everyone is busy/congested at this time (1:0/0/1)
[Jan 12 10:39:34] VERBOSE[18373][C-0000002a] pbx.c: Executing [4900001234556@sip_in_siptrunk1:9] NoOp("SIP/siptrunk1-00000036", "HANGUPCAUSE 1 is 1") in new stack

sip debug peer:
Code:
[Jan 12 10:41:39] VERBOSE[18406][C-0000002c] app_dial.c: Called SIP/1234556@49000012345
[Jan 12 10:41:39] VERBOSE[8612] chan_sip.c: 
<--- SIP read from UDP:10.0.0.253:5060 --->
SIP/2.0 404 Not Found
Via: SIP/2.0/UDP 10.0.0.140:5060;branch=z9hG4bK1165ce82
From: <sip:[email protected]>;tag=as14dfd9bb
To: <sip:[email protected]>;tag=C6D48D4D39E047E5
Call-ID: [email protected]
CSeq: 102 INVITE
User-Agent: FRITZ!OS
Content-Length: 0

Ich hab's auch mit 49... probiert und 666 (damit habe ich den Trunk angelegt), gleiches Ergebnis. Irgendwie raff ich's nicht, was schmeckt der FB nicht?! [Edit: Initial hieß die Verbindung "voip-fb", aber auch damit gab's nur 404 beim Dial(SIP/666@voip-fb).]

Nachtrag: FB ist eine 7490 mit 6.60 und hängt noch per ISDN an einem Anlagenanschluß. Letztes sollte IMHO für SIP irrelevant sein, aber der Vollständigkeit halber sei es erwähnt ;)

Rauswahl geht und sieht so aus. Demnach sollte die 49er-Form (E.164) inbound tun?
Code:
<--- SIP read from UDP:10.0.0.253:5060 --->
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP 10.0.0.253:5060;rport;branch=z9hG4bKE69E00710B76BBD8
From: <sip:[email protected]>;tag=24CBAF9691AE5D3D
To: <sip:[email protected]>
Call-ID: [email protected]
CSeq: 116 INVITE
Contact: <sip:[email protected];uniq=B2D172A13B1D7370448831ECCC283>
Privacy: none
Max-Forwards: 70
Expires: 120
User-Agent: AVM FRITZ!Box 7490 113.06.60 (Jun 23 2016)
Supported: 100rel,replaces
Allow-Events: telephone-event,refer
Allow: INVITE,ACK,OPTIONS,CANCEL,BYE,UPDATE,PRACK,INFO,SUBSCRIBE,NOTIFY,REFER,MESSAGE,PUBLISH
Content-Type: application/sdp
Accept: application/sdp, multipart/mixed
Accept-Encoding: identity
Content-Length: 429

Tut sie aber auch nicht :(
Code:
[Jan 12 12:06:17] VERBOSE[19400][C-00000030] app_dial.c: Called SIP/4900001234556@49000012345
[Jan 12 12:06:17] VERBOSE[8612] chan_sip.c: 
<--- SIP read from UDP:10.0.0.253:5060 --->
SIP/2.0 404 Not Found
Via: SIP/2.0/UDP 10.0.0.140:5060;branch=z9hG4bK3a6eaa05
From: <sip:[email protected]>;tag=as4150f7e2
To: <sip:[email protected]>;tag=F9956CCB1261351F
Call-ID: [email protected]
CSeq: 102 INVITE
User-Agent: FRITZ!OS
Content-Length: 0

(Generell: Onkz durch 0000 ersetzt, Stammnummer durch 12345 (zweistellige Durchwahlen).)



Update, 2017-01-12 22:45:

Gnampf. Als ich es heute abend mit einer anderen FB (7362SL) an einen anderen Asterisk (1.8) nachstellen wollte, fiel mir auf, daß ich nicht explizit Trunking ("SIP-Trunking mit unterschiedlichen Rufnummern") angewählt hatte. Verstehe zwar nicht, wieso man unterschiedliche Nummern auch bei "anderer Anbieter" angeben kann, aber nunja.

Also "Telefonie-Anbieter" von "anderer Anbieter" auf "SIP-Trunking mit unterschiedlichen Rufnummern" geändert, notgedrungen die Nummern noch mal neu eingegeben (warum auch immer die Daten nicht übernommen werden), Dialplan angepaßt ("exten => _4900001234556, n, Dial(SIP/${EXTEN}@49000012345, 30, ot)") — und, oh Wunder, kaum macht man's richtig ...
Code:
SIP/2.0 100 Trying
Via: SIP/2.0/UDP 10.0.0.140:5060;branch=z9hG4bK07795ccd
From: <sip:[email protected]>;tag=as6671a80c
To: <sip:[email protected]>
Call-ID: [email protected]:5060
CSeq: 102 INVITE
User-Agent: AVM FRITZ!Box 7490 113.06.60 (Jun 23 2016)
Content-Length: 0
... klingelt's auf der FB.

Gut, statt der anrufenden Nummer steht da die Stammnummer als A-Nummer (wie's auch im INVITE steht), und noch während ich dies schreibe, werden die Trunk-Nummer nicht mehr als verbunden angezeigt (ich kann aber sie weiterhin anrufen), insofern hätte ich doch noch Hilfestellung, wie man einen SIP-Trunk zwischen Asterisk und einer FB im LAN, mit Asterisk als Registrar, korrekt konfiguriert.
 
Zuletzt bearbeitet:
Cool, ich hab das grad mal ausprobiert und man kann tatsächlich nur die erste Nummer des Trunks direkt anrufen. Ist mir noch nie aufgefallen, weil ich die zweite eben nur zum rausrufen nutze.

Üblicher Weise steht bei SIP Trunks im INVITE immer der Benutzer, die gerufene Nummer nur im TO Header. Mit Asterisk funktioniert das so:

Code:
[general]
qualify = no
language = de
directmedia = no
dtmfmode = auto
disallow = all
allow = alaw,gsm

[fbf_7490]
type = friend
context = int_from_fbf
host = dynamic
nat = no
secret = sag-ich-nicht

Jetzt kommt der Trick:

Code:
exten => 0815,1,Dial(SIP/fbf_7490[COLOR=#ff0000]!${EXTEN}[/COLOR])

Das führt zu einem
INVITE sip:fbf_7490@192.168.178.1 SIP/2.0
To: <sip:0815@192.168.178.1>

In der Fritzbox "anderer Anbieter".
"Rufnummer für die Anmeldung" die gewünschten Rufnummern jeweils mit passender "interner Nummer".
Benutzername fbf_7490, Kennwort eh klar, Registrar asterisk.ip.adresse
 
Moin, reden wir jetzt über das (relativ) neue Fritz!OS-Feature "SIP Trunking", oder über "normales SIP" (mit mehreren Nummern)?

Cool, ich hab das grad mal ausprobiert und man kann tatsächlich nur die erste Nummer des Trunks direkt anrufen. Ist mir noch nie aufgefallen, weil ich die zweite eben nur zum rausrufen nutze.

Hmm, DAS habe ich gestern ja auch nicht hinbekommen, erste eingetragene Nummer war 666 in beiden Feldern, und auch mit "Dial(SIP/666@name_in_sip.conf)" bekam ich ein 404. (Auch nicht mit Löschen des Anbietereintrags und Neueintrag nur mit echten Nummern und der Stammnummer als 1.)

Üblicher Weise steht bei SIP Trunks im INVITE immer der Benutzer, die gerufene Nummer nur im TO Header. Mit Asterisk funktioniert das so:

DAS klappt seit gesten abend ja bei mir:

[…] Dialplan angepaßt ("exten => _4900001234556, n, Dial(SIP/${EXTEN}@49000012345, 30, ot)") — und, oh Wunder, kaum macht man's richtig ...
Code:
SIP/2.0 100 Trying
Via: SIP/2.0/UDP 10.0.0.140:5060;branch=z9hG4bK07795ccd
From: <sip:[email protected]>;tag=as6671a80c
To: <sip:49000012345[COLOR=#ff0000][B]56[/B][/COLOR]@10.0.0.253>
Call-ID: [email protected]:5060
CSeq: 102 INVITE
User-Agent: AVM FRITZ!Box 7490 113.06.60 (Jun 23 2016)
Content-Length: 0
... klingelt's auf der FB.

Also der Anruf kommt auf der korrekten Nummer, die intern mit 1234556 eingetragen ist (s. o.), an.

Vielleicht müssen wir hier Begrifflichkeiten klären: ich möchte eine FritzBox so an (m)einen Asterisk anschließen, wie ich es an sipgate trunking oder Easybell Business (Einstellung: Trunk) tun würde, also über die Fritz!OS-Einstellung "SIP Trunking".

In der Fritzbox "anderer Anbieter".

Genau das hatte ich – fälschlicherweise – ja vorher konfiguriert (ohne daß ich reinwählen konnte, aber ich erwartete ja auch, daß es mit "Dial(SIP/0815@fbname)" funktionierte). Was ich wollte, ist die Einstellung "SIP-Trunking mit unterschiedlichen Rufnummern" nutzen – also die Grundfunktion für "sipgate trunking" usw.

Ich kann jetzt zur FB reinrufen (s. o.) und wie gehabt rausrufen. Aber es bleibt ein Problem: Auf der FB kommt nur die Stammnummer als Caller-ID an (Anruf von 017212345678 an 00001234556 kommt so via SIP auf Asterisk an, auf der FB wird Anruf von 000012345 an 00001234556 angezeigt).
 
Was ich wollte, ist die Einstellung "SIP-Trunking mit unterschiedlichen Rufnummern" nutzen – also die Grundfunktion für "sipgate trunking" usw.

Zwischen "SIP-Trunking mit unterschiedlichen Rufnummern" und "anderer Anbieter" und dort mehrere Telefonnummern eintragen kann ich bei mir weder im GUI noch funktionell einen Unterschied erkennen.

Jedenfalls mit dieser funktioniert es bei mir wie oben beschrieben. Heißt eine Anmeldung zum Asterisk (ein Eintrag in der sip.conf), mehrere Telefonnummern.

Auf der FB kommt nur die Stammnummer als Caller-ID an

Wenn Du immer noch Deine ursprüngliche sip.conf nutzt überschreibst Du mit fromuser ja sämtliche Callerid.

Da sind noch ein paar mehr Fehlerchen drin, insecure brauchst Du nicht, username und canreinvite gibt es schon lange nicht mehr, qualifyfreq ist nur im general gültig.
 
Wenn Du immer noch Deine ursprüngliche sip.conf nutzt überschreibst Du mit fromuser ja sämtliche Callerid.

Das war's in der Tat, danke! Das ist halt das Problem, wenn's gerade heraus nicht geht, man dann googelt und sich an eigenen alten (1.4, IIRC) Configs für die Kopplung Asterisk an FB bedient. Seinerzeit hatte ich jedenfalls massive Probleme, Anrufe von Asterisk zum 7170-SIP-Registrar durchzustellen, mit "SIP-Trunking" hoffte ich, daß das viel einfacher würde — und dem ist augenscheinlich ja auch so ;)

sip.conf sieht nun so aus; die Änderungen seit 1.4 zu 11/13 durchzuackern, wird Wochenendbeschäftigung werden.
Code:
[0049000012345]
type=peer
secret=****
host=dynamic
qualify=yes
context=to_fb
dtmfmode=rfc2833
disallow=all
allow=ulaw
allow=alaw
directmedia=no

Mit G.722 gab's übrigens ulkige Effekte beim Rausrufen (snom -> FB -> Asterisk -> ITSP) auf Testnummern (BlueSIP Echo-Test; mein anderer Asterisk): knarzige Micky-Maus-Stimme. Aber das ist ein anderes Thema ;)

Zwischen "SIP-Trunking mit unterschiedlichen Rufnummern" und "anderer Anbieter" und dort mehrere Telefonnummern eintragen kann ich bei mir weder im GUI noch funktionell einen Unterschied erkennen.

Im GUI in 6.60 zumindest nicht, das stimmt. Funktional aber? Du schriebst doch zuvor:
Cool, ich hab das grad mal ausprobiert und man kann tatsächlich nur die erste Nummer des Trunks direkt anrufen. Ist mir noch nie aufgefallen, weil ich die zweite eben nur zum rausrufen nutze.

Mit "SIP-Trunking mit unterschiedlichen Rufnummern" geht das problemlos:
Code:
app_dial.c: Called SIP/4900001234555@0049000012345
app_dial.c: SIP/0049000012345-00000033 is ringing

Sprich: den (coolen) Trick mit "Dial(SIP/fbf_7490!${EXTEN})" braucht man mit der Trunking-Einstellung auf der FB nicht, das geht auch mit "Dial(SIP/fbf_7490/${EXTEN})" — und man sieht auf der FB auch, auf welcher Nummer eigentlich angerufen wurde.

Oder mit meinen Beispieldaten: Mit "Dial(SIP/0049000012345!2222226)" bekomme ich einen Eintrag, daß die 12345 angerufen wurde, es klingelt aber bei Geräten, die auf 2222226 lauschen sollen (eigentlich eine ISDN-Durchwahl in diesem Fall).
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.