• FTTHiliad
  • Noiosi pomeriggi autunnali - ILIAD Voip con Asterisk

Ciao a tutti,
non uso minimamente il telefono di casa, infatti sono da 6 mesi totalmente senza e non mi manca, ma siccome mi annoiavo 🙂 ho pensato di installare un asterisk sul mio openwrt per cercare di capire se e come tirare su anche il voip di iliad al posto della IB. Non ho neanche idea di cosa eventualmente potrei farci (una segreteria telefonica?), ma tutto mi aspettavo fuorchè bloccarmi all'autenticazione.
Ho preso i dati VoIP dalla IB (tirata fuori dalla naftalina solo per questo!), ovvero

SIP id		<numero>
dominio		voip.iliad.it
proxy 		proxy-voip-2.iliad.it
user		<numero>
pw			<password>
codec		G.729a, G.711 A-Law (PCMA 8000)

Su openwrt, son partito dal minimo, installando asterisk e asterisk-pjsip
Ho poi creato la configurazione pjsip partendo da un po' di esempi presi qui e là su internet..

[global]
user_agent=PBX
endpoint_identifier_order=ip,username

[acl]
type = acl
; deny = 0.0.0.0/0.0.0.0
permit = 127.0.0.1
permit = 192.168.0.0/24

; Basic IPv6 UDP transport
;
[transport-udp-ipv6]
type=transport
protocol=udp
bind=[::]:5060

[peer-<numero>]
type = endpoint
aors = peer-<numero>
outbound_proxy = sip:proxy-voip-2.iliad.it
disallow = all
allow = alaw
allow = ulaw
allow = gsm
context = context-incoming-<numero>
outbound_auth = peer-<numero>_auth
direct_media = no
from_user = <numero>
from_domain = voip.iliad.it

[peer-<numero>]
type = aor
contact = sip:voip.iliad.it
outbound_proxy = sip:proxy-voip-2.iliad.it
qualify_frequency = 0

[peer-<numero>_auth]
type = auth
auth_type = userpass
username = <numero>
password = <password>
realm = voip.iliad.it

[peer-<numero>_reg]
type = registration
endpoint = peer-<numero>
transport = transport-udp-ipv6
outbound_auth = peer-<numero>_auth
server_uri = sip:voip.iliad.it
client_uri = sip:<numero>@voip.iliad.it
outbound_proxy = sip:proxy-voip-2.iliad.it
contact_user = <numero>
expiration = 3600
line = yes
forbidden_retry_interval = 1
fatal_retry_interval = 1

[peer-<numero>_id]
type = identify
endpoint = peer-<numero>
match = proxy-voip-2.iliad.it
srv_lookups = yes

Risultato? non si registra 🙁 e non capisco l'origine del problema

[Nov 10 11:54:49] WARNING[15331]: res_pjsip_outbound_registration.c:1391 handle_registration_response: '404' fatal response received from 'sip:voip.iliad.it' on registration attempt to 'sip:<numero>@voip.iliad.it', retrying in '1' seconds
<--- Transmitting SIP request (642 bytes) to UDP:[<ipv6>]:5060 --->
REGISTER sip:proxy-voip-2.iliad.it SIP/2.0
Via: SIP/2.0/UDP [<ipv6>]:5060;rport;branch=z9hG4bKPjb1d43669-8cbf-4298-a947-7328b07f1cfc
From: <sip:<numero>@voip.iliad.it>;tag=8f673339-2e58-4652-a3c7-85e124be929a
To: <sip:<numero>@voip.iliad.it>
Call-ID: 869cecb8-29ea-4c00-808e-8cd51479ff83
CSeq: 47000 REGISTER
Contact: <sip:<numero>@[<ipv6>]:5060;line=mafjyuq>
Expires: 3600
Allow: OPTIONS, REGISTER, SUBSCRIBE, NOTIFY, PUBLISH, INVITE, ACK, BYE, CANCEL, UPDATE, PRACK, INFO, MESSAGE, REFER
Route: <sip:voip.iliad.it>
Max-Forwards: 70
User-Agent: PBX
Content-Length:  0


<--- Received SIP response (389 bytes) from UDP:[<ipv6>]:5060 --->
SIP/2.0 100 Trying
Call-ID: 869cecb8-29ea-4c00-808e-8cd51479ff83
CSeq: 47000 REGISTER
From: <sip:<numero>@voip.iliad.it>;tag=8f673339-2e58-4652-a3c7-85e124be929a
To: <sip:<numero>@voip.iliad.it>
Via: SIP/2.0/UDP [<ipv6>]:5060;received=<ipv6>;rport=5060;branch=z9hG4bKPjb1d43669-8cbf-4298-a947-7328b07f1cfc
Content-Length: 0


<--- Received SIP response (463 bytes) from UDP:[<ipv6>]:5060 --->
SIP/2.0 404 Domain not bound
Call-ID: 869cecb8-29ea-4c00-808e-8cd51479ff83
CSeq: 47000 REGISTER
From: <sip:<numero>@voip.iliad.it>;tag=8f673339-2e58-4652-a3c7-85e124be929a
To: <sip:<numero>@voip.iliad.it>;tag=00-08044-02fae98c-058241f27
Via: SIP/2.0/UDP [<ipv6>]:5060;received=<ipv6>;rport=5060;branch=z9hG4bKPjb1d43669-8cbf-4298-a947-7328b07f1cfc
Server: Cirpack/v4.88 (gw_sip)
Content-Length: 0

idee? qualcuno ha una configurazione funzionante? (e magari mi spiega anche cosa ci potrei fare 😆

Edit:
Ok, più semplice del previsto, lascio qualche info se qualcuno vuole giocare.
Intanto, pacchetti openwrt utilizzati sono un paio in più

asterisk
asterisk-pjsip
asterisk-res-rtp-asterisk
asterisk-app-verbose

Config (dentro c'è anche un client voip sennò non potevo provare nulla 🙂 ho usato un microsip solo per leggerezza)
Note:

  • il doppio trasporto (uno ipv4 e uno ipv4) serve perchè la mia rete interna è tutta ipv4 quindi non riuscivo a collegarmi col microsip
  • qualify_frequency sull'endpoint iliad blocca le chiamate in uscita se non si mette a 0
[udp_transport_ipv6]
type = transport
protocol = udp
bind = [::]

[udp_transport_ipv4]
type = transport
protocol = udp
bind = 192.168.1.1

[microsip]
type = endpoint
context = internal
disallow = all
allow = alaw
aors = microsip
auth = microsip_auth

[microsip]
type = aor
max_contacts = 1
qualify_frequency = 25

[microsip_auth]
type = auth
auth_type = userpass
username = microsip
password = 12345678

[iliad]
type = endpoint
aors = iliad
outbound_proxy = sip:proxy-voip-2.iliad.it\;lr
disallow = all
allow = alaw
context = external
outbound_auth = iliad_auth
direct_media = no

[iliad]
type = aor
contact = sip:voip.iliad.it
outbound_proxy = sip:proxy-voip-2.iliad.it\;lr
qualify_frequency = 0

[iliad_auth]
type = auth
auth_type = userpass
username = <numero di telefono>
password = <password>
realm = voip.iliad.it

[iliad_reg]
type = registration
endpoint = iliad
transport = udp_transport_ipv6
outbound_auth = iliad_auth
server_uri = sip:voip.iliad.it
client_uri = sip:<numero di telefono>@voip.iliad.it
outbound_proxy = sip:proxy-voip-2.iliad.it\;lr
contact_user = <numero di telefono>
expiration = 86400
line = yes

[iliad_id]
type = identify
endpoint = iliad
match = proxy-voip-2.iliad.it
srv_lookups = yes

E ovviamente le extensions

[external]
exten => <numero di telefono>,1,Goto(internal,001,1)

[internal]
exten => 001,1,Verbose(2, Chiamata in entrata da "${CALLERID(num)}")
same => n,Dial(PJSIP/microsip)
same => n,Hangup()

exten => _X.,1,Set(SAFE_EXTEN=${FILTER(0-9,${EXTEN})})
same => n,Set(ORIGINAL_EXTEN=${EXTEN})
same => n,GotoIf($["${EXTEN}" != "${SAFE_EXTEN}"]?error,1)
same => n,Verbose(2, Chiamata in uscita verso "${SAFE_EXTEN}")
same => n,Dial(PJSIP/${SAFE_EXTEN}@iliad)
same => n,Hangup()

exten => _+39X.,1,Set(SAFE_EXTEN=+39${FILTER(0-9,${EXTEN:3})})
same => n,Set(ORIGINAL_EXTEN=${EXTEN})
same => n,GotoIf($["${EXTEN}" != "${SAFE_EXTEN}"]?error,1)
same => n,Verbose(2, Chiamata in uscita verso "${SAFE_EXTEN}")
same => n,Dial(PJSIP/${SAFE_EXTEN}@iliad)
same => n,Hangup()

exten => error,1,Verbose(2, Chiamata in uscita rifiutata, numero "${ORIGINAL_EXTEN}" non valido)
same => n,Hangup()

incredibilmente funzionano sia chiamate in uscita che in ingresso (almeno, squilla, tra me e me non mi sono messo a parlare 😆 ) l'unica cosa che mi sembra strana è che le chiamate in uscita (mi sono chiamato sul cell) se il destinatario "mette giù" non viene chiusa la chiamata. ci guarderò..

e ora che me ne faccio? 😆

    pattagghiu Intanto, pacchetti openwrt utilizzati sono un paio in più
    asterisk
    asterisk-pjsip
    asterisk-res-rtp-asterisk
    asterisk-app-verbose

    ne serve almeno un altro per instaurare proprio la connessione
    asterisk-bridge-simple

    il problema però è quel qualify_frequency = 0
    a zero, le chiamate in uscita funzionano, ma quelle in entrata dopo qualche minuto smettono di funzionare
    diverso da zero, l'esatto contrario quindi le chiamate si ricevono ma non possono essere effettuate
    sono confuso. sto provando con un doppio AoR, per adesso sembra funzionare..

    quindi config modificata così

    [iliad]
    type = endpoint
    aors = iliad_in,iliad_out
    outbound_proxy = sip:proxy-voip-2.iliad.it\;lr
    disallow = all
    allow = alaw
    context = external
    outbound_auth = iliad_auth
    direct_media = no
    
    [iliad_out]
    type = aor
    contact = sip:voip.iliad.it
    outbound_proxy = sip:proxy-voip-2.iliad.it\;lr
    qualify_frequency = 0
    
    [iliad_in]
    type = aor
    contact = sip:voip.iliad.it
    qualify_frequency = 25

    Informativa privacy - Informativa cookie - Termini e condizioni - Regolamento - Disclaimer - 🏳️‍🌈
    P.I. IT16712091004 - info@fibraclick.it

    ♻️ Il server di questo sito è alimentato al 100% con energia rinnovabile