SIP Klient hinter OpenVPN an FritzBox (7490)

genbian

Neuer User
Mitglied seit
31 Mai 2009
Beiträge
35
Punkte für Reaktionen
0
Punkte
0
Tag auch,
in folgendem Szenario bekommt das Android Handy auf dem CSipSimple (1.02.02 r2450) einrichtet ist keine eingehenden Anrufe von der FritzBox 7490 (FRITZ!OS: 06.20) signalisiert. Es klingelt nicht. Ausgehende Anrufe funktionieren (Ton in beide Richtungen).

FritzBox und OpenVPN-Gateway in LAN 1: FB: 192.168.1.1, OpenVPN-GW: 192.168.1.254
OpenVPN-Klient-Router und Handy in LAN 2: Router: 192.168.2.1 Handy: 192.168.2.2
VPN GW-Tunnel Adresse: 10.8.0.1
VPN-Klient-Router Tunnel: 10.8.0.2

Bei eingehenden Anrufen erscheint im FritzBox Webinterface unter System->Ereignisse->Telefonie
"Internettelefonie mit [email protected]:23045;ob über 10.8.0.2:23045;ob war nicht erfolgreich. Ursache: (408)"
(Also ein Timeout..., oder?)

An den physikalisch angeschlossenen Nebenstellen der Fritz!Box werden eingehende Anrufe signalisiert. Nur mein SIP-Klient im entfernten Netzwerk bekommt nichts mit. Routen zu 192.168.1.0/24 und sogar 10.8.0.0/24 sind auf der FritzBox eingetragen und zeigen auf 192.168.1.254.
Ebenso kennt der OpenVPN-Klient-Router entsprechend komplementäre Routen.
Pings und http Verbindungen sind von diversen Rechner aus beiden LANs untereinander problemlos möglich. Am Netzwerk/Routing sollte es wohl nicht liegen, vermute ich.

Buche ich mich mit dem SIP-Klienten und weitestgehend identischen Einstellungen auf einen Asterisk Server in Netzwerk 1 ein, bekommt es der Asterisk ohne Probleme hin eingehende Anrufe an das Handy zu signalisieren.
Code:
> sip show peers
Name/username      Host              Dyn Nat ACL Port     Status
handy/handy        192.168.1.254     D   N       23045    OK (100 ms)

sip show peer handy
...
Addr->IP     : 192.168.1.254 Port 23045
...
Reg. Contact : sip:[email protected]:23045;ob
...

Somit ergeben sich mir folgende Fragen:
Was muss ich tun, damit auf der FritzBox eingehende Anrufe auf dem SIP-Klienten in einem per VPN geroutetem entferntem Netzwerk signalisiert werden?
Warum zur Hölle versucht die FritzBox eine IP-Adresse aus dem VPN-Tunnel ([email protected]:23045;ob) anzurufen??

Ich würde mich über jeglichen Hinweis und jede Idee dazu freuen.

Tschau
genbian

P.S.: "Anmeldung aus dem Internet erlauben" ist deaktiviert.
€dit: Deutsch und SIP sind kompliziert.
 
Zuletzt bearbeitet:
Ist das Handy im LAN 1 (wie die FB) werden natürlich Anrufe signalisiert.
 
Sieh doch mal mit "showvoipdstat" auf der FRITZ!Box nach, was da als Registrierung des Clients bekannt ist. Mit "showshringbuf sip" kannst Du dann die letzten SIP-Pakete ebenfalls sehen ... ich tippe mal auf eine NAT-Detection des SIP-Servers der FRITZ!Box und dein Transport-Netz 10.8.0.0/24 ist dann wohl doch nicht so transparent, wie es sein sollte.

Ich habe zwar keinen Asterisk in einem OpenVPN-Szenario im Einsatz, aber ich persönlich würde als Host für die Registrierung im Asterisk eher die 192.168.2.2 erwarten und nicht das lokale OpenVPN-Gateway. Das geht den Asterisk ja eigentlich nichts an (solange da kein NAT stattfindet, was im OpenVPN ja nicht notwendig wäre), wenn da irgendwo noch ein Transportnetz dazwischen ist. Zumindest kannst Du mit dem SIP-Ringbuffer der FRITZ!Box auch sehen, von wo die Pakete netzwerktechnisch kommen und was da ursprünglich drin steht als SIP-Adressangaben.
 
Okay. Ich habe das Problem gelöst.
Da ich es schon getippt hatte, bevor ich auf die Lösung gekommen bin trotzdem der Post in voller Länge, ganz unten gibt es eine Zusammenfassung (tl;dr).

Code:
# showvoipdstat
SIP Clients:
0: registered last status 1 -- reachability 62 %
        contact 0: iface=homenet: host=sip:[email protected]:23045, my=192.168.1.1, expire Fri Dec  5 00:17:27 2014
Okay, wie erwartet: falsche IP als Host.

Wenn sich das Handy einbucht das erste Paket:
Code:
# showshringbuf sip

2014-12-05 00:22:13.600 - IN: my=192.168.1.1%11:5060 peer=192.168.1.254 port=23045 UDP, sipiface=none:
REGISTER sip:192.168.1.1:5060 2.0
Via: SIP/2.0/UDP 10.8.0.2:23045;rport;branch=zufall
Route: <sip:192.168.1.1;lr>
From: <sip:[email protected]:5060>;tag=zufall
To: <sip:[email protected]:5060>
Call-ID: zufall
CSeq: 52702 REGISTER
Contact: <sip:[email protected]:23045;ob>;+sip.ice
Max-Forwards: 70
User-Agent: CSipSimple_Android-15/r2450
Expires: 1800
Allow: PRACK,  INVITE,  ACK,  BYE,  CANCEL,  UPDATE,  INFO,  SUBSCRIBE,  NOTIFY,  REFER,  MESSAGE,  OPTIONS
Content-Length: 0
Als peer, wie auf dem Asterisk, das lokale VPN-Gate.
Als Contact aber das entfernte VPN-Tunnelende, mit dem Vermerk sip.ice, also Versucht die FritzBox dort scheinbar mittels ICE eine NAT-Erkennung zu machen...

Die ersten Pakete die mit "- OUT:" markiert sind gehen an:
Code:
2014-12-05 00:22:13.634 - OUT: my=192.168.1.1%11:5060 peer=192.168.1.254 port=23045 UDP, sipiface=none tcclass=sip_internet, netmark=0:
SIP/2.0 200 OK
Somit zeigt mit das Handy auch eine erfolgreiche Registrierung an.

Danach versanden sie aber im Tunnel.
Code:
2014-12-05 00:22:13.908 - OUT: my=(null) peer=10.8.0.2 port=23045 UDP, sipiface=none tcclass=sip_internet, netmark=0:
NOTIFY sip:[email protected]:23045;ob SIP/2.0


/*Geistesblitz*/


Die Tunnel IPs kennen eigentlich nur der VPN-Gateway und der OpenVPN-Klient-Router.
Der OpenVPN-Klient-Router im entfernten Netzwerk, der das Handy auch mit WLAN versorgt und auch sonst alles kann, der macht doch auch so deep packet inspection und manipuliert da doch auch an Paketen rum und nennt es dann "WAN - NAT Passthrough" in den Geschmacksrichtungen: "SIP Passthrough", "H.323 Passthrough", "IPSec Passthrough" und noch ein paar andere...
Vielleicht macht er das ja dann auch auf der OpenVPN Schnittstelle.

Somit:
"SIP Passthrough" -> Disable
Reboot OpenVPN-Klient-Router
Neueinloggen von allem:
Code:
# showvoipdstat
SIP Clients:
0: registered last status 4 -- reachability 64 %
        contact 0: iface=homenet: host=sip:[email protected]:23045, my=192.168.1.1, expire Fri Dec  5 01:08:11 2014
Erstes Paket auf der Box:
Code:
2014-12-05 01:11:11.606 - IN: my=192.168.1.1%11:5060 peer=192.168.1.254 port=23045 UDP, sipiface=none:
REGISTER sip:192.168.1.1 2.0
Via: SIP/2.0/UDP 192.168.2.2:23045;rport;branch=zufall
Route: <sip:192.168.1.1;lr>
From: <sip:[email protected]>;tag=zufall
To: <sip:[email protected]>
Call-ID: zufall
CSeq: 61709 REGISTER
Contact: <sip:[email protected]:23045;ob>;+sip.ice
Max-Forwards: 70
User-Agent: CSipSimple_Android-15/r2450
Expires: 1800
Allow: PRACK,  INVITE,  ACK,  BYE,  CANCEL,  UPDATE,  INFO,  SUBSCRIBE,  NOTIFY,  REFER,  MESSAGE,  OPTIONS
Content-Length: 0

Spätes Paket auf der FritzBox:
Code:
2014-12-05 01:11:11.887 - OUT: my=(null) peer=192.168.2.2 port=23045 UDP, sipiface=none tcclass=sip_internet, netmark=0:
NOTIFY sip:[email protected]:23045;ob SIP/2.0

Auf dem Asterisk hat sich jedoch scheinbar nichts getan:
Code:
> sip show peers
Name/username              Host            Dyn Nat ACL Port     Status
stefanhandy/stefanhandy    192.168.1.254      D   N      23045    OK (335 ms)

> sip show peer handy
...
  Addr->IP     : 192.168.1.254 Port 23045
...
  Reg. Contact : sip:[email protected]:23045;ob

Der Router, der den VPN-Tunnel aufbaut hat also kräftig in den SIP-Headern herummanipuliert.
Nun werden Anrufe auf der FritzBox auch auf dem Handy signalisiert.
Irgendwas hat aber der Asterisk vorher schon "besser" gemacht. Die FritzBox hat scheinbar den manipulierten Paketen einfach geglaubt...

Danke für die Hilfestellung!

genbian

tl;dr
Der OpenVPN-Klient-Router hat die SIP-Pakete manipuliert.
Dort "SIP Passthrough" ausschalten. Alternative Namen: SIP ALG (Application Layer Gateway)
 
Okay. Ich habe das Problem gelöst.
Glückwunsch ... und danke für die ausführlichere Analyse und Darstellung, der nächste Suchende wird Dir sicherlich auch dankbar sein.

Vielleicht macht er das ja dann auch auf der OpenVPN Schnittstelle.
Das meinte ich mit "nicht so transparent, wie es sein sollte" ... da man das eben nur mit den "Rohdaten" der Box feststellen kann, braucht es immer noch ein eigenes Verständnis solcher Protokolle und da hast Du Dich ja bravourös geschlagen. So macht das "Anschubsen" dann richtig Spaß ... das entschädigt auch für manch andere Pleite.

Also auch von mir nochmal ausdrücklich: "Chapeau!".
 
Kostenlos!

Statistik des Forums

Themen
248,924
Beiträge
2,305,318
Mitglieder
378,652
Neuestes Mitglied
stego88