Wie soll man etwas lernen, wenn man Probleme hat, den Start-Punkt für die eigenen Recherche zu finden … nochmal zurück zu Deiner FRITZ!Box 4040. In der kannst Du IP-Telefone anlegen. Du legst ein IP-Telefon für jedes Deiner Tisch-Telefone an. Damit verbindest Du Deine Innovaphone IP111. Die Mini-Telefon-Anlage im Innovaphone selbst nutzt Du nicht.
„NAT binding“ … der Router könne den eingehenden Anruf keiner IP Adresse zuordnen?
Fasst. Du hast in Deinem Router eine Firewall, die zwanghaft versucht alle
Ports geschlossen zu halten. Wenn eine IP-Verbindung keinen Datenverkehr aufweist, dann schließt die Firewall den Port. Die Zeitspanne dafür – im Englischen „Session Timeout“, „Binding“ bzw. „Aging“ genannt – ist vergleichsweise kurz. Bei einer FRITZ!Box nur fünf Minuten, also
300 Sekunden. Die Zeitspanne kannst Du selbst ermitteln, z.B. über
$ turnutils_natdiscovery -t -T 295 stun.antisip.com
Erhältst Du auf „Response 1“ ein „STUN receive timeout..“, sind 295 Sekunden zu lang. Erhältst Du „Response 2“, hast Du einen Wert innerhalb Deiner Zeitspanne. Was dieses Tool genau macht, steht in
RFC 5780 Abschnitt 4.6. Dort stehen auch noch mehr Hintergründe. Muss man nicht lesen. Wenn noch Fragen, einfach fragen. Wie schwer das Thema selbst für Fachleute-unter-sich ist, siehst Du daran, dass ich hier von Firewall rede, die Ursache aber als „NAT-Binding“ bzw. „NAT-[Session]-Timeout“ bezeichnet wird. Und NAT ist etwas, was ich eigentlich nur in IPv4 habe. Aber dieses Problem besteht auch ohne NAT in IPv6.
TCP hat traditionell längere Zeitspannen.
Weil die Telekom Deutschland nicht nur SIP über UDP sondern auch TCP anbietet, wäre daher eine Herangehensweise in Digium Asterisk den Transport von UDP auf TCP zu ändern.
Damit dieses Zeitfenster sich nicht schließt, ist ein Trick, auf der IP-Verbindung (für die VoIP/SIP-Signalisierung) immer mal wieder Datenverkehr zu erzeugen. So schließt die Firewall diese IP-Verbindung nicht (solange bis wieder zu lange Ruhe ist). Und jetzt wird es kompliziert. Offiziell bietet Digium Asterisk für Provider-Registrierungen (über UDP) kein Keep-Alive, weder im alten Channel-Treiber
chan_sip noch im aktuellen
chan_pjsip. Warum auch immer†. Für uns Normalos mit Firewall, NAT und Privat-Anschlüssen bedeutet das:
A) lege im Router eine Port-Freigabe an.
siehe Konfigurationsdatei
pjsip.conf Abschnitt
type=transport Parameter
bind. Steht dort kein Port, bist Du auf 5060.
Das hat den Nachteil, dass alle eingehenden Pakete auf Port 5060 bei Deinem Digium Asterisk landen, also auch solche die nicht von der Telekom Deutschland stammen. Das sind dann VoIP-/Port-Scanner, die versuchen bei Dir einzubrechen, um über Dich teure Telefonate zu führen. Bei einem korrekt eingestellten Digium Asterisk
nicht das Problem …
oder
B) wechsele in Digium Asterisk von UDP auf TCP; Abschnitt
type=transport auf
transport=tcp.
Dann greift im Abschnitt
type=global der Parameter
keep_alive_interval=295. Steht das dort nicht, bist Du nicht auf 295 sondern 90 Sekunden. In dem Punkt ist sogar die Dokumentation in der Beispiel-Datei
pjsip.conf.sample falsch. Das zeigt erneut, wie fragil dieses eigentlich basale Thema Erreichbarkeit in Digium Asterisk bzw. VoIP/SIP im Allgemeinen ist. Egal. So verschickt Digium Asterisk alle 295 Sekunden als Keep-Alive ein Double-CRLF-Refresh.
oder
C) lege ein
type=aor mit
qualify_frequency=295 und
contact an. Beim
contact gibst Du als Wert dasselbe wie bei
registration/client_uri an. Diesen AOR referenzierst Du aus einem
type=endpoint heraus. Diesen Endpoint wiederum referenziert Du aus dem
type=registration heraus. Damit dieser Endpoint überhaupt geladen wird, musst Du noch zusätzlich im
type=registration den Parameter
line=yes setzen.
So verschickt Digium Asterisk alle 295 Sekunden (minus
qualify_timeout) als Keep-Alive eine SIP-
OPTION.
Das waren Deine drei Alternativen. Theoretisch könntest Du als Alternative D stattdessen auch einen Router/Firewall holen, welche Dir erlaubt diese Zeitspannen einzustellen. Mehr dazu in
diesem Thread … als NAT-Bindung nimmst Du den Wert des Expires, welches die Telekom Deutschland Dir in der Antwort auf das SIP-
REGISTER geschickt hat. Diese Alternative lässt sich auch mit Alternative B kombinieren. Und wenn Du mit TCP statt einem Double-CRLF-Refresh, also
keep_alive_interval=0 lieber TCP-Keep-Alives nutzen willst:
$ sudo sysctl -w net.ipv4.tcp_keepalive_time=295
Das wäre die sauberste Alternative, also im Digium Asterisk von UDP auf TCP wechseln, das TCP-Keep-Alive des Host-Systems des Digium Asterisk auf Deine lokale NAT-Session-Timeout stellen. Und nie mehr Probleme haben.
† Wenn ich ehrlich bin, ist das bei UDP auch gar nicht nötig, denn Du kannst bei UDP parallel dafür ein
Skript laufen lassen …
Die Diskussion ist ja etwas ins Grundsätzliche abgeschweift.
Wir können Dir nicht einfach nur Deine Fragen beantworten. Wir haben auch eine Verantwortung Dir gegenüber. Auch wenn viele Anleitungen im Netz „einfach“ aussehen, im Detail ist es dann doch kompliziert bzw. – wie Du gemerkt hast – sind die Anleitungen unvollständig bzw. selten nachvollziehbar. Ich bin mir bei Dir überhaupt nicht sicher, ob Du weißt, was Du Dir da antust. Daher die Nachfragen, ob Du nicht
A) auf einer höheren Abstraktion (Sangoma FreePBX) oder
B) mit einer moderneren Lösung (FreeSWITCH) oder
C) mit einer Übergangsbox dazwischen (AVM FRITZ!Box)
besser aufgehoben bist. Ich empfehle Alternative C, siehe auch
Post #6. Und wenn die Alternative nicht genommen wird – was vollkommen OK ist –, erwarte ich aber Nachfragen oder Begründungen. Wenn ich sehe, dass Du es verstanden hast, darfst Du gerne machen was Du willst.
Willst Du zwischen den Zeilen transportieren …
Du hast meine Argumente nicht verstanden und zeigst auch nicht, dass Du sie verstehen willst.
Für alle Anderen: Die Deutsche Telekom schert sich nicht um Digium Asterisk, Sangoma FreePBX oder FreeSWITCH. Im Gegensatz zu vielen anderen VoIP/SIP-Anbietern. Entsprechend kann von heute auf morgen einiges, manches (oder wenn Du Glück hast!) gar nichts funktionieren – von heute auf morgen. Folglich müsste man jeden Tag wenigstens die wichtigsten Anruf-Szenarien durchspielen – also testen. Manche Tests erfordern Wissen, was alles schief sein kann – also Fachwissen. Wenn dann etwas kaputt ist, kannst Du niemanden bei der Telekom Deutschland anrufen. Du musst es selbst fixen. Ich bin kein großer Fan von diesen Übergangsboxen bzw. Kauf-Boxen, weil das Black-Boxes sind, die ich nicht selbst ändern kann. Aber, aber, bei einem VoIP/SIP-Provider wie der Deutschen Telekom, die sich nicht um Digium Asterisk schert sind solche Boxen pures Gold wert. Ich als Normalo kann zwar auch niemanden bei AVM, Bintec-Elmeg oder Lancom erreichen, aber diese drei Hersteller können es sich nicht erlauben, nicht mit der Telekom Deutschland kompatibel zu sein. Und noch was: Vieles ist bereits kaputt, denn die Telekom ist ein IMS basierter VoIP/SIP-Anbieter. Damit ist der im Grund 20 Jahre alte Digium Asterisk nie getestet worden.
Was die vollständige Konfig für die Telekom / AllIP hinsichtlich Asterisk 16 / pjsip (und FreePBX) angeht: die habe ich hier im Forum geschrieben. Einfach danach suchen.
Hier im Forum kann man direkt verlinken. Oben rechts bei jedem Post einen Kontext- bzw. Rechts-Klick auf die Post-Nummer z.B. #1. Kopieren. Dann auf das Symbol „Link einfügen“ gehen. Einfügen. Warum Du das nicht
einfach machst? Ich vermute mal Du meinst
Post #5 …