Hallo Eisenfaust,
ich bin bei O2 und bin vor einiger Zeit auf VDSL umgestellt worden
Benutze Asterisk 11 mit chan_sip auf einer eigenen Box im LAN, was also Network Address Translation ("Masquerading") durch den Router bedeutet. Sowohl Router als auch Asterisk-Box laufen mit OpenWrt.
Habe dieselbe Probleme wie Du, komme aber nur sporadisch dazu, dies zu debuggen.
Zum Glück habe ich eine langmütige Frau.
Bin immer noch am experimentieren.
Momentaner Kenntnisstand bzw. Annahmen:
- Der O2-Telefonie-Zugang erfolgt natürlich über den/die SIP-Server sip.alice-voip.de
- Genutzt für VoIP wird IPv4, nicht IPv6.
- Angesprochen wird bei sip.alice-voip.de der Serverport 5060.
- Um die IP des SIP-Servers herauszufinden, müssen die Nameserver von O2 genutzt werden
- Und zwar die Nameserver, deren IP-Adresse beim Internet-Verbindungsaufaufbau durch das PPP-Protokoll von O2 vorgeschlagen werden.
- Hinweis: PPP ist nicht das DHCP-Protokoll. Es wird aber zusätzlich zu PPP noch DHCPv6 von O2 genutzt, um dem Router die IPv6-Adresse und einen IPv6-Adressbereich für Prefix-Delegation zuzuweisen. Ist aber für O2-VoIP irrelevant.
- Um eingehende Anrufe zu erhalten, muss chan_sip sich natürlich vorher beim SIP-Server sip.alice-voip.de registrieren. Ob die Registrierung einen Ablaufzeitpunkt hat, zu dem dann der Server die Registrierung tatsächlich vergisst, ist mir momentan nicht bekannt.
- chan_sip wiederholt standardmäßig die Registrierung alle 300 Sekunden. Dem O2-Server ist das zu kurz; er meldet dann, dass er min. 1800 Sekunden dazwischen haben möchte.
- Auch um einen ausgehenden Anruf durchzuführen, muss man sich vorher beim O2-SIP-Server sip.alice-voip.de registriert haben. Und der Anruf-Invite muss dann an diesen Registrierungsserver gerichtet werden.
- So und jetzt kommt die besonders nervige Spezialität: die IP-Adresse von sip.alice-voip.de ändert sich von Zeit zu Zeit. Die alte IP-Adresse funktioniert dann zwar üblicherweise noch weiterhin zum Sich-Registrieren für eingehende Anrufe, aber ausgehende Anrufe werden dann mit "forbidden" abgelehnt.
=> Man muss also irgendwie dafür sorgen, dass chan_sip sich bei der geänderten Adresse neu registriert.
Nur, wie erzwingt man eine Re-Registrierung bei der geänderten IP? Ein Reloaden von chan_sip re-registriert zwar, macht das aber bei der alten IP-Adresse.
Bin jetzt am Testen mit dem DNS-Manager in Asterisk.
Wenn das nicht hilft, dann könnte ich den Asterisk insgesamt stoppen und neu starten (unschön!).
Ansonsten, vielleicht macht es chan_pjsip besser?
Nachtrag: Ein Problem scheint das Connection-Tracking des Routers zu sein. Das Kernelmodul nf_conntrack_sip passt ja die IP-Adressen in den SIP-Protokollen an. Wenn sich die eigene öffentliche IP-Adresse ändert (z.B. wegen ppp-Zwangstrennung), dann scheint nf_conntrack_sip das nicht mitzubekommen.
Schaut so aus, als ließe sich das lösen, indem man in einem ip-up-Script von PPP explizit die Connection-Tracking-Tables des Kernels flusht:
"echo f > /proc/net/nf_conntrack".