• [cancellato]

Marco25

TIM se non ricordo male ha una gestione un po' complessa dei proxy VoIP - ce ne sono diversi, codificati per distertto/area gegrafica e vanno fatte interrogazioni DNS SRV per avere l'elenco di quelli per la connessione specifica - e non so se dipende anche dai DNS che dovrebbero essere usati dalla connessione.

  • Marco25 ha risposto a questo messaggio

    [cancellato] vanno fatte interrogazioni DNS SRV per avere l'elenco di quelli per la connessione specifica

    Ecco, il dialer a quanto pare fa una query A ma non trovo l'opzione per le query SRV.

    Mmmh, ho ricavato l'indirizzo dell'outbound proxy manualmente tramite nslookup ma provando a chiamare ottengo "Number unreachable" e la chiamata termina immediatamente. Il log di Android non fornisce altre informazioni...

    EDIT: ho riavviato e riesco a chiamare, ma non si riesce a rispondere alle chiamate in ingresso, perché finiscono immediatamente tra le chiamate perse, come se non si riuscisse a mantenere la connessione aperta.

    Niente, non ricevo. Ho catturato il traffico con tcpdump e ho notato questo possibile errore quando il client comunica con l'outbound proxy:

    Request-Line: OPTIONS sip:telecomitalia.it SIP/2.0
    Status-Line: SIP/2.0 500 Cx Unable To Comply NUMERO_ESADECIMALE

    Qualche suggerimento?

      Marco25 prova con asterisk. Io lo uso e mi funziona

      • Marco25 ha risposto a questo messaggio

        eutampieri È ciò a cui stavo pensando. Tuttavia è un software che non conosco, quindi ho dubbi su alcune questioni:

        1. È semplice da installare e mantenere per casi d'uso che prevedono un solo telefono VoIP, senza funzionalità particolari e requisiti di disponibilità?
        2. L'installazione del centralino pone rischi per la sicurezza? Ad esempio attacchi dall'esterno? Può essere abusato per chiamate illegittime? Vanno aperte porte sul router?
        3. Vedo che siamo alla versione 19 ma nei repo di Debian/Raspbian siamo alla versione 16. Dovrei compilare l'ultima?
        4. Comincio da qui?

        Operativamente poi come si comporta? Una volta configurato asterisk da CLI, collego il telefono VoIP al server asterisk locale piuttosto che al server TIM e chiamo?

          Marco25 È semplice da installare e mantenere per casi d'uso che prevedono un solo telefono VoIP, senza funzionalità particolari e requisiti di disponibilità?

          Più si che no

          Marco25 L'installazione del centralino pone rischi per la sicurezza? Ad esempio attacchi dall'esterno? Può essere abusato per chiamate illegittime? Vanno aperte porte sul router?

          No

          Marco25 Vedo che siamo alla versione 19 ma nei repo di Debian/Raspbian siamo alla versione 16. Dovrei compilare l'ultima?

          No

          Marco25 Comincio da qui?

          Io ho cominciato da dei video di una società tedesca, ma in pratica devi modificare sip.conf aggiungendo quello che ti ho linkato (era la configurazione che usavo io) più un peer

          [username]
          	type=friend
          	disallow=all
          	allow=alaw,ulaw
          	secret=password
          	host=dynamic
          	context=phones

          Devi anche modificare extensions.conf

          [provider]
          exten => <il numero alla fine della register String>,1,Goto(phones,0,1)
          [phones]
          exten =>  0,1,NoOp
          same => n,Progress()
          same => n,PrivacyManager(1)
          same => n,Dial(SIP/username)
          
          exten => _X!,1,NoOp()
          same => n,Progress
          same => n,Dial(SIP/telecom/${EXTEN},60,KT)
          exten => _+39X!,1,NoOp()
          same => n,Progress
          same => n,Dial(SIP/telecom/${EXTEN},60,KT)
          exten => 0039X!,1,NoOp()
          same => n,Progress
          same => n,Dial(SIP/telecom/${EXTEN},60,KT)

          Occhio che non mi vanno le chiamate in uscita verso gli altri numeri fissi TIM

          • Marco25 ha risposto a questo messaggio

            eutampieri Occhio che non mi vanno le chiamate in uscita verso gli altri numeri fissi TIM

            Beh non è un problema da niente.

              Marco25 No infatti, ma potrebbe essere un problema di codec che non ho abilitato (infatti la TIM richiede alaw e g729 e io avevo ulaw e alaw). Qua è il codec che ho compilato, vediamo se va...

              13 giorni dopo

              Aggiornamento, dopo parecchie decine di ore di studio sulla wiki di Asterisk, YouTube, FibraClick, e vari forum, sono arrivato a creare queste configurazioni, che mi permettono di chiamare e ricevere. Mi aspettavo problemi col NAT eppure sia SIP che RTP funzionano, non ho effettuato alcun port forwarding, non uso STUN, né SIP ALG sul router.

              Ecco pjsip.conf (bob è il telefono VoIP)

              [udp_transport]
              type = transport
              protocol = udp
              bind = 0.0.0.0
              
              [bob]
              type = endpoint
              context = internal
              disallow = all
              allow = ulaw,alaw
              aors = bob
              auth = bob_auth
              
              [bob]
              type = aor
              max_contacts = 1
              qualify_frequency = 25
              
              [bob_auth]
              type = auth
              auth_type = userpass
              username = bob
              password = 12345678
              
              [telecom]
              type = endpoint
              aors = telecom
              outbound_proxy = sip:xxxxx.co.imsw.telecomitalia.it\;lr
              disallow = all
              allow = ulaw,alaw
              context = external
              outbound_auth = telecom_auth
              direct_media = no
              
              [telecom]
              type = aor
              contact = sip:telecomitalia.it
              outbound_proxy = sip:xxxxx.co.imsw.telecomitalia.it\;lr
              qualify_frequency = 25
              
              [telecom_auth]
              type = auth
              auth_type = userpass
              username = +39NUM_TEL
              password = SIP_KEY
              realm = telecomitalia.it
              
              [telecom_reg]
              type = registration
              endpoint = telecom
              transport = udp_transport
              outbound_auth = telecom_auth
              server_uri = sip:telecomitalia.it
              client_uri = sip:+39NUM_TEL@telecomitalia.it
              outbound_proxy = sip:xxxxx.co.imsw.telecomitalia.it\;lr
              contact_user = +39NUM_TEL
              expiration = 86400
              line = yes
              
              [telecom_id]
              type = identify
              endpoint = telecom
              match = xxxxx.co.imsw.telecomitalia.it
              srv_lookups = yes

              E il dialplan extensions.conf. Permette solo chiamate verso l'Italia.

              [external]
              exten => +39NUM_TEL,1,Goto(internal,001,1)
              
              [internal]
              exten => 001,1,Verbose(2, Chiamata in entrata da "${CALLERID(num)}")
              same => n,Dial(PJSIP/bob)
              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}@telecom)
              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}@telecom)
              same => n,Hangup()
              
              exten => error,1,Verbose(2, Chiamata in uscita rifiutata, numero "${ORIGINAL_EXTEN}" non valido)
              same => n,Hangup()

              @eutampieri Confermo che le chiamate in uscita verso TIM funzionano. Inoltre, alla luce di quanto scritto qui credo che il tuo dialplan sia bypassabile per chiamare all'estero.

                Marco25 si sì, con il mio dialplan prendo anche i numeri tipo 00xx quindi si chiama all’estero. In quello vero in realtà tutte le chiamate che iniziano con +qualcosa o 00qualcosa con qualcosa diverso da 39 vengono fatte uscire su un altro trunk per evitare salassi 😉

                Mi sa che ci risentiremo per le chiamate in uscita su rete TIM.
                @[cancellato] può essere che il problema derivi dal fatto che OP abbia usato PJSIP e io SIP “normale”?

                  Marco25 pjsip.conf

                  A proposito, migrerò il mio template a PJSIP visto che pare che sia meglio (questo mio setup è così da asterisk 13 è solo da poco ha questo problema)

                  Grazie per il link a safe asterisk, lo leggerò fu sicuro!

                  • [cancellato]

                  eutampieri può essere che il problema derivi dal fatto che OP abbia usato PJSIP e io SIP “normale”?

                  Può essere - magari c'è qualcosa che viene parsato o riconosciuto in modo diverso - ma non sono un esperto di Asterisk.

                  Marco25 ho fatto le stesse tue configurazioni ma va ancora peggio (?!): le chiamate arrivano in ingresso tre volte e in uscita proprio non vanno

                  Confermo in parte. Questa mattina non ho avuto problemi con le chiamate in entrata, in queste ore però sono ripetute. Ho fatto un po' di prove, se disattivo il dialplan viene loggato più volte l'avviso circa l'assenza dell'estensione (come previsto).

                  NOTICE[1283]: res_pjsip_session.c:4027 new_invite: telecom: Call (UDP:OUTBOUND_PROXY:5060) to extension '+39NUM_TEL' rejected because extension not found in context 'external'.

                  Quindi pare che TIM mandi più INVITE per chiamata. Ciononostante se si risponde la chiamata ha successo, la voce passa in entrambe le direzioni, mentre per riagganciare bisogna rifiutare tutte le chiamate in ingresso.
                  Inoltre ho notato che non è sempre tre volte. Può essere due, uno, ma anche quattro, ciò mi fa pensare che il centralino di TIM si aspetti una qualche risposta da Asterisk che non arriva sempre in tempo e quindi manda di nuovo l'INVITE.
                  Nessun problema invece con le chiamate in uscita, esattamente cosa intendi per "non vanno"? La console di asterisk cosa ti dice? (asterisk -rvvv e chiami).

                    Marco25 everyone is busy/congested. Da wireshark vedo un errore SIP

                    
                      == Setting global variable 'SIPDOMAIN' to 'hostname.lan'
                        -- Executing [cell@phones:1] NoOp("PJSIP/interno-00000003", "") in new stack
                        -- Executing [cell@phones:2] Progress("PJSIP/interno-00000003", "") in new stack
                        -- Executing [cell@phones:3] Dial("PJSIP/interno-00000003", "PJSIP/cell@telecom,60,KT") in new stack
                           > 0x7f2830ffb0 -- Strict RTP learning after remote address set to: 192.168.1.121:4008
                        -- Called PJSIP/3246378810@telecom
                           > 0x7f2830ffb0 -- Strict RTP switching to RTP target address 192.168.1.121:4008 as source
                      == Everyone is busy/congested at this time (1:0/0/1)
                        -- Executing [cell@phones:4] Dial("PJSIP/eugenio-00000003", "PJSIP/cell@telecom2,60,KTm") in new stack
                        -- Called PJSIP/cell@telecom2
                        -- Started music on hold, class 'default', on channel 'PJSIP/interno-00000003'
                      == Everyone is busy/congested at this time (1:0/0/1)
                        -- Stopped music on hold on PJSIP/interno-00000003
                        -- Auto fallthrough, channel 'PJSIP/interno-00000003' status is 'CHANUNAVAIL'

                    Marco25 ciò mi fa pensare che il centralino di TIM si aspetti una qualche risposta da Asterisk che non arriva sempre in tempo e quindi manda di nuovo l'INVITE.

                    Provo con 100rel=yes in endpoint a vedere se cambia qualcosa

                    Quella in giallo da problemi, quella in verde va

                    • Marco25 ha risposto a questo messaggio

                      Dopo Called PJSIP/NUMERO_CHIAMATO@telecom Asterisk mi dice

                          -- PJSIP/telecom-00000001 is making progress passing it to PJSIP/bob-00000000
                          -- PJSIP/telecom-00000001 is making progress passing it to PJSIP/bob-00000000
                          -- PJSIP/telecom-00000001 answered PJSIP/bob-00000000
                          -- Channel PJSIP/telecom-00000001 joined 'simple_bridge' basic-bridge <...>
                          -- Channel PJSIP/bob-00000000 joined 'simple_bridge' basic-bridge <...>
                          -- Channel PJSIP/bob-00000000 left 'simple_bridge' basic-bridge <...>
                        == Spawn extension (internal, NUMERO_CHIAMATO, 5) exited non-zero on 'PJSIP/bob-00000000'
                          -- Channel PJSIP/telecom-00000001 left 'simple_bridge' basic-bridge <...>

                      Non c'è Strict RTP learning after remote address... che comunque dovrebbe essere abilitato di default secondo quanto scritto nel file rtp.conf. Altra differenza è che nel mio dialplan non ho aggiunto le opzioni KTm all'applicazione Dial.

                      Inoltre ho disattivato il caricamento automatico dei moduli (autoload = no in modules.conf) e aggiunto di volta in volta i moduli strettamente necessari per le funzionalità. Oltre al file dei moduli, gli unici due file che ho riscritto sono quelli postati sopra.

                        eutampieri Quella in giallo da problemi, quella in verde va

                        Queste sono chiamate in entrata, no? Falliscono anche loro?

                          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