Discussion:
Upgrade naar Asterisk 1.8 nekt verbinding met sip.xs4all.nl
(te oud om op te antwoorden)
Jaap Winius
2013-03-18 03:41:46 UTC
Permalink
Sinds 2007 heb ik verschillende versies van Asterisk gedraaid, telkens
met een publiek IPv4 adres op de server, waarmee ik gebruik maakt van
mijn SIP account bij XS4ALL. Maar nu, na een upgrade naar Asterisk
1.6.2.9 naar 1.8.13 (van Debian squeeze naar wheezy), lukt dit met
dezelfde SIP configuratie ineens niet meer. Ik zie op de Asterisk console
de volgende soort foutmeldingen:

NOTICE[7494]: chan_sip.c:13171 sip_reg_timeout: -- Registration for
'<telnummer>@sip.xs4all.nl' timed out, trying again (Attempt #78)

Mijn sip.conf begint met het volgende:

[general]
context=incoming-j
canreinvite=no
dtmfmode=inband
qualify=yes
srvlookup=no
disallow=all
allow=alaw
allow=ulaw
allow=g722
insecure=port,invite
register => <telnummer>:<wachtwoord>@sip.xs4all.nl/<telnummer>

Ik kan me voorstellen dat er met de upgrade een of andere default waarde
is veranderd, maar een verbinding met een andere SIP provider doet het
nog wel.

Weet iemand hier misschien een opgelossing voor?

Met dank,

Jaap
Herre de Jonge
2013-03-19 06:35:38 UTC
Permalink
Ik heb nog steeds squeeze, maar wellicht maken de volgende parameters
nog verschil:

defaultexpiry=3500 ; A shorter expiry might cause rejection
externip=xxx.xxx.xxx.xxx
localnet=192.168.61.0/24

Laat even weten wat het was. Dat scheelt mij ook weer het nodige
gezoek tegen de tijd dat ik over ga.
Jaap Winius
2013-03-19 12:35:53 UTC
Permalink
Post by Herre de Jonge
defaultexpiry=3500 ; A shorter expiry might cause rejection
externip=xxx.xxx.xxx.xxx
localnet=192.168.61.0/24
De default voor defaultexpiry is al 120 seconden -- 3500 is bijna een
uur! Mijn ervaring is dat als het met een goeie verbinding niet binnen
een paar seconden registreert, dan zal meer tijd niet helpen en is er wat
anders aan de hand.

Verder maak jij waarschijnlijk gebruik van de variabelen externip en
localnet omdat jou Asterisk server achter een NAT staat. Voor mij is dat
niet nodig gezien ik op de server een publiek IPv4 adres heb (dankzij het
gebruik van een non-standaard ADSL modem met ppp-passthrough).

Maar, in ieder geval bedankt voor je reactie.

Groeten,

Jaap
Herre de Jonge
2013-03-20 08:02:45 UTC
Permalink
Post by Jaap Winius
Post by Herre de Jonge
defaultexpiry=3500 ; A shorter expiry might cause rejection
externip=xxx.xxx.xxx.xxx
localnet=192.168.61.0/24
De default voor defaultexpiry is al 120 seconden -- 3500 is bijna een
uur! Mijn ervaring is dat als het met een goeie verbinding niet binnen
een paar seconden registreert, dan zal meer tijd niet helpen en is er wat
anders aan de hand.
Het gaat niet om het snel reageren. Het gaat er om na hoeveel tijd je
opnieuw gaat registreren. Mijn ervaring met de xs4all voip is dat als
je (met asterisk) binnen een paar minuten opnieuw registreert, dat het
dan niet geaccepteerd wordt. En dus helemaal als het asterisk niet lukt
en het opnieuw blijft proberen. Het enige wat dan lijkt te helpen is
asterisk uitzetten en ten minste een kwartier wachten voor hem weer
op te starten.

De waarde van 3500 komt trouwens niet zomaar uit de lucht vallen:
http://www.xs4all.nl/klant/helpdesk/bellen/algemeen/
Post by Jaap Winius
Verder maak jij waarschijnlijk gebruik van de variabelen externip en
localnet omdat jou Asterisk server achter een NAT staat. Voor mij is dat
niet nodig gezien ik op de server een publiek IPv4 adres heb (dankzij het
gebruik van een non-standaard ADSL modem met ppp-passthrough).
Dan heb jij dezelfde setup als ik. Deze settings zijn er waarschijnlijk
een keer ingeslopen onder het mom van "Baat het niet? Het schaadt ook
niet."

Dit waren settings waarvan me opviel dat jij ze niet had en die wellicht
invloed zouden kunnen hebben. En tsja... Voorlopig doet mijn Asterisk
het wel en de jouwe niet. Ik zou zeggen proberen kan geen kwaad.
Jaap Winius
2013-03-20 12:36:43 UTC
Permalink
Post by Herre de Jonge
Het gaat niet om het snel reageren. Het gaat er om na hoeveel tijd je
opnieuw gaat registreren. ...
Ah! Heel goed. Niet dat het in mijn geval momenteel van belang is,
aangezien het registreren helemaal niet lukt, maar ik heb nu alvast de
defaultexpiry tijd een stuk langer gemaakt. XS4ALL wil dat natuurlijk om
het verkeer te drukken.
Post by Herre de Jonge
Dan heb jij dezelfde setup als ik. Deze settings zijn er waarschijnlijk
een keer ingeslopen onder het mom van "Baat het niet? Het schaadt ook
niet." ...
Ik heb liever een beter idee van wat er in mijn configuratie staat en
waarom. Misschien werkt het nu wel voor je, maar als dat straks niet zo
is wordt het uitzoeken van problemen bemoeilijkt wanneer je configuratie
veel onnodige zooi bevat.
Herre de Jonge
2013-03-20 16:24:33 UTC
Permalink
Post by Jaap Winius
Post by Herre de Jonge
Het gaat niet om het snel reageren. Het gaat er om na hoeveel tijd je
opnieuw gaat registreren. ...
Ah! Heel goed. Niet dat het in mijn geval momenteel van belang is,
aangezien het registreren helemaal niet lukt, maar ik heb nu alvast de
defaultexpiry tijd een stuk langer gemaakt. XS4ALL wil dat natuurlijk om
het verkeer te drukken.
Zoals gezegd: Als je te vaak na elkaar probeert te registreren, geeft
de server direct terug dat het is mislukt. Asterisk blijft volharden
en probeert het dan gewoon opnieuw. Dus beland je dan in een
deadlock situatie.

Om die te doorbreken helpt het bij mij om Asterisk te stoppen en
minimaal een kwartier te wachten alvorens weer te starten. Als
alternatief wil het ook nog wel eens helpen om Asterisk te stoppen
en vervolgens met een voip-client (bijv. x-lite) de connectie op
te zetten. Dat lukt meestal wel. En daarna met Asterisk meestal
ook.

Dit zijn een beetje de conclusies die ik in de loop der tijd heb
getrokken uit mijn waarnemingen. Maar goed...

Succes,
Herre

P.S. Probleem dat ik met een 2e voip aanbieder had, is dat die weer
een korte expiry verlangde en dat het me niet lukte om verschillende
registraties met een verschillende exipry waarde op te starten.
Ik hoop dat het in Asterisk 1.8 wel gaat werken.
Jaap Winius
2013-03-23 03:43:04 UTC
Permalink
Post by Jaap Winius
Ik kan me voorstellen dat er met de upgrade een of andere default waarde
is veranderd, maar een verbinding met een andere SIP provider doet het
nog wel.
Weet iemand hier misschien een opgelossing voor?
Na dagen van onderzoek en samenwerking hebben we niet alleen de oorzaak
van dit probleem gevonden (zie thread "sip.xs4all.nl heeft een bug"),
maar ook een oplossing.

Het probleem is dat Asterisk 1.8 IPv6-aware is en dat het per default
Call-ID's maakt waar aan het eind een '@' en een IPv6 adres van de lokale
server is toegevoegd. Vroeger was dit altijd een IPv4 adres, maar met een
IPv6 adres gaan sommige SIP servers, zoals die van XS4ALL, het aanpassen
waardoor de Call-ID niet uniek blijft en de registratie niet lukt.

Een oplossing zou zijn om het '@' teken en alles dat er achter staat weg
te laten. Dan is ons ook gelukt door de Asterisk source code aan te
passen, maar is natuurlijk niet ideaal omdat je het telkens overnieuw mag
doen met elke nieuwe versie van Asterisk.

De beste oplossing zou zijn om via een bestaande variablele de Call-ID
aan te passen om zo het IPv6 adres te verwijderen, en nu hebben we
gevonden dat dat kan met 'fromdomain=<domeinnaam>'. Hiermee vervangt
Asterisk in de Call-ID dat IPv6 adres achter de '@' met de gekozen
domeinnaam. Eenmaal geplaatst in de [general] context van sip.conf lukt
het registreren wel.

Met dank aan Rob van der Putten voor deze laatste en meest praktische
oplossing!

Groeten,

Jaap
Rob van der Putten
2013-03-24 18:27:05 UTC
Permalink
Hoi


Nog een kleine aanvulling;
Het kan zijn dat als je 1.8 installeert en IPv6 enabled (bindaddr=::)
deze daarmee IPv6 only word. Als dit gebeurt check dan
/proc/sys/net/ipv6/bindv6only Deze moet 0 zijn.
Je kan dit instellen in /etc/sysctl.d/bindv6only.conf
En met directmedia=no kan je Asterisk laten fungeren als IPv6 <-> IPv4
RTP proxy.


Vr.Gr,
Rob
--
Koningsboek gaat retour afzender
Abolish all monarchies
Loading...