Situation: Alternativer VDSL Anbieter hat Vectoring ausgebaut und recht teure Verträge ohne Telefonie oder gegen zusätzliche monatliche Gebühr ohne Flatratemöglichkeit
Idee: DSL Router mit DECT für SIP-URI Anrufe verwenden (sip:<SIP-Benutzername>@<ip oder dyndns name> vom Angerufenen erforderlich)
Probleme: Bei SIP-URI Calls übermittelt der DSL Router wegen TKG Anforderungen nur unbekannt oder anonymous (einige Empfänger gehen nicht ran oder leiten auf Anrufbeantworter um), Manche DSL Router lassen keine direkten SIP-URI Anrufe zu (Firewallregeln - z.B. O2 Homebox 2), was sich ggf. durch Routerwechsel beim Empfänger lösen läßt, falls der das macht ;-)
Lösungsansatz: DSL Router meldet sich auf eigenen Asterisk Server an, der auf einem alten TP-Link TD-W9980 Router (Alternative, andere Hardware z.B. Raspi mit OpenWrt oder System mit Möglichkeit Asterisk zu installieren) mit installiertem Asterisk läuft und dieser übernimmt alles, was der DSL Router bei SIP nicht kann/unterstützt. Anrufregeln im DSL Router leiten bestimmte Rufnummern auf Asterisk um, für SIP-URI Direktanrufe.
Ausgewählte Telefonnummern werden also über Asterisk umgeleitet, um Anrufkosten und die Gebühren für Telefonie beim DSL Anbieter zu sparen.
Für ankommende Anrufe habe ich einen kostenlosen SIP Account mit Festnetznummer.
Gelöste Themen: Asterisk als SIP-URI Anrufer hinter NAT (wichtig sind die externhost oder external_... Definitionen), TP-Link Router mit nur 8MB Flash Speicher, Welche Asterisk Pakete müssen minimal installiert werden
Als Asterisk Anfänger habe ich zuerst pjsip probiert, es damit aber nicht zum Laufen bekommen, RTP Pakete wurden nicht übertragen/kein Audio beim telefonieren. Nach Umschwenken auf chan_sip mit dem gleichen Problem habe ich dann tcpdump installiert und beim Trace festgestellt, daß die interne IP vom OpenWrt/Asterisk übertragen wird, was natürlich nicht funktioniert. Daher ist die für chan_sip notwendige Konfiguration angehängt. Den Port vom Asterisk für die SIP Anmeldung im internen Netz habe ich auf 50xx geändert, weil bei 5060 das Auflegen der Gegenstelle nicht beim Asterisk ankam (vermutlich vom DSL Router geschluckt, im tcpip trace hat man gesehen, daß die SIP Pakete vom Asterisk zur Gegenstelle vom Port 5060 kamen).
Voraussetzungen: DSL-Router mit DECT, aktivem Dyndns, bestehender SIP Rufnummer,UDP Portforwarding Möglichkeit, Connection Tracking für UDP, offener SIP Konfiguration und Wahlregeln Rufnummern auf bestimmte SIP Anschlüsse zu leiten und Asterisk auf irgendeiner Hardware mit interner IP Adresse
Aufbau: <Anderer VOIP Anschluss, der SIP-URI Anrufe erlaubt> - <Internet> - <DSL-Router> - <Internes Netz> - <OpenWrt mit Asterisk>
DSL-Router und OpenWrt mit Asterisk sind bei mir mit Kabel verbunden.
Wichtig, ich möchte den anderen VOIP Anschluß anrufen, nicht über den anderen Anschluß telefonieren! Und natürlich gehen mehrere/verschiedene Anschlüsse.
Die Möglichkeit SIP-URI (also Direktanrufe ohne Provider) von DSL-Router zu DSL-Router zu machen, kenne ich schon länger wegen HD-Telefonieversuchen vor etlichen Jahren. Fritz-Boxen unterstützen diese Möglichkeit auch, man muß die SIP-URI ohne "sip:" als Rufnummer eintragen, benötigt dann aber zwingend eine Kurzwahl, z.B. **707 zur Anwahl vom DECT Mobilteil aus.
Wichtig bei z.B. der Fritzbox ist, den SIP Benutzernamen, der im DSL Router konfiguriert ist, in der SIP-URI zu verwenden, der nicht notwendigerweise die Telefonnummer ist, also:
<sip-benutzername>@<ip adresse oder dyndns hostname des Empfänger DSL Routers>, bei anderen Routern muß manchmal noch "sip:" davorgesetzt werden.
Durchführung:
Viel Erfolg.
Update1: Das Portmapping ist unnötig, siehe nächsten Post. Entfernt.
Update2: allowexternaldomains=no ohne konfigurierte Domains ist nutzlos. Entfernt.
Idee: DSL Router mit DECT für SIP-URI Anrufe verwenden (sip:<SIP-Benutzername>@<ip oder dyndns name> vom Angerufenen erforderlich)
Probleme: Bei SIP-URI Calls übermittelt der DSL Router wegen TKG Anforderungen nur unbekannt oder anonymous (einige Empfänger gehen nicht ran oder leiten auf Anrufbeantworter um), Manche DSL Router lassen keine direkten SIP-URI Anrufe zu (Firewallregeln - z.B. O2 Homebox 2), was sich ggf. durch Routerwechsel beim Empfänger lösen läßt, falls der das macht ;-)
Lösungsansatz: DSL Router meldet sich auf eigenen Asterisk Server an, der auf einem alten TP-Link TD-W9980 Router (Alternative, andere Hardware z.B. Raspi mit OpenWrt oder System mit Möglichkeit Asterisk zu installieren) mit installiertem Asterisk läuft und dieser übernimmt alles, was der DSL Router bei SIP nicht kann/unterstützt. Anrufregeln im DSL Router leiten bestimmte Rufnummern auf Asterisk um, für SIP-URI Direktanrufe.
Ausgewählte Telefonnummern werden also über Asterisk umgeleitet, um Anrufkosten und die Gebühren für Telefonie beim DSL Anbieter zu sparen.
Für ankommende Anrufe habe ich einen kostenlosen SIP Account mit Festnetznummer.
Gelöste Themen: Asterisk als SIP-URI Anrufer hinter NAT (wichtig sind die externhost oder external_... Definitionen), TP-Link Router mit nur 8MB Flash Speicher, Welche Asterisk Pakete müssen minimal installiert werden
Als Asterisk Anfänger habe ich zuerst pjsip probiert, es damit aber nicht zum Laufen bekommen, RTP Pakete wurden nicht übertragen/kein Audio beim telefonieren. Nach Umschwenken auf chan_sip mit dem gleichen Problem habe ich dann tcpdump installiert und beim Trace festgestellt, daß die interne IP vom OpenWrt/Asterisk übertragen wird, was natürlich nicht funktioniert. Daher ist die für chan_sip notwendige Konfiguration angehängt. Den Port vom Asterisk für die SIP Anmeldung im internen Netz habe ich auf 50xx geändert, weil bei 5060 das Auflegen der Gegenstelle nicht beim Asterisk ankam (vermutlich vom DSL Router geschluckt, im tcpip trace hat man gesehen, daß die SIP Pakete vom Asterisk zur Gegenstelle vom Port 5060 kamen).
Voraussetzungen: DSL-Router mit DECT, aktivem Dyndns, bestehender SIP Rufnummer,
Aufbau: <Anderer VOIP Anschluss, der SIP-URI Anrufe erlaubt> - <Internet> - <DSL-Router> - <Internes Netz> - <OpenWrt mit Asterisk>
DSL-Router und OpenWrt mit Asterisk sind bei mir mit Kabel verbunden.
Wichtig, ich möchte den anderen VOIP Anschluß anrufen, nicht über den anderen Anschluß telefonieren! Und natürlich gehen mehrere/verschiedene Anschlüsse.
Die Möglichkeit SIP-URI (also Direktanrufe ohne Provider) von DSL-Router zu DSL-Router zu machen, kenne ich schon länger wegen HD-Telefonieversuchen vor etlichen Jahren. Fritz-Boxen unterstützen diese Möglichkeit auch, man muß die SIP-URI ohne "sip:" als Rufnummer eintragen, benötigt dann aber zwingend eine Kurzwahl, z.B. **707 zur Anwahl vom DECT Mobilteil aus.
Wichtig bei z.B. der Fritzbox ist, den SIP Benutzernamen, der im DSL Router konfiguriert ist, in der SIP-URI zu verwenden, der nicht notwendigerweise die Telefonnummer ist, also:
<sip-benutzername>@<ip adresse oder dyndns hostname des Empfänger DSL Routers>, bei anderen Routern muß manchmal noch "sip:" davorgesetzt werden.
Durchführung:
- OpenWrt auf TP-W9980 initial installieren, festgestellt, daß keine 3MB für die Asterisk Installation frei sind, Linux Rechner und OpenWrt Image Builder verwendet, um passende OpenWrt Firmware (<7,5MB Größe) zu erstellen und installiert, folgende Asterisk Module habe ich verwendet/waren nötig (chan_sip):
asterisk16
asterisk16-bridge-builtin-features
asterisk16-bridge-simple
asterisk16-bridge-softmix
asterisk16-chan-sip
asterisk16-codec-a-mu
asterisk16-codec-alaw
asterisk16-codec-g722
asterisk16-res-pjproject
asterisk16-res-rtp-asterisk
asterisk16-res-sorcery
- OpenWrt konfigurieren, so daß eine interne IP Adresse da ist und DNS auf dem Gerät funktioniert (der Einfachheit habe ich den OpenWrt Router als DHCP Client konfiguriert und im DSL Router ein statisches DHCP lease zugewiesen, also daß immer die gleiche IP Adresse vergeben wird)
- Den OpenWrt Hostnamen auf den DynDns Namen vom DSL-Router geändert (in einem Trace wurde vor jedem SIP-URI Anruf vom Asterisk ein NSLookup mit dem eigenen Gerätehostnamen gemacht), ist unnötig, wenn man den dyndns hostnamen in der sip.conf bei externhost= einträgt.
- Eine Gegenstelle und globale Einstellungen in der sip.conf konfigurieren:
Code:[general] disallow=all ;konfig der codecs allow=g722 ;hd-voice allow=alaw ;G711 qualify=yes canreinvite=no directmedia=nonat ;Directmedia nicht bei NAT rtp_keepalive=1 ;Keepalive für RTP externhost=hostname.dyndnsanbieter.domain ;externe IP DSL Router für RTP Funktion externrefresh=1200 ;externhost DNS refresh interval localnet=192.168.1.0/255.255.255.0 language=de bindport=50xx ;Antworten gingen sonst an DSL Router allowguest=no ;keine Gastanmeldungen tos_sip=cs3 ;QoS Tag kann nicht schaden tos_audio=ef ;dito [Telefon] ;nur für abgehende SIP Anrufe genutzt type=friend context=from-internal host=dynamic defaultuser=Telefon ;username für SIP config secret=mypass ;passwort für SIP config nat=no ;kein NAT im internen Netz canreinvite=no callerid=MeinName <0xxxxxxxxxxxxx> ; anzuzeigender Name und Rufnummer
- extensions.conf (jede Rufnummer, die auf eine SIP-URI umgeleitet werden soll, braucht eine eigene Regel):
Code:[from-internal] ;Gegenstelle1 exten => 0xxxxxxxxxxx,1,Dial(SIP/sip:<benutzer/telefonnummer>@<ip oder hostname>,60,r) exten => 0xxxxxxxxxxx,2,Hangup ;Gegenstelle2 exten => 0yyyyyyyyyyy,1,Dial(SIP/sip:<benutzer/telefonnummer>@<ip oder hostname>,60,r) exten => 0yyyyyyyyyyy,2,Hangup
- Asterisk mit der neuen Konfiguration starten und ggf. mit Trace Option starten
[*]Im DSL-Router Port-Forward einrichten, Port 50xx mit Protokoll UDP und der internen IP vom OpenWrt/Asterisk.
- Im DSL-Router die SIP Daten konfigurieren (Benutzer aus sip.conf ist Telefon und Passwort ist mypass, Rufnummer für die Anmeldung auch Telefon, interne Rufnummer z.B. 6000, Registrar Openwrt IP Adresse mit Port, z.B. 192.168.1.5:50xx) und die erfolgreiche Anmeldung abwarten.
- Entweder Telefonnummerneintrag von 0xxxxxxxxxxx ändern, daß über 6000/Telefon SIP Nutzer angerufen wird oder Anrufregel definieren (je nach Gerät, in der Webschnittstelle oder auch mit Tastencode wie *188#...), um über Asterisk zu telefonieren.
- Testanrufe machen
Viel Erfolg.
Update1: Das Portmapping ist unnötig, siehe nächsten Post. Entfernt.
Update2: allowexternaldomains=no ohne konfigurierte Domains ist nutzlos. Entfernt.
Zuletzt bearbeitet: